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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Auswertung für smartmeter

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Auswertung für smartmeter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
62 Beiträge 16 Kommentatoren 10.7k Aufrufe 4 Watching
  • Ä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.
  • a200A Offline
    a200A Offline
    a200
    schrieb am zuletzt editiert von
    #22

    [FACE WITH TEARS OF JOY][FACE WITH TEARS OF JOY][FACE WITH TEARS OF JOY]

    IoBroker auf QNAP TS-451, Raspi und NUC

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      simpixo
      schrieb am zuletzt editiert von
      #23

      Hallo

      habe gerade nachgesehen die ersten Werte sind schon da, aber dennoch sieht es komisch aus

      432_screenshot_2017-02-13_21.33.32.png

      Total-h wandelt der selbständig um in kWh meine ich, habe das nämlich als Wh angeben, aber jetzt ist das Koma an der falschen Stelle

      Was sagst du dazu? :shock:

      1 Antwort Letzte Antwort
      0
      • a200A Offline
        a200A Offline
        a200
        schrieb am zuletzt editiert von
        #24

        @simpixo:

        Hallo

        habe gerade nachgesehen die ersten Werte sind schon da, aber dennoch sieht es komisch aus

        Screenshot 2017-02-13 21.33.32.png

        Total-h wandelt der selbständig um in kWh meine ich, habe das nämlich als Wh angeben, aber jetzt ist das Koma an der falschen Stelle

        Was sagst du dazu? :shock: `
        hast du die kWh Berechnung rein gemacht?

        außerdem ist Total-w, Total-m leer. Dort sollte aber der Gesamtverbrauchswert stehen.

        Akt. Gesamtverbrauch - Total-w = currentWeek

        oben hattest du einen Wert in Total-m und Total-w

        IoBroker auf QNAP TS-451, Raspi und NUC

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          simpixo
          schrieb am zuletzt editiert von
          #25

          @a200:

          hast du die kWh Berechnung rein gemacht? `

          …. das einzige was ich gemacht habe, war den Zählerstand von kWh in Wh umzurechnen, da der DP ja Wh verlangt.

          War das falsch?

          1 Antwort Letzte Antwort
          0
          • a200A Offline
            a200A Offline
            a200
            schrieb am zuletzt editiert von
            #26

            in der nächsten version werden die werte in kWh umgerechnet. hier allerdings ist es problematisch, weil wir Wh von kHw anziehen. Damit sind die Werte so komisch.

            speichere in aller Total-x Feldern den aktuellen Gesamtwert - 10 Wh. und wir warten bis 22:00h

            IoBroker auf QNAP TS-451, Raspi und NUC

            1 Antwort Letzte Antwort
            0
            • C Offline
              C Offline
              chemieka
              schrieb am zuletzt editiert von
              #27

              Hatte Gestern das Problem, dass ich ioBroker nicht mehr erreicht habe. Irgendwann gings dann wieder.

              Aber dann fängt er wieder von vorn an.

              Das ist natürlich dann schon etwas ärgerlich da ja dann wieder die Diagramme lange Zeit durcheinander sind.

              Beim Tageswert ist das ja nicht so schlimm aber beim Wochen oder Monatsverbrauch muss man lange warten bis die Zahlen wieder stimmen.

              Vielleicht fällt uns da noch eine andere Lösung ein.

              1867_unbenannt.jpg

              1 Antwort Letzte Antwort
              0
              • a200A Offline
                a200A Offline
                a200
                schrieb am zuletzt editiert von
                #28

                @chemieka:

                Das ist natürlich dann schon etwas ärgerlich da ja dann wieder die Diagramme lange Zeit durcheinander sind.

                Beim Tageswert ist das ja nicht so schlimm aber beim Wochen oder Monatsverbrauch muss man lange warten bis die Zahlen wieder stimmen. `
                Verstehe ich nicht ganz. Ein berechneter Verbrauch bleibt als Datenpunkt bestehen bis er überschrieben wird. Überschrieben wird er am Ende seines Zyklus. Die Daten sind persistent. Du kannst ioBroker beenden, Raspi rebooten usw. Danach wirst du die Werte wieder drin haben. Also verstehe ich deine Bedenken nicht, du musst sie etwas spezifizieren.

                Und nun zu den Zyklen.

                Monat - Wird immer am 1. eines Monats um 0:00 geschrieben. Bis dahin steht dort immer der Verbrauchswert des Vormonats. Die einzige Gefahr für deine Auswertung besteht, wenn ausgerechnet am 1. des Monats um 0:00 dein iobroker nicht läuft.

                Woche - Wird immer am Montag um 0:00 geschrieben. Bis dahin steht dort immer der Verbrauchswert der Vorwoche. Die einzige Gefahr für deine Auswertung besteht, wenn ausgerechnet am Montag um 0:00 dein iobroker nicht läuft.

                Tag - Wird Täglich um 0:00 geschrieben. Bis dahin steht dort immer der Verbrauchswert des Vortages. Die einzige Gefahr für deine Auswertung besteht, wenn ausgerechnet um 0:00 dein iobroker nicht läuft. Würde dann 24h später korrigiert.

                Heute, Stunde, Akt. Woche, akt. Monat - Werden Stündlich geschrieben.

                Also wo meinst du wäre ein Problem?

                Davon abgesehen stimmen deine Zahlen nicht und wieso hast du keine Wrte in Total-m und Total-w?

                IoBroker auf QNAP TS-451, Raspi und NUC

                1 Antwort Letzte Antwort
                0
                • C Offline
                  C Offline
                  chemieka
                  schrieb am zuletzt editiert von
                  #29

                  Ich sehe womöglich war die Datenpunkte weg sein könnten.

                  Er hat die Zähler jetzt gewechselt nach Neustart.

                  Obwohl ich die Zuordnung der USB gemacht hatte wie im anderen Tread beschrieben.

                  Hat wohl nicht geklappt.

                  Ich nehme mal so kann es dazu kommen oder?

                  1 Antwort Letzte Antwort
                  0
                  • E Offline
                    E Offline
                    ein-bayer
                    schrieb am zuletzt editiert von
                    #30

                    Hallo

                    ich muss mal wieder einige dumme fragen stellen. Die scripte laufen und eines hab ich auch umgebaut für die Minutenerfassung.

                    Wenn der Zähler ein Zweirichtungszähler ist, dann ist es doch meiner Meinung nach nicht möglich mit den aktuellen scripten den aktuellen Stromverbrauch zu erfassen, sobald die Solaranlage Strom liefert, oder ?

                    Sollte ich mit meiner annahme recht haben, erfassen wir ja nur den Verbrauch den wir im moment vom Versorger beziehen, und nicht den tatsächlichen?

                    1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      jhg
                      schrieb am zuletzt editiert von
                      #31

                      Hallo zusammen,

                      ich benötige mal kurz eure Hilfe.

                      Wie bekomme ich es denn hin, die ausgegebenen Zahlen aus dem Skript zu runden?

                      Danke für eure Hilfe.

                      1 Antwort Letzte Antwort
                      0
                      • HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von
                        #32

                        @ein-bayer:

                        Hallo

                        Wenn der Zähler ein Zweirichtungszähler ist, dann ist es doch meiner Meinung nach nicht möglich mit den aktuellen scripten den aktuellen Stromverbrauch zu erfassen, sobald die Solaranlage Strom liefert, oder ? `

                        Vollkommen richtig.

                        Bei einem Zweirichtungszähler benötigst du noch zusätzlich die Leistung deiner Solaranlage. Die musst du auf den Bezug addieren.

                        Ansonsten hast du z.B. bei 2500W PV-Leistung und 2800W Verbrauch einen Bezug von nur 300W, der nicht deinem Verbrauch entspricht.

                        Gruß

                        Rainer

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

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

                          @jhg:

                          Wie bekomme ich es denn hin, die ausgegebenen Zahlen aus dem Skript zu runden? `

                          function runden(wert,stellen) {
                              return Math.round(wert * Math.pow(10,stellen)) / Math.pow(10,stellen);
                          }
                          
                          

                          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
                          • J Offline
                            J Offline
                            jhg
                            schrieb am zuletzt editiert von
                            #34

                            Muss ich das in jedes Skript am Anfang einfügen und dann werden alle Ergebnisse gerundet?

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

                              @jhg:

                              Muss ich das in jedes Skript am Anfang einfügen und dann werden alle Ergebnisse gerundet? `
                              Nein. Du kannst diese Funktion in einem globalen Skript (Gruppe "global") anlegen und musst sie an den Stellen, an denen Du runden willst (vor setState oder innerhalb setState) aufrufen. Beispiel:

                              setState(VorId, runden(nAktuell, 1), true);  // Rundung auf 1 Nachkommastelle
                              

                              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
                              • J Offline
                                J Offline
                                jhg
                                schrieb am zuletzt editiert von
                                #36

                                Ich muss hier nochmal nachfrage, weil das nicht klappt.

                                Das runden script habe ich als globales script angelegt, das läuft auch.

                                Aber an welcher Stelle muss ich nun die Runden Funktion einfügen?

                                Ich habe das erfolglos versucht.

                                Hier der wohl relevante Teil des Scripts.

                                function haupt (VorId, ZielId, SetN) {

                                var nVorwert = getState(VorId).val;

                                var nAktuell = getState(idESTotal).val;

                                var nDiff = ((nAktuell) - (nVorwert));

                                setState(ZielId, nDiff, true);

                                if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);

                                if(SetN) {

                                var shandler = on ({id: ZielId, change: 'any'}, function(data) {

                                setState(VorId, (nAktuell*10)/10, true);

                                unsubscribe(shandler);

                                });

                                }

                                Danke für die Hilfe.

                                Scripting ist (noch) nicht meins.

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

                                  @jhg:

                                  Aber an welcher Stelle muss ich nun die Runden Funktion einfügen? `

                                  function haupt (VorId, ZielId, SetN) {
                                    var nVorwert = getState(VorId).val;
                                    var nAktuell = getState(idESTotal).val;
                                    var nDiff = nAktuell - nVorwert;
                                    setState(ZielId, runden(nDiff, 1), true);
                                    if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
                                    if(SetN) {
                                      var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                        setState(VorId, runden(nAktuell, 1), true);
                                        unsubscribe(shandler);
                                      });
                                    }
                                  }
                                  
                                  

                                  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
                                  • J Offline
                                    J Offline
                                    jhg
                                    schrieb am zuletzt editiert von
                                    #38

                                    Danke sehr.

                                    Hat alles geklappt und die anderen Fehler habe ich auch gleich korrigiert.

                                    1 Antwort Letzte Antwort
                                    0
                                    • H Offline
                                      H Offline
                                      Huebeni
                                      schrieb am zuletzt editiert von
                                      #39

                                      Hi a200,

                                      danke für das super Skript. Damit Werte ich mein Smartmeter, als auch meine Photovoltaik-Anlage, aus.

                                      Ich wollte ein paar Erweiterungen basteln, allerdings verstehe ich das Skript noch nicht ganz. Vielleicht kannst Du mir die entscheidende Erklärung geben.

                                      Es geht um:

                                      function haupt (VorId, ZielId, SetN) {
                                          var nVorwert = getState(VorId).val;
                                          var nAktuell = getState(idHAGTotal).val;
                                          var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
                                          setState(ZielId, nDiff, true);
                                          if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
                                          if(SetN) {
                                              var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                                  setState(VorId, (nAktuell*10)/10, true);
                                                  unsubscribe(shandler); 
                                              });
                                          }
                                      }
                                      

                                      Warum wird die VorId in dem handler bei Änderung der ZielId gesetzt?

                                      Könnte ich das nicht direkt nach dem setState(ZielId, nDiff, true) machen?

                                      Irgendwie hakt es da bei mir. Wann wird denn der Handler genau ausgeführt? Beim nächsten Aufruf von haupt() über den Scheduler? Dann ist aber der Wert von nVorwert vor dem setState(ZielId, nDiff, true) noch auf dem alten Wert???

                                      Danke schon mal,

                                      Huebeni

                                      1 Antwort Letzte Antwort
                                      0
                                      • a200A Offline
                                        a200A Offline
                                        a200
                                        schrieb am zuletzt editiert von
                                        #40

                                        @Huebeni:

                                        Hi a200,

                                        danke für das super Skript. Damit Werte ich mein Smartmeter, als auch meine Photovoltaik-Anlage, aus.

                                        Ich wollte ein paar Erweiterungen basteln, allerdings verstehe ich das Skript noch nicht ganz. Vielleicht kannst Du mir die entscheidende Erklärung geben.

                                        Es geht um:

                                        function haupt (VorId, ZielId, SetN) {
                                            var nVorwert = getState(VorId).val;
                                            var nAktuell = getState(idHAGTotal).val;
                                            var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
                                            setState(ZielId, nDiff, true);
                                            if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
                                            if(SetN) {
                                                var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                                    setState(VorId, (nAktuell*10)/10, true);
                                                    unsubscribe(shandler); 
                                                });
                                            }
                                        }
                                        

                                        Warum wird die VorId in dem handler bei Änderung der ZielId gesetzt?

                                        Könnte ich das nicht direkt nach dem setState(ZielId, nDiff, true) machen?

                                        Irgendwie hakt es da bei mir. Wann wird denn der Handler genau ausgeführt? Beim nächsten Aufruf von haupt() über den Scheduler? Dann ist aber der Wert von nVorwert vor dem setState(ZielId, nDiff, true) noch auf dem alten Wert???

                                        Danke schon mal,

                                        Huebeni `
                                        Hi,
                                        @Huebeni:

                                        Warum wird die VorId in dem handler bei Änderung der ZielId gesetzt? `
                                        Weil ich den Wert nicht immer schreiben will. Der Wert VorId wird nur dann geschrieben, wenn:

                                        • in dem Aufruf der Funktion haupt als dritter Parameter "true" steht (if(SetN))

                                        und

                                        • wenn der Wert, der geschrieben werden soll, sich von dem bereits vorhandenen Wert unterscheidet (id: ZielId, change: 'any').
                                          @Huebeni:

                                        Könnte ich das nicht direkt nach dem setState(ZielId, nDiff, true) machen? `
                                        Wird ja auch prinzipiell gemacht. Mit den o.a. Einschränkungen.
                                        @Huebeni:

                                        Wann wird denn der Handler genau ausgeführt? Beim nächsten Aufruf von haupt() über den Scheduler? `
                                        Schau dir mal die Aufrufe von haupt an:

                                        schedule(cronH, function () {
                                            haupt(idHAGTotH, idHAGZielH, true);
                                            haupt(idHAGTotD, idHAGZielT, false);
                                        });
                                        

                                        Erstmal wird der Stunden-Zwischenwert berechnet und soll auch geschrieben werden. Beim zweiten Aufruf nutzen wir diesen Wert zwar, wir speichern ihn aber nicht neu. Deshalb "false" als 3. Parameter.

                                        Ich hoffe diese Erklärung hilft dir weiter. Falls sie nicht gut genug war und du noch offene Fragen hast, dann melde dich einfach!

                                        a200.

                                        IoBroker auf QNAP TS-451, Raspi und NUC

                                        1 Antwort Letzte Antwort
                                        0
                                        • C Offline
                                          C Offline
                                          chrissh
                                          schrieb am zuletzt editiert von
                                          #41

                                          Hallo zusammen.

                                          Ich versuche gerade mit dem Skript

                                          ! //````
                                          NEU - Zählerstand vom Anfang der akt. Stunde wird ermittelt v 0.11
                                          //
                                          ! var AktWoche = true; // Berechnung des Wertes: Aktuelle Woche ein-/ausschalten
                                          var AktMonat = true; // Berechnung des Wertes: Aktueller Monat ein-/ausschalten
                                          var PathToDP = "javascript.0.scriptEnabled.Netzbezug"/scriptEnabled.Netzbezug/; // Pfad zum Datenpunkt
                                          ! var cronH = "0 * * * *";
                                          var cronD = "59 23 * * *";
                                          var cronW = "0 0 * * 1";
                                          var cronM = "0 0 1 * *";
                                          ! var idHAGTotH = PathToDP + "tmp.Total-h";
                                          var idHAGTotD = PathToDP + "tmp.Total-d";
                                          var idHAGTotW = PathToDP + "tmp.Total-w";
                                          var idHAGTotM = PathToDP + "tmp.Total-m";
                                          var idHAGTotal = PathToDP + "sma-em.0.1900205359.pregardcounter"/pregardcounter/; /Netzbezug insgesammt/
                                          var idHAGZielH = PathToDP + "Hour";
                                          var idHAGZielD = PathToDP + "Day";
                                          var idHAGZielW = PathToDP + "Week";
                                          var idHAGZielM = PathToDP + "Month";
                                          var idHAGZielT = PathToDP + "Today";
                                          var idHAGZielCW = PathToDP + "CurrentWeek";
                                          var idHAGZielCM = PathToDP + "CurrentMonth";
                                          ! var debug = false;
                                          ! var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM, idHAGZielT, idHAGZielCW, idHAGZielCM];
                                          var DPUnit = "Wh";
                                          ! DPArray.forEach(function(wert, index, array) {
                                          var DPType = wert.split(".");
                                          var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]);

                                          if(index > 3) DPUnit = "Wh";
                                          createState(wert, 0, {
                                              name: DPDescr,
                                              desc: DPDescr,
                                              type: 'number',
                                              unit: DPUnit,
                                              role: 'value'
                                          });
                                          

                                          });

                                          ! function haupt (VorId, ZielId, SetN) {
                                          var nVorwert = getState(VorId).val;
                                          var nAktuell = getState(idHAGTotal).val;
                                          var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
                                          setState(ZielId, nDiff, true);
                                          if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
                                          if(SetN) {
                                          var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                          setState(VorId, (nAktuell*10)/10, true);
                                          unsubscribe(shandler);
                                          });
                                          }
                                          }
                                          ! // regelmässige Wiederholungen
                                          // -----------------------------------------------------------------------------
                                          ! schedule(cronH, function () {
                                          haupt(idHAGTotH, idHAGZielH, true);
                                          haupt(idHAGTotD, idHAGZielT, false);
                                          if(AktWoche) haupt(idHAGTotW, idHAGZielCW, false);
                                          if(AktMonat) haupt(idHAGTotM, idHAGZielCM, false);
                                          });
                                          ! schedule(cronD, function () {
                                          haupt(idHAGTotD, idHAGZielD, true);
                                          });
                                          ! schedule(cronW, function () {
                                          haupt(idHAGTotW, idHAGZielW, true);
                                          });
                                          ! schedule(cronM, function () {
                                          haupt(idHAGTotM, idHAGZielM, true);
                                          });

                                          
                                          meinen Netzbezug darzustellen.
                                          
                                          Ich lesen den Wert pregardcounter (Strombezugszähler) vom SMA Energymeter aus.
                                          
                                          Aber irgendwie mache ich was falsch. :|
                                          [5713_bildschirmfoto_2018-02-07_um_19.06.07.png](/assets/uploads/files/5713_bildschirmfoto_2018-02-07_um_19.06.07.png)
                                          [5713_bildschirmfoto_2018-02-07_um_19.04.49.png](/assets/uploads/files/5713_bildschirmfoto_2018-02-07_um_19.04.49.png)
                                          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

                                          704

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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