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. Blockly
  5. Stromzählung stündlich

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    137

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Stromzählung stündlich

Geplant Angeheftet Gesperrt Verschoben Blockly
22 Beiträge 7 Kommentatoren 2.3k Aufrufe 6 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.
  • L Offline
    L Offline
    loni78
    schrieb am zuletzt editiert von loni78
    #1

    Hallo zusammen,

    ich werde ab Januar meinen Strom bei Awattar beziehen. Die rechnen den Strom nach stündlich unterschiedlichen Preisen ab. Ich habe mir jetzt ein Blockly geschrieben, in dem ich stündlich den Verbrauch abfrage und in EUR umrechne. Das hat soweit funktioniert. D.h. ich habe in diesem Fall 24 Datenpunkte --> pro Stunde einer. Das habe ich so gemacht, da ich das ganze in Grafana visualisieren möchte.

    Jetzt kommt mein Problem. Ich möchte die 24 Datenpunkte summieren und in Datenpunkte schreiben, d.h. in einen Datenpunkt pro pro Tag im Monat.

    Die Stundenwerte der 24 Datenpunkte bekomme ich addiert. Wie setzte ich jetzt aber einen Trigger z.B. nach jeder vollen Stunde, der

    • alle Stundenwerte addiert und
    • der in den Datenpunkt für den 27.12 schreibt bzw. in den für den 28. usw.

    D..h ich habe ein Problem mit dem Trigger und mit dem Cron, da ich einen Cron von 1:05 bis 0:05 Uhr des Folgetags benötige. Ich hoffe nicht, dass die Antwort ist, dass ich 31. Skripte schreiben muss (=für jeden Tag ein Skript).

    Ich hoffe jemand kann mir helfen.

    Viele Grüße
    Rafael

    K a200A AsgothianA 3 Antworten Letzte Antwort
    0
    • L loni78

      Hallo zusammen,

      ich werde ab Januar meinen Strom bei Awattar beziehen. Die rechnen den Strom nach stündlich unterschiedlichen Preisen ab. Ich habe mir jetzt ein Blockly geschrieben, in dem ich stündlich den Verbrauch abfrage und in EUR umrechne. Das hat soweit funktioniert. D.h. ich habe in diesem Fall 24 Datenpunkte --> pro Stunde einer. Das habe ich so gemacht, da ich das ganze in Grafana visualisieren möchte.

      Jetzt kommt mein Problem. Ich möchte die 24 Datenpunkte summieren und in Datenpunkte schreiben, d.h. in einen Datenpunkt pro pro Tag im Monat.

      Die Stundenwerte der 24 Datenpunkte bekomme ich addiert. Wie setzte ich jetzt aber einen Trigger z.B. nach jeder vollen Stunde, der

      • alle Stundenwerte addiert und
      • der in den Datenpunkt für den 27.12 schreibt bzw. in den für den 28. usw.

      D..h ich habe ein Problem mit dem Trigger und mit dem Cron, da ich einen Cron von 1:05 bis 0:05 Uhr des Folgetags benötige. Ich hoffe nicht, dass die Antwort ist, dass ich 31. Skripte schreiben muss (=für jeden Tag ein Skript).

      Ich hoffe jemand kann mir helfen.

      Viele Grüße
      Rafael

      K Offline
      K Offline
      klassisch
      Most Active
      schrieb am zuletzt editiert von
      #2

      @loni78 Bin nicht sicher, ob ich die Frage richtig verstanden habe.
      Cron

      5 * * * *
      

      sollte doch stündlich um "fünf nach" triggern.
      In einem parallelen Datenpunkt "SumOfToday" addierst Du Dir die Stundenwerte und schreibst diese Summe um 0:06 in einen neuen Datenpunkt "dailySum" und setzt die Tagessumme "SumOfToday" auf 0.

      HomoranH 1 Antwort Letzte Antwort
      0
      • K klassisch

        @loni78 Bin nicht sicher, ob ich die Frage richtig verstanden habe.
        Cron

        5 * * * *
        

        sollte doch stündlich um "fünf nach" triggern.
        In einem parallelen Datenpunkt "SumOfToday" addierst Du Dir die Stundenwerte und schreibst diese Summe um 0:06 in einen neuen Datenpunkt "dailySum" und setzt die Tagessumme "SumOfToday" auf 0.

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #3

        @klassisch Wobei das dann leider um 0:05 schon der nächste Tag ist.
        Die sumOfToday müsste um 23:59 laufen, und damit auch alle anderen um 59 * * * *

        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 -

        K 1 Antwort Letzte Antwort
        0
        • L loni78

          Hallo zusammen,

          ich werde ab Januar meinen Strom bei Awattar beziehen. Die rechnen den Strom nach stündlich unterschiedlichen Preisen ab. Ich habe mir jetzt ein Blockly geschrieben, in dem ich stündlich den Verbrauch abfrage und in EUR umrechne. Das hat soweit funktioniert. D.h. ich habe in diesem Fall 24 Datenpunkte --> pro Stunde einer. Das habe ich so gemacht, da ich das ganze in Grafana visualisieren möchte.

          Jetzt kommt mein Problem. Ich möchte die 24 Datenpunkte summieren und in Datenpunkte schreiben, d.h. in einen Datenpunkt pro pro Tag im Monat.

          Die Stundenwerte der 24 Datenpunkte bekomme ich addiert. Wie setzte ich jetzt aber einen Trigger z.B. nach jeder vollen Stunde, der

          • alle Stundenwerte addiert und
          • der in den Datenpunkt für den 27.12 schreibt bzw. in den für den 28. usw.

          D..h ich habe ein Problem mit dem Trigger und mit dem Cron, da ich einen Cron von 1:05 bis 0:05 Uhr des Folgetags benötige. Ich hoffe nicht, dass die Antwort ist, dass ich 31. Skripte schreiben muss (=für jeden Tag ein Skript).

          Ich hoffe jemand kann mir helfen.

          Viele Grüße
          Rafael

          a200A Offline
          a200A Offline
          a200
          schrieb am zuletzt editiert von a200
          #4

          @loni78 Schau dir mal das Sourceanalytics Plugin. https://github.com/iobroker-community-adapters/ioBroker.sourceanalytix/blob/master/README.md Das könnte vllt. für dich passend sein.

          001.JPG

          IoBroker auf QNAP TS-451, Raspi und NUC

          1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @klassisch Wobei das dann leider um 0:05 schon der nächste Tag ist.
            Die sumOfToday müsste um 23:59 laufen, und damit auch alle anderen um 59 * * * *

            K Offline
            K Offline
            klassisch
            Most Active
            schrieb am zuletzt editiert von
            #5

            @Homoran sagte in Stromzählung stündlich:

            @klassisch Wobei das dann leider um 0:05 schon der nächste Tag ist.
            Die sumOfToday müsste um 23:59 laufen, und damit auch alle anderen um 59 * * * *

            Darüber habe ich nicht nachgedacht. Habe lediglich die Anforderung "1:05 bis 0:05 " papageienartig umgesetzt.

            1 Antwort Letzte Antwort
            0
            • L loni78

              Hallo zusammen,

              ich werde ab Januar meinen Strom bei Awattar beziehen. Die rechnen den Strom nach stündlich unterschiedlichen Preisen ab. Ich habe mir jetzt ein Blockly geschrieben, in dem ich stündlich den Verbrauch abfrage und in EUR umrechne. Das hat soweit funktioniert. D.h. ich habe in diesem Fall 24 Datenpunkte --> pro Stunde einer. Das habe ich so gemacht, da ich das ganze in Grafana visualisieren möchte.

              Jetzt kommt mein Problem. Ich möchte die 24 Datenpunkte summieren und in Datenpunkte schreiben, d.h. in einen Datenpunkt pro pro Tag im Monat.

              Die Stundenwerte der 24 Datenpunkte bekomme ich addiert. Wie setzte ich jetzt aber einen Trigger z.B. nach jeder vollen Stunde, der

              • alle Stundenwerte addiert und
              • der in den Datenpunkt für den 27.12 schreibt bzw. in den für den 28. usw.

              D..h ich habe ein Problem mit dem Trigger und mit dem Cron, da ich einen Cron von 1:05 bis 0:05 Uhr des Folgetags benötige. Ich hoffe nicht, dass die Antwort ist, dass ich 31. Skripte schreiben muss (=für jeden Tag ein Skript).

              Ich hoffe jemand kann mir helfen.

              Viele Grüße
              Rafael

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von Asgothian
              #6

              @loni78
              Ich würde das Blockly erweitern was Dir die Daten holt. An der Stelle kannst du die Tages-Werte direkt aufaddieren indem du

              • über die Zeit den aktuellen Tag ermittelst
              • Den erhaltenen Wert zum Datenpunkt für diesen Tag hinzu addierst

              Mal dumm gefragt - warum hast Du 24 Datenpunkte pro Tag ? Für eine Visualisierung in Grafana als Kurve sollte es doch ausreichen das Du einen Datenpunkt hast der jeweils den Wert der letzten Stunde beinhaltet ?

              Zeig doch mal dein Blockly :)

              A.

              Nachtrag: Wenn es nur darum geht die Verbräuche pro Tag in Grafana zu visualisieren dann sollte das Folgende reichen:

              • ein DP der jeweils den Verbrauch der letzten Stunde beinhaltet
              • Diesen DP per History in die Datenbank geschrieben so das der per Grafana auswertbar ist.
              • in Grafana 2 Abfragen:
                -- Kurve über die DP, Zeitrange "heute" für die Werte von heute
                -- Kurve über die DP, Zeitrange "dieser Monat", 'aggregation' "same day' für die Verbräuche pro Tag in diesem Monat.

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              HomoranH 1 Antwort Letzte Antwort
              0
              • AsgothianA Asgothian

                @loni78
                Ich würde das Blockly erweitern was Dir die Daten holt. An der Stelle kannst du die Tages-Werte direkt aufaddieren indem du

                • über die Zeit den aktuellen Tag ermittelst
                • Den erhaltenen Wert zum Datenpunkt für diesen Tag hinzu addierst

                Mal dumm gefragt - warum hast Du 24 Datenpunkte pro Tag ? Für eine Visualisierung in Grafana als Kurve sollte es doch ausreichen das Du einen Datenpunkt hast der jeweils den Wert der letzten Stunde beinhaltet ?

                Zeig doch mal dein Blockly :)

                A.

                Nachtrag: Wenn es nur darum geht die Verbräuche pro Tag in Grafana zu visualisieren dann sollte das Folgende reichen:

                • ein DP der jeweils den Verbrauch der letzten Stunde beinhaltet
                • Diesen DP per History in die Datenbank geschrieben so das der per Grafana auswertbar ist.
                • in Grafana 2 Abfragen:
                  -- Kurve über die DP, Zeitrange "heute" für die Werte von heute
                  -- Kurve über die DP, Zeitrange "dieser Monat", 'aggregation' "same day' für die Verbräuche pro Tag in diesem Monat.
                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von Homoran
                #7

                @loni78
                @Asgothian sagte in Stromzählung stündlich:

                Mal dumm gefragt - warum hast Du 24 Datenpunkte pro Tag ? Für eine Visualisierung

                ich habe zwar keinen stündlich wechselnden Tarif, aber ich mache es ähnlich wie @Asgothian es schreibt.
                Einen DP der die aktuellen Werte kumuliert, und dann je einen für Tag, Monat und Jahr, ebenfalls kumuliert. Bei dir käme dann noch einer je Stunde dazu.
                Am Ende jeden Zeitabschnitts wird der Wert in die Datenpunkte der jeweils höheren "Kategorie" geschrieben sowie in weitere Datenpunkte, in denen nur der Endwert geloggt wird

                05-Strom.png
                Hier für Erzeugung, Einspeisung, Bezug und Verbrauch

                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 -

                K L 2 Antworten Letzte Antwort
                0
                • HomoranH Homoran

                  @loni78
                  @Asgothian sagte in Stromzählung stündlich:

                  Mal dumm gefragt - warum hast Du 24 Datenpunkte pro Tag ? Für eine Visualisierung

                  ich habe zwar keinen stündlich wechselnden Tarif, aber ich mache es ähnlich wie @Asgothian es schreibt.
                  Einen DP der die aktuellen Werte kumuliert, und dann je einen für Tag, Monat und Jahr, ebenfalls kumuliert. Bei dir käme dann noch einer je Stunde dazu.
                  Am Ende jeden Zeitabschnitts wird der Wert in die Datenpunkte der jeweils höheren "Kategorie" geschrieben sowie in weitere Datenpunkte, in denen nur der Endwert geloggt wird

                  05-Strom.png
                  Hier für Erzeugung, Einspeisung, Bezug und Verbrauch

                  K Offline
                  K Offline
                  klassisch
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @Homoran sagte in Stromzählung stündlich:
                  Monat und Jahr, ebenfalls kumuliert.

                  Den Tageswert merke ich mit auch noch. Aber was ist die Motivation für Monat und Jahr und warum nicht Woche?
                  Ich dachte, Verbrauch pro Tag ist noch eine griffige Größe.
                  Und was sind dann die Stichtermine? Fürs Jahr die Aufforderung zum Zählermelden oder 1.1.? Und wie ermittelt man geschickt das Monatsende? Datum auf den 1. untersuchen? Ja, das könnte man im newDay Teil des Skripts erledigen.
                  Will das nicht inAbrede stellen, denn es wird seinen Grund haben. Und wenn man es implementieren möchte, dann wäre jetzt die beste Zeit.

                  HomoranH 1 Antwort Letzte Antwort
                  0
                  • K klassisch

                    @Homoran sagte in Stromzählung stündlich:
                    Monat und Jahr, ebenfalls kumuliert.

                    Den Tageswert merke ich mit auch noch. Aber was ist die Motivation für Monat und Jahr und warum nicht Woche?
                    Ich dachte, Verbrauch pro Tag ist noch eine griffige Größe.
                    Und was sind dann die Stichtermine? Fürs Jahr die Aufforderung zum Zählermelden oder 1.1.? Und wie ermittelt man geschickt das Monatsende? Datum auf den 1. untersuchen? Ja, das könnte man im newDay Teil des Skripts erledigen.
                    Will das nicht inAbrede stellen, denn es wird seinen Grund haben. Und wenn man es implementieren möchte, dann wäre jetzt die beste Zeit.

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #9

                    @klassisch sagte in Stromzählung stündlich:

                    Und was sind dann die Stichtermine?

                    Meinst du die "Hochrechnungen"?
                    da wird jeweils der aktuelle Tages- / Monats- oder Jahreswert bis zum Jahresende hochgerechnet

                    @klassisch sagte in Stromzählung stündlich:

                    Und wie ermittelt man geschickt das Monatsende?

                    Da hat mir mal wieder @paul53 (wer sonst!!!) geholfen
                    Monatsletzter.png

                    Wenn man es weiß - eigentlich ganz einfach :joy:

                    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 -

                    K 1 Antwort Letzte Antwort
                    1
                    • HomoranH Homoran

                      @klassisch sagte in Stromzählung stündlich:

                      Und was sind dann die Stichtermine?

                      Meinst du die "Hochrechnungen"?
                      da wird jeweils der aktuelle Tages- / Monats- oder Jahreswert bis zum Jahresende hochgerechnet

                      @klassisch sagte in Stromzählung stündlich:

                      Und wie ermittelt man geschickt das Monatsende?

                      Da hat mir mal wieder @paul53 (wer sonst!!!) geholfen
                      Monatsletzter.png

                      Wenn man es weiß - eigentlich ganz einfach :joy:

                      K Offline
                      K Offline
                      klassisch
                      Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @Homoran Danke, also den Monatstag rausholen und dann auf 1 prüfen. Da wird sich in JS was finden, ich mache ja kein Blockly.

                      HomoranH 1 Antwort Letzte Antwort
                      0
                      • K klassisch

                        @Homoran Danke, also den Monatstag rausholen und dann auf 1 prüfen. Da wird sich in JS was finden, ich mache ja kein Blockly.

                        HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von Homoran
                        #11

                        @klassisch sagte in Stromzählung stündlich:

                        also den Monatstag rausholen und dann auf 1 prüfen.

                        nicht ganz,
                        das aktuelle Datum nehmen, Anzahl msec hinzuzählen, bis der nächste Tag sein wird und das dann auf den 1. prüfen

                        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 -

                        a200A 1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @klassisch sagte in Stromzählung stündlich:

                          also den Monatstag rausholen und dann auf 1 prüfen.

                          nicht ganz,
                          das aktuelle Datum nehmen, Anzahl msec hinzuzählen, bis der nächste Tag sein wird und das dann auf den 1. prüfen

                          a200A Offline
                          a200A Offline
                          a200
                          schrieb am zuletzt editiert von
                          #12

                          @Homoran @klassisch so mache ich das:

                          // NEU - Zählerstand vom Anfang der akt. Stunde wird ermittelt
                          // 
                          
                          var cronH           = "0 * * * *";
                          var cronD           = "59 23 * * *";
                          var cronW           = "0 0 * * 1";
                          var cronM           = "0 0 1 * *";
                          var cronY           = "1 0 1 1 *";
                          
                          var PathToDP        = "javascript.0.Stromzähler.Hager.";  // Pfad zum Datenpunkt
                          
                          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 idHAGTotY       = PathToDP + "tmp.Total-y";
                          var idHAGTotal      = "smartmeter.0.1-0:1_8_0__255.value";
                          var idHAGZielH      = PathToDP + "Hour";
                          var idHAGZielD      = PathToDP + "Day";
                          var idHAGZielW      = PathToDP + "Week";
                          var idHAGZielM      = PathToDP + "Month";
                          var idHAGZielT      = PathToDP + "CurrentDay";
                          var idHAGZielY      = PathToDP + "Year";
                          var idHAGZielCW     = PathToDP + "CurrentWeek";
                          var idHAGZielCM     = PathToDP + "CurrentMonth";
                          var Teiler, dat, zahl;
                          var debug           = true;
                          
                          var DPArray         = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGTotY, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM, idHAGZielY, idHAGZielT, idHAGZielCW, idHAGZielCM];
                          var DPUnit          = "W";
                          
                          DPArray.forEach(function(wert, index, array) {
                              var DPType = wert.split(".");
                              var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]);
                              
                              if(index > 4) 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 = (parseFloat(nAktuell) - parseFloat(nVorwert)).toFixed(3);
                              if(debug) log("Vor: " + parseFloat(nVorwert) + " Aktuell: " +parseFloat(nAktuell) + " Differenz: " + nDiff);
                              setState(ZielId, parseFloat(nDiff), true);
                              if(SetN) {
                                  var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                      setState(VorId, nAktuell, true);
                                      unsubscribe(shandler); 
                                  });
                              }
                          }
                          
                          // regelmäßige Wiederholungen
                          // -----------------------------------------------------------------------------
                          
                          schedule(cronH, function () {
                              haupt(idHAGTotH, idHAGZielH, true);
                          
                              haupt(idHAGTotD, idHAGZielT, false);    // Today
                          
                              haupt(idHAGTotW, idHAGZielCW, false);  // Current Week
                          
                              haupt(idHAGTotM, idHAGZielCM, false);  // Current Month
                          });
                          
                          schedule(cronD, function () {
                              haupt(idHAGTotD, idHAGZielD, true);
                          });
                          
                          schedule(cronW, function () {
                              haupt(idHAGTotW, idHAGZielW, true);
                          });
                          
                          schedule(cronM, function () {
                              haupt(idHAGTotM, idHAGZielM, true);
                          });
                          
                          schedule(cronY, function () {
                              haupt(idHAGTotY, idHAGZielY, true);
                          });
                          
                          

                          Ich schreibe die Vorperioden-Werte in einzelne DP (das sind die tmp.Total-?)
                          Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                          IoBroker auf QNAP TS-451, Raspi und NUC

                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • a200A a200

                            @Homoran @klassisch so mache ich das:

                            // NEU - Zählerstand vom Anfang der akt. Stunde wird ermittelt
                            // 
                            
                            var cronH           = "0 * * * *";
                            var cronD           = "59 23 * * *";
                            var cronW           = "0 0 * * 1";
                            var cronM           = "0 0 1 * *";
                            var cronY           = "1 0 1 1 *";
                            
                            var PathToDP        = "javascript.0.Stromzähler.Hager.";  // Pfad zum Datenpunkt
                            
                            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 idHAGTotY       = PathToDP + "tmp.Total-y";
                            var idHAGTotal      = "smartmeter.0.1-0:1_8_0__255.value";
                            var idHAGZielH      = PathToDP + "Hour";
                            var idHAGZielD      = PathToDP + "Day";
                            var idHAGZielW      = PathToDP + "Week";
                            var idHAGZielM      = PathToDP + "Month";
                            var idHAGZielT      = PathToDP + "CurrentDay";
                            var idHAGZielY      = PathToDP + "Year";
                            var idHAGZielCW     = PathToDP + "CurrentWeek";
                            var idHAGZielCM     = PathToDP + "CurrentMonth";
                            var Teiler, dat, zahl;
                            var debug           = true;
                            
                            var DPArray         = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGTotY, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM, idHAGZielY, idHAGZielT, idHAGZielCW, idHAGZielCM];
                            var DPUnit          = "W";
                            
                            DPArray.forEach(function(wert, index, array) {
                                var DPType = wert.split(".");
                                var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]);
                                
                                if(index > 4) 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 = (parseFloat(nAktuell) - parseFloat(nVorwert)).toFixed(3);
                                if(debug) log("Vor: " + parseFloat(nVorwert) + " Aktuell: " +parseFloat(nAktuell) + " Differenz: " + nDiff);
                                setState(ZielId, parseFloat(nDiff), true);
                                if(SetN) {
                                    var shandler = on ({id: ZielId, change: 'any'}, function(data) {
                                        setState(VorId, nAktuell, true);
                                        unsubscribe(shandler); 
                                    });
                                }
                            }
                            
                            // regelmäßige Wiederholungen
                            // -----------------------------------------------------------------------------
                            
                            schedule(cronH, function () {
                                haupt(idHAGTotH, idHAGZielH, true);
                            
                                haupt(idHAGTotD, idHAGZielT, false);    // Today
                            
                                haupt(idHAGTotW, idHAGZielCW, false);  // Current Week
                            
                                haupt(idHAGTotM, idHAGZielCM, false);  // Current Month
                            });
                            
                            schedule(cronD, function () {
                                haupt(idHAGTotD, idHAGZielD, true);
                            });
                            
                            schedule(cronW, function () {
                                haupt(idHAGTotW, idHAGZielW, true);
                            });
                            
                            schedule(cronM, function () {
                                haupt(idHAGTotM, idHAGZielM, true);
                            });
                            
                            schedule(cronY, function () {
                                haupt(idHAGTotY, idHAGZielY, true);
                            });
                            
                            

                            Ich schreibe die Vorperioden-Werte in einzelne DP (das sind die tmp.Total-?)
                            Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                            HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #13

                            @a200 sagte in Stromzählung stündlich:

                            Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                            Ich habe mir das script nicht näher angesehen, aber der cronM mit 0 0 1 * * wird am ersten (ich nehme an des Folgemonats) geschrieben, das wird bei grafischer Darstellung dann dem nächsten Monat zugeordnet, während cronD "korrekterweise" kurz vor Mitternacht 59 23 * * * abläuft

                            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 -

                            a200A 1 Antwort Letzte Antwort
                            0
                            • HomoranH Homoran

                              @a200 sagte in Stromzählung stündlich:

                              Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                              Ich habe mir das script nicht näher angesehen, aber der cronM mit 0 0 1 * * wird am ersten (ich nehme an des Folgemonats) geschrieben, das wird bei grafischer Darstellung dann dem nächsten Monat zugeordnet, während cronD "korrekterweise" kurz vor Mitternacht 59 23 * * * abläuft

                              a200A Offline
                              a200A Offline
                              a200
                              schrieb am zuletzt editiert von a200
                              #14

                              @Homoran sagte in Stromzählung stündlich:

                              @a200 sagte in Stromzählung stündlich:

                              Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                              Ich habe mir das script nicht näher angesehen, aber der cronM mit 0 0 1 * * wird am ersten (ich nehme an des Folgemonats) geschrieben, das wird bei grafischer Darstellung dann dem nächsten Monat zugeordnet, während cronD "korrekterweise" kurz vor Mitternacht 59 23 * * * abläuft

                              am ersten eines Monats wird der aktueller Gesamtwert in den DP tmp.Total-m geschrieben. Am ersten des Folgemonats wird die Differenz der beider Werte als Monatsverbrauch gespeichert und danach der aktueller Gesamtwert wieder in den DP tmp.Total-m geschrieben.

                              Das gleiche mache ich stündlich, wöchentlich und jährlich. Die Werte für heute, diese Woche und dieser Monat werden nach dem Prinzip "aktueller Wert" - "Vorwert" gerechnet.

                              Ich verstehe deinen Einwand, deine Frage nicht ganz.

                              cronD könnte auch "0 0 * * *" sein, aber es gab da schon genug andere Jobs.

                              IoBroker auf QNAP TS-451, Raspi und NUC

                              HomoranH 1 Antwort Letzte Antwort
                              0
                              • a200A a200

                                @Homoran sagte in Stromzählung stündlich:

                                @a200 sagte in Stromzählung stündlich:

                                Damit habe ich die DP für minütlich, stündlich, täglich, wöchentlich, monatlich, jährlich, heute, diese Woche und dieser Monat.

                                Ich habe mir das script nicht näher angesehen, aber der cronM mit 0 0 1 * * wird am ersten (ich nehme an des Folgemonats) geschrieben, das wird bei grafischer Darstellung dann dem nächsten Monat zugeordnet, während cronD "korrekterweise" kurz vor Mitternacht 59 23 * * * abläuft

                                am ersten eines Monats wird der aktueller Gesamtwert in den DP tmp.Total-m geschrieben. Am ersten des Folgemonats wird die Differenz der beider Werte als Monatsverbrauch gespeichert und danach der aktueller Gesamtwert wieder in den DP tmp.Total-m geschrieben.

                                Das gleiche mache ich stündlich, wöchentlich und jährlich. Die Werte für heute, diese Woche und dieser Monat werden nach dem Prinzip "aktueller Wert" - "Vorwert" gerechnet.

                                Ich verstehe deinen Einwand, deine Frage nicht ganz.

                                cronD könnte auch "0 0 * * *" sein, aber es gab da schon genug andere Jobs.

                                HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #15

                                @a200 sagte in Stromzählung stündlich:

                                Ich verstehe deinen Einwand, deine Frage nicht ganz.

                                Ich versuche es nochmal ;-)

                                Wenn du deinen Stromverbrauch als Balkengrafik darstellen willst, werden dein Balken dem Folgemonat (in dem du vielleicht in Urlaub bist) zugeordnet.
                                Aus dem Grund mache ich das (genau wie du am Tag) am letzten Tag des Monats um 23:59
                                Dann ist der Timestmp des Wertes noch im aktuellen Monat

                                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 -

                                a200A 1 Antwort Letzte Antwort
                                0
                                • HomoranH Homoran

                                  @loni78
                                  @Asgothian sagte in Stromzählung stündlich:

                                  Mal dumm gefragt - warum hast Du 24 Datenpunkte pro Tag ? Für eine Visualisierung

                                  ich habe zwar keinen stündlich wechselnden Tarif, aber ich mache es ähnlich wie @Asgothian es schreibt.
                                  Einen DP der die aktuellen Werte kumuliert, und dann je einen für Tag, Monat und Jahr, ebenfalls kumuliert. Bei dir käme dann noch einer je Stunde dazu.
                                  Am Ende jeden Zeitabschnitts wird der Wert in die Datenpunkte der jeweils höheren "Kategorie" geschrieben sowie in weitere Datenpunkte, in denen nur der Endwert geloggt wird

                                  05-Strom.png
                                  Hier für Erzeugung, Einspeisung, Bezug und Verbrauch

                                  L Offline
                                  L Offline
                                  loni78
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Homoran
                                  @Asgothian

                                  So ich habe mal meine Sammlung von Datenpunkten gelöscht...... und habe Euren Ratschlag umgesetzt. D.h. ich aggregiere jetzt die Werte hoch --> von Stunde --> zu Tage --> zu Monate usw.

                                  Es scheint so, dass es funktioniert. Manchmal sieht man den Wald vor lauter Bäumen nicht. Jetzt muss ich mir nur noch überlegen, wie ich das mit den Tageswerten mache, da diese erst um 0.01 Uhr in der Influx gespeichert werden.

                                  Erstmal vielen Dank an alle.

                                  Grüße
                                  Rafael

                                  L 1 Antwort Letzte Antwort
                                  0
                                  • L loni78

                                    @Homoran
                                    @Asgothian

                                    So ich habe mal meine Sammlung von Datenpunkten gelöscht...... und habe Euren Ratschlag umgesetzt. D.h. ich aggregiere jetzt die Werte hoch --> von Stunde --> zu Tage --> zu Monate usw.

                                    Es scheint so, dass es funktioniert. Manchmal sieht man den Wald vor lauter Bäumen nicht. Jetzt muss ich mir nur noch überlegen, wie ich das mit den Tageswerten mache, da diese erst um 0.01 Uhr in der Influx gespeichert werden.

                                    Erstmal vielen Dank an alle.

                                    Grüße
                                    Rafael

                                    L Offline
                                    L Offline
                                    loni78
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Homoran
                                    @Asgothian 4df46893-0211-4af0-8c87-88752288613f-image.png

                                    So habe ich das in Blockly umgesetzt. Müsste doch so funktionieren bzw. gibt es Verbesserungsvorschlage. In diesem Skript werden erstmal nur die kWh gezählt bzw. geloggt. In einem zweiten würde ich das noch in EUR umrechnen.

                                    Grüße
                                    Rafael

                                    1 Antwort Letzte Antwort
                                    0
                                    • HomoranH Homoran

                                      @a200 sagte in Stromzählung stündlich:

                                      Ich verstehe deinen Einwand, deine Frage nicht ganz.

                                      Ich versuche es nochmal ;-)

                                      Wenn du deinen Stromverbrauch als Balkengrafik darstellen willst, werden dein Balken dem Folgemonat (in dem du vielleicht in Urlaub bist) zugeordnet.
                                      Aus dem Grund mache ich das (genau wie du am Tag) am letzten Tag des Monats um 23:59
                                      Dann ist der Timestmp des Wertes noch im aktuellen Monat

                                      a200A Offline
                                      a200A Offline
                                      a200
                                      schrieb am zuletzt editiert von a200
                                      #18

                                      @Homoran sagte in Stromzählung stündlich:

                                      Ich versuche es nochmal ;-)

                                      Wenn du deinen Stromverbrauch als Balkengrafik darstellen willst, werden dein Balken dem Folgemonat (in dem du vielleicht in Urlaub bist) zugeordnet.
                                      Aus dem Grund mache ich das (genau wie du am Tag) am letzten Tag des Monats um 23:59
                                      Dann ist der Timestmp des Wertes noch im aktuellen Monat

                                      Ok, jetzt! Balkendiagramm ist das Stichwort! Du hast vorhin nur von Grafen gesprochen.
                                      Ich nutze Liniendiagram und dann habe ich korrekterweise am Ersten eines Monats um 0:00 den Verbrauch bis zu diesem Zeitpunkt.

                                      002.PNG

                                      003.PNG

                                      IoBroker auf QNAP TS-451, Raspi und NUC

                                      XxJooOX 1 Antwort Letzte Antwort
                                      0
                                      • a200A a200

                                        @Homoran sagte in Stromzählung stündlich:

                                        Ich versuche es nochmal ;-)

                                        Wenn du deinen Stromverbrauch als Balkengrafik darstellen willst, werden dein Balken dem Folgemonat (in dem du vielleicht in Urlaub bist) zugeordnet.
                                        Aus dem Grund mache ich das (genau wie du am Tag) am letzten Tag des Monats um 23:59
                                        Dann ist der Timestmp des Wertes noch im aktuellen Monat

                                        Ok, jetzt! Balkendiagramm ist das Stichwort! Du hast vorhin nur von Grafen gesprochen.
                                        Ich nutze Liniendiagram und dann habe ich korrekterweise am Ersten eines Monats um 0:00 den Verbrauch bis zu diesem Zeitpunkt.

                                        002.PNG

                                        003.PNG

                                        XxJooOX Offline
                                        XxJooOX Offline
                                        XxJooO
                                        schrieb am zuletzt editiert von
                                        #19

                                        Hallo,

                                        darf ich mal in die Runde fragen, wie Ihr das dann speichert? Ich kann ja DPs anlegen für 31 Tage und die dann jeweils füllen. Für Wochen, Monate und Jahre ist das Anlegen von DPs (man möchte ja nichts verlieren) aber irgendwie viel Aufwand (kann man automatisieren, ist mir bekannt). Lässt sich sowas in einer Art array speichern, oder habt Ihr jeweils wirklich DPs erstellt?

                                        ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                                        paul53P AsgothianA HomoranH 3 Antworten Letzte Antwort
                                        0
                                        • XxJooOX XxJooO

                                          Hallo,

                                          darf ich mal in die Runde fragen, wie Ihr das dann speichert? Ich kann ja DPs anlegen für 31 Tage und die dann jeweils füllen. Für Wochen, Monate und Jahre ist das Anlegen von DPs (man möchte ja nichts verlieren) aber irgendwie viel Aufwand (kann man automatisieren, ist mir bekannt). Lässt sich sowas in einer Art array speichern, oder habt Ihr jeweils wirklich DPs erstellt?

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          schrieb am zuletzt editiert von
                                          #20

                                          @XxJooO sagte:

                                          Lässt sich sowas in einer Art array speichern

                                          Ja, das lässt sich in einem Datenpunkt vom Typ "array" speichern.

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          809

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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