Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Zwischenschalter Dauer errechnen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    936

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Zwischenschalter Dauer errechnen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 4 Kommentatoren 2.3k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Marcolotti
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe an jeder Elektroheizung einen HM Zwischenschalter und einen Thermostat. Ich würde gern errechnen bzw. aufzeichnen wie lange die Heizungen jeweils eingeschaltet sind. Daraus lässt auch der Verbrauch (kWh) errechnen. Wie kann ich das machen?

    Gruß

    Marco

    CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Wenn es genügt, die Werte beim Ausschalten des Zwischensteckers zu ermittelen, dann sollte es so funktionieren:

      var p = 1.234; // Leistung in kW
      
      on({id: "idZwischenstecker", val: false}, function(dp) {
        var ton = dp.newState.lc - dp.oldState.lc;
        var e = p * ton / 3600;                               // aktueller Verbrauch in kWh
        setState("idVerbrauch", getState("idVerbrauch") + e); // kumulierter Verbrauch in kWh
      });
      
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Marcolotti
        schrieb am zuletzt editiert von
        #3

        Danke Paul53,

        das scheint bei mir erstmal grob zu funktionieren. Allerdings habe ich noch ein Problem. Ich habe die Variablen unter Objekte/Javascript angelegt. Jedesmal wenn eine Heizung abschaltet setzt er ein [object Object] davor. Beim nächsten Anschalten wird der Wert wieder genullt. Er kann ruhig fortlaufend sein. Wäre sehr schön, wenn das so funktionieren könnte.

        721_verbrauch.jpg

        Vielen lieben Dank trotzdem.

        Gruß Marco

        CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          Sorry, mein Fehler: Es fehlt bei getState .val. Richtig:

            setState("idVerbrauch", getState("idVerbrauch").val + e); // kumulierter Verbrauch in kWh
          

          Das Einschalten sollte allerdings nicht den Datenpunkt verändern. Falls doch, kann dies eine zusätzliche Abfrage verhindern:

          var p = 1.234; // Leistung in kW
          
          on({id: "idZwischenstecker", val: false}, function(dp) {
            if(!dp.newState.val) {
              var ton = dp.newState.lc - dp.oldState.lc;
              var e = p * ton / 3600;                                   // aktueller Verbrauch in kWh
              setState("idVerbrauch", getState("idVerbrauch").val + e); // kumulierter Verbrauch in kWh
            }
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marcolotti
            schrieb am zuletzt editiert von
            #5

            Vielen Dank Paul. Das funktioniert hervorragend. ;)

            CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              Marcolotti
              schrieb am zuletzt editiert von
              #6

              Guten Morgen,

              ich bekomme es mit dem Runden nicht hin. "Math.round" bringt keine Ausgabe "Math.rint" auch nicht. "to.Fixed(2)" erzeugt bei mir eigenartige Zahlen (10.10.21 kWh) <- kenn ich nur, wenn man Strings aneinander heftet. :?:

              Kann da einer helfen?

              Gruß Marco

              CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @Marcolotti:

                "to.Fixed(2)" erzeugt bei mir eigenartige Zahlen (10.10.21 kWh) `
                .toFixed(2) müsste funktionieren.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Marcolotti
                  schrieb am zuletzt editiert von
                  #8

                  Ich habe mich nur im Beitrag verschrieben nicht im Script. @toFixed(2).

                  Er macht da wahrlich falsche Zahlen. Wenn der Wert 10 schon da ist und einer neuer Wert 5 kommt, dann addiert er nicht sondern hängt den Wert an.

                  z.B. 10.00.5.00

                  var p = 1.500; // Leistung in kW
                  
                  on({id: "hm-rpc.0.LEQ0475825.1.STATE", val: false}, function(dp) {
                    // setState("Verbrauch_Adrian", 0);
                    var ton = dp.newState.lc - dp.oldState.lc;
                    var en = p * ton / 3600;      // aktueller Verbrauch in kWh
                    var eu = en * 0.25;
                    var em = getState("Verbrauch_Adrian").val + eu;
                    var e = em.toFixed(2);
                        setState("Verbrauch_Adrian", getState("Verbrauch_Adrian").val + e); // kumulierter Verbrauch in kWh
                  });
                  

                  CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    pix
                    schrieb am zuletzt editiert von
                    #9

                    Hallo,

                    schreib doch einach eine Logausgabe hinter jede Zeile und sieh dir die Werte an.

                    var p = 1.500; // Leistung in kW
                    
                    on({id: "hm-rpc.0.LEQ0475825.1.STATE", val: false}, function(dp) {
                      // setState("Verbrauch_Adrian", 0);
                      var ton = dp.newState.lc - dp.oldState.lc;
                      log(ton + ' ' + typeof ton);
                      var en = p * ton / 3600;      // aktueller Verbrauch in kWh
                      log(en + ' ' + typeof en);
                      var eu = en * 0.25;
                      log(eu + ' ' + typeof eu);
                      var em = getState("Verbrauch_Adrian").val + eu;
                      log(em + ' ' + typeof em);
                      var e = em.toFixed(2);
                      log(e + ' ' + typeof e);
                      setState("Verbrauch_Adrian", getState("Verbrauch_Adrian").val + e); // kumulierter Verbrauch in kWh
                      log(getState('Verbrauch_Adrian').val);
                    });
                    

                    Gruß

                    Pix

                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      Versuche es mal so:

                      var p = 1.500; // Leistung in kW
                      
                      on({id: "hm-rpc.0.LEQ0475825.1.STATE", val: false}, function(dp) {
                        // setState("Verbrauch_Adrian", 0);
                        var ton = dp.newState.lc - dp.oldState.lc;
                        var en = p * ton / 3600;      // aktueller Verbrauch in kWh
                        var eu = en * 0.25;
                        var em = parseFloat(getState("Verbrauch_Adrian").val) + eu;   // kumulierter Verbrauch in Euro
                        setState("Verbrauch_Adrian", em.toFixed(2));
                      });
                      

                      Anmerkung: .toFixed(n) erzeugt einen String, denn eine feste Zahl an Nachkommastellen läßt sich nur für einen String vorgeben. parseFloat(string) macht daraus wieder eine Zahl (number).

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        Marcolotti
                        schrieb am zuletzt editiert von
                        #11

                        Hallo,

                        seit einiger Zeit funktioniert meine Berechnung nicht mehr. Vielleicht hat sich im JavaScript was geändert oder in der Homematic Firmware. Vielleicht kann mir einer einen Ratschlag geben.

                        var p = 1.500; // Leistung in kW
                        
                        on({id: "hm-rpc.0.LEQ0475825.1.STATE", val: false}, function(dp) {
                          // setState("Verbrauch_Adrian", 0);
                          var ton = dp.newState.lc - dp.oldState.lc;
                          var en = p * ton / 3600;      // aktueller Verbrauch in kWh
                          var eu = en * 0.25;
                          var em = parseFloat(getState("Verbrauch_Adrian").val) + eu;   // kumulierter Verbrauch in Euro
                          setState("Verbrauch_Adrian", em.toFixed(2));
                        });
                        

                        LOG:

                        javascript.0	2016-11-02 09:38:00.870	warn	Wrong type of javascript.0.Verbrauch_gesamt: "string". Please fix, while deprecated and will not work in next versions.
                        javascript.0	2016-11-02 09:37:50.800	warn	Wrong type of javascript.0.Verbrauch_Stube: "string". Please fix, while deprecated and will not work in next versions.
                        

                        Die Scripte ergeben Verbräuche jenseits von gut und böse. Mal 3000€ pro Heizung pro Tag usw.

                        Gruß Marco

                        CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                        1 Antwort Letzte Antwort
                        0
                        • ThisoftT Offline
                          ThisoftT Offline
                          Thisoft
                          schrieb am zuletzt editiert von
                          #12

                          Hallo,

                          also irgendwie passt das Log was du gepostet hast nicht zu dem (Stückchen) Skript was du gepostet hast…

                          Davon abgesehen - ich denke dass du hier ein Problem mit vermischten Datentypen hast. Welchen Datentyp hat denn die Variable "Verbrauch_Adrian"? Ich denke mal "String(bzw. Zeichenfolge)". Kann es sein, dass bei:

                          (parseFloat(getState("Verbrauch_Adrian").val) + eu).toFixed(2)
                          

                          irgendwo zwischendurch das Komma bzw. der Punkt "abhanden kommt" und deshalb zum Schluss zwei Nullen zuviel am Wert hängen. LAss Dir doch bitte mal die einzelnen Zwischenwerte (ton, en, eu, em) ins Log schreiben. DAnn sollte man vielleicht schon mal was sehen können wo ein falscher Wert auftaucht.

                          Eigentlich wäre es ja IMO der "sauberere" Weg die Variable "Verbrauch_Adrian" gleich vom Typ "Zahl" zu definieren. Sollen ja schließlich Zahlenwerte drin gespeichert werden - oder?

                          22 HM-Geräte; PivCCU2 auf RasPi

                          ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                          1 Antwort Letzte Antwort
                          0
                          • P Offline
                            P Offline
                            pix
                            schrieb am zuletzt editiert von
                            #13

                            Hallo,

                            @Thisoft:

                            Eigentlich wäre es ja IMO der "sauberere" Weg die Variable "Verbrauch_Adrian" gleich vom Typ "Zahl" zu definieren. Sollen ja schließlich Zahlenwerte drin gespeichert werden - oder? ` Das denke ich auch. Zur Anzeige in VIS kann immer noch in val number Widget verwendet werden, das sich auf zwei Dezimalstellen einstellen lässt.

                            Können wir mal ganzen Code sehen? Auch den Teil, wo die States angelegt werden?

                            Gruß

                            Pix

                            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                            1 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #14

                              Die Datenpunkte "javascript.0.Verbrauch_xy" müssen vom Typ "string" sein, denn toFixed(2) wandelt in einen String.

                              Deshalb wird der Wert des Datenpunktes mittels parseFloat() zur Berechnung des kumulativen Wertes in eine Zahl gewandelt.

                              Will man Datenpunkte vom Typ "number" verwenden, muss man die Rundung auf 2 Nachkommastellen anders vornehmen:

                                var em = getState("Verbrauch_Adrian").val + eu;   // kumulierter Verbrauch in Euro
                                setState("Verbrauch_Adrian", 0.01 * Math.round(100 * em));
                              
                              

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • ThisoftT Offline
                                ThisoftT Offline
                                Thisoft
                                schrieb am zuletzt editiert von
                                #15

                                Ja, natürlich muss man dann anders Runden.

                                Trotzdem ist es auf jeden Fall die bessere Lösung die Datenpunkte als "number" zu definieren und somit nicht jedesmal von "String"->"number"->"String" zu konvertieren!

                                [Edit] hier war ich mit den Posts durcheinander geraten…

                                22 HM-Geräte; PivCCU2 auf RasPi

                                ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                                1 Antwort Letzte Antwort
                                0
                                • paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Marcolotti:

                                  Die Scripte ergeben Verbräuche jenseits von gut und böse. Mal 3000€ pro Heizung pro Tag usw. `
                                  Die Zeitstempel sind nicht mehr in Sekunden, sondern (ab js-controller Version 0.9.0) in Millisekunden:

                                  var p = 1.500; // Leistung in kW
                                  
                                  on({id: "hm-rpc.0.LEQ0475825.1.STATE", val: false}, function(dp) {
                                    var ton = dp.newState.lc - dp.oldState.lc;
                                    var en = p * ton / 3600000;      // aktueller Verbrauch in kWh
                                    var eu = en * 0.25;
                                    var em = getState("Verbrauch_Adrian").val + eu;   // kumulierter Verbrauch in Euro
                                    setState("Verbrauch_Adrian", 0.01 * Math.round(100 * em));
                                  });
                                  

                                  Mit Datenpunkt "Verbrauch_Adrian" vom Typ "number".

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    Marcolotti
                                    schrieb am zuletzt editiert von
                                    #17

                                    Vielen Dank. Es scheint wieder richtig zu funktionieren.

                                    Viele Grüße

                                    Marco

                                    CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                                    1 Antwort Letzte Antwort
                                    0
                                    • ThisoftT Offline
                                      ThisoftT Offline
                                      Thisoft
                                      schrieb am zuletzt editiert von
                                      #18

                                      Das war der entscheidende Hinweis von @paul53 dass der Zeitstempel jetzt in Millisekunden ist. Hatte ich nicht mehr dran gedacht, ist ja nun wirklich auch schon seeeeehr, sehr lange her von Version 0.9.0 auf 3.1.0 ;)

                                      22 HM-Geräte; PivCCU2 auf RasPi

                                      ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      515

                                      Online

                                      32.6k

                                      Benutzer

                                      82.2k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe