Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Betriebsstundenzähler funktioniert nicht

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Betriebsstundenzähler funktioniert nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      G.Hawk @paul53 last edited by

      @paul53
      Ich frage mich wo der die Daten her nimmt um diese Betriebszeit zu berechnen.
      Ich habe einen eigenen Datenpunkt angelegt der ja auch schon beschrieben wurde aber auf einmal wird er nicht mehr beschrieben.

      Mit dem Gerät meine ich den Schaltaktor.
      Irgendwo muss doch gespeichert werden wann der das letzte Mal an war.
      Sonst könnte das Script ja nichts berechnen.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @G.Hawk last edited by paul53

        @Martin-0 sagte:

        Ich frage mich wo der die Daten her nimmt um diese Betriebszeit zu berechnen.

        "letzte Änderung" (state.lc) ist eine Eigenschaft des Zustands eines jeden Datenpunktes.

        @Martin-0 sagte in Betriebsstundenzähler funktioniert nicht:

        Mit dem Gerät meine ich den Schaltaktor. Irgendwo muss doch gespeichert werden wann der das letzte Mal an war.

        Wechsle im Tab "Objekte" mal in die Statusansicht, dann siehst Du den Zeitpunkt des letzten Schaltens des Aktors.

        G 1 Reply Last reply Reply Quote 0
        • G
          G.Hawk @paul53 last edited by

          @paul53
          Screenshot_20200831-223335_Chrome.jpg

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @G.Hawk last edited by

            @Martin-0
            Objekte_Status.JPG

            G 1 Reply Last reply Reply Quote 0
            • G
              G.Hawk @paul53 last edited by

              @paul53
              Wie wechselt man denn zu der Anzeige?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @G.Hawk last edited by

                @Martin-0 sagte:

                Wie wechselt man denn zu der Anzeige?

                Oben, fünftes Symbol von links.

                G 1 Reply Last reply Reply Quote 0
                • G
                  G.Hawk @paul53 last edited by

                  @paul53
                  Da sind überall Daten drin
                  Sonst lösche ich das Skript und schreib es noch mal

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @G.Hawk last edited by paul53

                    @Martin-0 sagte:

                    Sonst lösche ich das Skript und schreib es noch mal

                    Poste vorher mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      G.Hawk @paul53 last edited by

                      @paul53
                      Was ist die letzte Zeile?

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @G.Hawk last edited by paul53

                        @Martin-0 sagte:

                        Was ist die letzte Zeile?

                        Wenn du in die Javascript-Ansicht wechselst, siehst Du unten eine ewig lange Zeile mit XML-Code. Die Zeile lass bitte weg.

                        G 2 Replies Last reply Reply Quote 0
                        • G
                          G.Hawk @paul53 last edited by

                          @paul53 ```
                          code_text

                          
                          
                          on({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            timeout4 = setTimeout(function () {
                              Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                              setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd);
                              timeout = setTimeout(function () {
                                setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10);
                              }, 10000);
                            }, 5000);
                          });
                          
                          on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                            setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true);
                          });
                          
                          on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            timeout6 = setTimeout(function () {
                              Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                              setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord);
                              timeout3 = setTimeout(function () {
                                setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10);
                              }, 10000);
                            }, 5000);
                          });
                          1 Reply Last reply Reply Quote 0
                          • G
                            G.Hawk @paul53 last edited by

                            @paul53

                            var timeout2, timeout4, Einschaltdauer_West, timeout6, Einschaltdauer_S_C3_BCd, Einschaltdauer_Nord, timeout, timeout3;
                            
                            
                            on({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              timeout4 = setTimeout(function () {
                                Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                                setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd);
                                timeout = setTimeout(function () {
                                  setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10);
                                }, 10000);
                              }, 5000);
                            });
                            
                            on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                              setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true);
                            });
                            
                            on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              timeout6 = setTimeout(function () {
                                Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                                setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord);
                                timeout3 = setTimeout(function () {
                                  setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10);
                                }, 10000);
                              }, 5000);
                            });
                            
                            
                            G 1 Reply Last reply Reply Quote 0
                            • G
                              G.Hawk @G.Hawk last edited by

                              Das war nix

                              G 1 Reply Last reply Reply Quote 0
                              • G
                                G.Hawk @G.Hawk last edited by G.Hawk

                                var Einschaltdauer_S_C3_BCd, Einschaltdauer_West, Einschaltdauer_Nord;
                                
                                
                                on({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                                  setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd);
                                  setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10);
                                });
                                
                                on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                                  setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true);
                                  setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_West").val*10)/10, true);
                                });
                                
                                on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000;
                                  setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord);
                                  setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10);
                                

                                So

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @G.Hawk last edited by paul53

                                  @Martin-0

                                  1. Bei "Bewässerung West" wird in den falschen Datenpunkt geschrieben.
                                  2. Man kann nicht erst den nicht gerundeten Wert in einen Datenpunkt schreiben, diesen anschließend wieder auslesen und anschließend den gerundeten Wert zurück schreiben, da das Schreiben asynchron erfolgt, d.h. noch nicht fertig ist, wenn der Wert wieder eingelesen wird.
                                    Richtig: Den Wert der Variablen gerundet in den Datenpunkt schreiben:

                                  Blockly_temp.JPG

                                  Meinen Vorschlag hast Du offenbar ignoriert.

                                  1 Reply Last reply Reply Quote 0
                                  • G
                                    G.Hawk @paul53 last edited by

                                    @paul53
                                    Es läuft einwandfrei.
                                    Danke

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    539
                                    Online

                                    32.0k
                                    Users

                                    80.4k
                                    Topics

                                    1.3m
                                    Posts

                                    blockly
                                    4
                                    30
                                    1643
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo