Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    720

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

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

Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

Scheduled Pinned Locked Moved JavaScript
144 Posts 27 Posters 26.1k Views 30 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @homecineplexx sagte: sowas gehört ins GIT

    Es gibt einen Adapter: Sourceanalytix.

    SKBS Offline
    SKBS Offline
    SKB
    Developer Most Active
    wrote on last edited by
    #51

    @paul53 Dieser Adapter funktioniert halt nicht mit Shelly und aus dem Grunde habe ich das Skript erstellt.

    Weiterer Vorteil: Javascript Adapter läuft eh - SA braucht 120MB Speicher.

    Des Weiteren ist SA einfach nicht gut, meiner Meinung nach.

    ... wer nicht mit der Zeit geht, geht mit der Zeit ...

    Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

    S 1 Reply Last reply
    1
    • SKBS SKB

      @homecineplexx Sowas kann stehen, wo es möchte ... tz

      H Offline
      H Offline
      homecineplexx
      wrote on last edited by
      #52

      @skb said in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

      @homecineplexx Sowas kann stehen, wo es möchte ... tz

      natürlich, aber dann hast keine versionsverwaltung und daher unbrauchbar...tz

      SKBS 1 Reply Last reply
      0
      • H homecineplexx

        @skb said in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

        @homecineplexx Das ist der Sinn eines Skriptes und der Unterschied zu einem Adapter. Hier sollen nur die Werte addiert werden und keine Device-Überwachung stattfinden.

        ja schon, allerdings solltest dann zumindest darauf hinweisen, denn das wissen die meisten die es verwenden wahrscheinlich nicht!
        und dadurch wäre es für mich kein sinnvolles skript, da sich die liste meiner shellys stätig erweitert

        SKBS Offline
        SKBS Offline
        SKB
        Developer Most Active
        wrote on last edited by SKB
        #53

        @homecineplexx Du kannst es benutzen oder es lassen. Steht Dir ja frei :)

        Und nach Installation eines neuen Shelly scheint es auch zu kompliziert, das Skript einmal neuzustarten ;)

        ... wer nicht mit der Zeit geht, geht mit der Zeit ...

        Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

        1 Reply Last reply
        1
        • H homecineplexx

          @skb said in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

          @homecineplexx Sowas kann stehen, wo es möchte ... tz

          natürlich, aber dann hast keine versionsverwaltung und daher unbrauchbar...tz

          SKBS Offline
          SKBS Offline
          SKB
          Developer Most Active
          wrote on last edited by
          #54

          @homecineplexx Versionsverwaltung? Und weiter? Soll ich gerne auch noch Change-Requeste einstellen? Projektmanager beschäftigen?

          Und das alles in meiner privaten Zeit? Sonst geht es Dir aber gut?

          ... wer nicht mit der Zeit geht, geht mit der Zeit ...

          Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

          H 1 Reply Last reply
          0
          • SKBS SKB

            @paul53 Dieser Adapter funktioniert halt nicht mit Shelly und aus dem Grunde habe ich das Skript erstellt.

            Weiterer Vorteil: Javascript Adapter läuft eh - SA braucht 120MB Speicher.

            Des Weiteren ist SA einfach nicht gut, meiner Meinung nach.

            S Offline
            S Offline
            SpacerX
            wrote on last edited by
            #55

            @skb Skript ist von Dir?

            Danke dafür. Hättest was dagegen wenn ich hier mal einen Schnipsel zum Anpassen des Speicherpfades poste?

            DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

            SKBS 1 Reply Last reply
            0
            • S SpacerX

              @skb Skript ist von Dir?

              Danke dafür. Hättest was dagegen wenn ich hier mal einen Schnipsel zum Anpassen des Speicherpfades poste?

              SKBS Offline
              SKBS Offline
              SKB
              Developer Most Active
              wrote on last edited by
              #56

              @spacerx Dazu bitte erstmal einen Change-Request an @homecineplexx stellen :D

              Spass beiseite - kannst Du gerne machen.

              ... wer nicht mit der Zeit geht, geht mit der Zeit ...

              Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

              1 Reply Last reply
              0
              • SKBS SKB

                @homecineplexx Versionsverwaltung? Und weiter? Soll ich gerne auch noch Change-Requeste einstellen? Projektmanager beschäftigen?

                Und das alles in meiner privaten Zeit? Sonst geht es Dir aber gut?

                H Offline
                H Offline
                homecineplexx
                wrote on last edited by
                #57

                @skb said in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

                @homecineplexx Versionsverwaltung? Und weiter? Soll ich gerne auch noch Change-Requeste einstellen? Projektmanager beschäftigen?

                Und das alles in meiner privaten Zeit? Sonst geht es Dir aber gut?

                alter was bist du denn für ein schüttler....wahnsinn

                SKBS 1 Reply Last reply
                -2
                • H homecineplexx

                  @skb said in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

                  @homecineplexx Versionsverwaltung? Und weiter? Soll ich gerne auch noch Change-Requeste einstellen? Projektmanager beschäftigen?

                  Und das alles in meiner privaten Zeit? Sonst geht es Dir aber gut?

                  alter was bist du denn für ein schüttler....wahnsinn

                  SKBS Offline
                  SKBS Offline
                  SKB
                  Developer Most Active
                  wrote on last edited by
                  #58

                  @homecineplexx Jetzt bin ich interessiert, was ein "Schüttler" ist :D

                  ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                  Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                  I 1 Reply Last reply
                  0
                  • SKBS SKB

                    @homecineplexx Jetzt bin ich interessiert, was ein "Schüttler" ist :D

                    I Offline
                    I Offline
                    IOBaer
                    wrote on last edited by
                    #59

                    @SpacerX kannst Du Dein Skript hier zur Verfügung stellen? Das wäre toll.

                    Eigentlich ist es schon traurig, welcher Aufwand betrieben werden muss, um so eine einfache Sache wie Energiedatenprotokollierung in Verbindung mit einem Shelly zum Laufen zu bekommen ;)

                    S 2 Replies Last reply
                    0
                    • I IOBaer

                      @SpacerX kannst Du Dein Skript hier zur Verfügung stellen? Das wäre toll.

                      Eigentlich ist es schon traurig, welcher Aufwand betrieben werden muss, um so eine einfache Sache wie Energiedatenprotokollierung in Verbindung mit einem Shelly zum Laufen zu bekommen ;)

                      S Offline
                      S Offline
                      SpacerX
                      wrote on last edited by
                      #60

                      @iobaer sagte in Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr:

                      kannst Du Dein Skript hier zur Verfügung stellen? Das wäre toll.

                      Dazu muss ich erst mal an meinen Rechner kommen. Heute Abend dann.

                      DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                      1 Reply Last reply
                      1
                      • I IOBaer

                        @SpacerX kannst Du Dein Skript hier zur Verfügung stellen? Das wäre toll.

                        Eigentlich ist es schon traurig, welcher Aufwand betrieben werden muss, um so eine einfache Sache wie Energiedatenprotokollierung in Verbindung mit einem Shelly zum Laufen zu bekommen ;)

                        S Offline
                        S Offline
                        SpacerX
                        wrote on last edited by SpacerX
                        #61

                        @iobaer

                        Das sind meine Änderungen am original Script

                        * Skript Name:      Shelly-Verbrauch
                         * Skript Version:   1.60
                         * Erstell-Datum:    08. Oktober 2021 | Update: 20. Juli 2022 | Override Functions by SpacerX 26.09.2022 (Zeile 402)
                        

                        Ab Zeile 402 sieht mein Skript dann so aus.
                        Die Funktionen die einer Änderung bedurften werden einfach überschrieben. So muss ich nicht Quer durch den Code Änderungen vornehmen und bei Updates kann ich schnell anpassen.
                        Ich habe die Hinweise mal im Code belassen.

                        Zu beachten ist, es so angepasst ist das die Tageswerte um 23:59 Uhr, Wochenwerte am Sonntag um 23:59 Uhr, Monatswerte am letzten Tag des Monats um 23:59 Uhr und Jahreswerte am 31 Dez. um 23:59.

                        In Zeile 409 wird dann der Userdatenpunkt definiert.

                        /*
                         * Override Functions
                         * @autor 2022 SpacerX <spacerx@rbe-base.de>
                         * Überschreibt Funktionen um Datenpunkte unter 0_userdata.0 zu erstellen
                         *
                         *** START SpacerX ***/
                        // Userdatenpunkt
                        var userdir = "0_userdata.0."; // Abschließender Punkt !!! WICHTIG !!!
                        /**
                         * Letzten des Monats berechnen.
                         * @param {Date} oHeute
                         */
                        function letzterDesMonats(oHeute) {
                            return new Date(oHeute.getFullYear(), oHeute.getMonth() + 1, 0).getDate();
                        }
                        //Override at row 48
                        // Shelly Verbrauch aktualisieren - nachts um 23:59 Uhr
                        function shelly_vebrauch_tag() {
                            // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
                            shelly_verbrauch_update();
                            // Datumsvariable
                            var heute = new Date();
                            // Heute zu Gestern verschieben. Täglich um 23:59 Uhr
                            verschiebe_verbrauch_objekt("heute", "gestern");
                            log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");
                            // aktuelle Woche in letzte Woche verschieben. Am Sonntag um 23:59 Uhr
                            if (heute.getDay() === 0) {   /*line changed by spacerx (Sonntag=0, Montag=1)*/
                                verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
                                log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
                            }
                            // aktueller Monat in letzten Monat verschieben. Am letzten des Monats um 23:59 Uhr
                            if (heute.getDate() === letzterDesMonats(heute)) {   /*line changed by spacerx*/
                                verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
                                log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
                            }
                            // aktuelles Jahr in letztes Jahr verschieben. Am letzten Tag des Jahres um 23:59 Uhr
                            if (heute.getDate() === letzterDesMonats(heute) && heute.getMonth() === 11) { /*line changed by spacerx (Jan=0, Dez=11)*/
                                verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
                                log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
                            }
                        }
                        //Override at row 254
                        //Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
                        function verschiebe_verbrauch_objekt(von, nach) {
                            $('state[id=' + userdir + datenpunkt + '*.*.' + von + ']').each(function (id, i) {   /*line changed by spacerx*/
                                // Temporärer Gruppen-Datenpunkt
                                var tmp_dp = id.slice(0, -(von.length));
                                var verbrauch = getState(id).val;
                                if (verbrauch != null) {
                                    setState(tmp_dp + nach, verbrauch, true);
                                }
                                // Setze "von" zurück
                                setState(id, 0, true);
                            });
                        }
                        //Override at row 267
                        // Funktion um die aktuellen Namen des Shelly abzuholen
                        function aktualisiere_namen() {
                            if (typeof extendObject === "function") {
                                shellyDpsName.each(function (id, i) {
                                    if (existsState(id)) {
                                        setState(shelly_DP_Name(id), String(getState(id).val), true);
                                        extendObject(shelly_DP_Name_Main(id), {   /*line changed by spacerx*/
                                            common: {
                                                name: String(getState(id).val),
                                                desc: String(getState(id).val)
                                            },
                                            type: "channel"
                                        });
                                    }
                                });
                            }
                        }
                        //Override at row 377
                        function shelly_DP(dp, extended = false) {
                            dp = dp.split(".");
                            dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                            if (extended) {
                                dp = dp + "_Returned.";
                            } else {
                                dp = dp + ".";
                            }
                            return dp;
                        }
                        //Override at row 387
                        function shelly_DP_Name(dp) {
                            dp = dp.split(".");
                            dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                            return dp;
                        }
                        //Override at row 392
                        function shelly_DP_Name_Main(dp) {
                            dp = dp.split(".");
                            dp = userdir + datenpunkt + dp[2];   /*line changed by spacerx*/
                            return dp;
                        }
                        /*** END SpacerX ***/
                        // Erster Start und Initialisierung
                        shelly_verbrauch_erster_start();
                        // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
                        schedule('*/15 * * * *', shelly_verbrauch_update);
                        /*** START Edit SpacerX ***/
                        // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                        //schedule('0 0 * * *', shelly_vebrauch_tag);
                        // Nachts um 23:59 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                        schedule('59 23 * * *', shelly_vebrauch_tag);
                        /*** END Edit SpacerX ***/
                        

                        Warum Aktualisierung um 23:59 Uhr und nicht 0:00 Uhr?
                        Ganz einfach, in InfluxDB gehört 0:00 Uhr schon zum nächsten Tag.

                        DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                        I SKBS 3 Replies Last reply
                        2
                        • S SpacerX

                          @iobaer

                          Das sind meine Änderungen am original Script

                          * Skript Name:      Shelly-Verbrauch
                           * Skript Version:   1.60
                           * Erstell-Datum:    08. Oktober 2021 | Update: 20. Juli 2022 | Override Functions by SpacerX 26.09.2022 (Zeile 402)
                          

                          Ab Zeile 402 sieht mein Skript dann so aus.
                          Die Funktionen die einer Änderung bedurften werden einfach überschrieben. So muss ich nicht Quer durch den Code Änderungen vornehmen und bei Updates kann ich schnell anpassen.
                          Ich habe die Hinweise mal im Code belassen.

                          Zu beachten ist, es so angepasst ist das die Tageswerte um 23:59 Uhr, Wochenwerte am Sonntag um 23:59 Uhr, Monatswerte am letzten Tag des Monats um 23:59 Uhr und Jahreswerte am 31 Dez. um 23:59.

                          In Zeile 409 wird dann der Userdatenpunkt definiert.

                          /*
                           * Override Functions
                           * @autor 2022 SpacerX <spacerx@rbe-base.de>
                           * Überschreibt Funktionen um Datenpunkte unter 0_userdata.0 zu erstellen
                           *
                           *** START SpacerX ***/
                          // Userdatenpunkt
                          var userdir = "0_userdata.0."; // Abschließender Punkt !!! WICHTIG !!!
                          /**
                           * Letzten des Monats berechnen.
                           * @param {Date} oHeute
                           */
                          function letzterDesMonats(oHeute) {
                              return new Date(oHeute.getFullYear(), oHeute.getMonth() + 1, 0).getDate();
                          }
                          //Override at row 48
                          // Shelly Verbrauch aktualisieren - nachts um 23:59 Uhr
                          function shelly_vebrauch_tag() {
                              // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
                              shelly_verbrauch_update();
                              // Datumsvariable
                              var heute = new Date();
                              // Heute zu Gestern verschieben. Täglich um 23:59 Uhr
                              verschiebe_verbrauch_objekt("heute", "gestern");
                              log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");
                              // aktuelle Woche in letzte Woche verschieben. Am Sonntag um 23:59 Uhr
                              if (heute.getDay() === 0) {   /*line changed by spacerx (Sonntag=0, Montag=1)*/
                                  verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
                                  log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
                              }
                              // aktueller Monat in letzten Monat verschieben. Am letzten des Monats um 23:59 Uhr
                              if (heute.getDate() === letzterDesMonats(heute)) {   /*line changed by spacerx*/
                                  verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
                                  log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
                              }
                              // aktuelles Jahr in letztes Jahr verschieben. Am letzten Tag des Jahres um 23:59 Uhr
                              if (heute.getDate() === letzterDesMonats(heute) && heute.getMonth() === 11) { /*line changed by spacerx (Jan=0, Dez=11)*/
                                  verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
                                  log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
                              }
                          }
                          //Override at row 254
                          //Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
                          function verschiebe_verbrauch_objekt(von, nach) {
                              $('state[id=' + userdir + datenpunkt + '*.*.' + von + ']').each(function (id, i) {   /*line changed by spacerx*/
                                  // Temporärer Gruppen-Datenpunkt
                                  var tmp_dp = id.slice(0, -(von.length));
                                  var verbrauch = getState(id).val;
                                  if (verbrauch != null) {
                                      setState(tmp_dp + nach, verbrauch, true);
                                  }
                                  // Setze "von" zurück
                                  setState(id, 0, true);
                              });
                          }
                          //Override at row 267
                          // Funktion um die aktuellen Namen des Shelly abzuholen
                          function aktualisiere_namen() {
                              if (typeof extendObject === "function") {
                                  shellyDpsName.each(function (id, i) {
                                      if (existsState(id)) {
                                          setState(shelly_DP_Name(id), String(getState(id).val), true);
                                          extendObject(shelly_DP_Name_Main(id), {   /*line changed by spacerx*/
                                              common: {
                                                  name: String(getState(id).val),
                                                  desc: String(getState(id).val)
                                              },
                                              type: "channel"
                                          });
                                      }
                                  });
                              }
                          }
                          //Override at row 377
                          function shelly_DP(dp, extended = false) {
                              dp = dp.split(".");
                              dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                              if (extended) {
                                  dp = dp + "_Returned.";
                              } else {
                                  dp = dp + ".";
                              }
                              return dp;
                          }
                          //Override at row 387
                          function shelly_DP_Name(dp) {
                              dp = dp.split(".");
                              dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                              return dp;
                          }
                          //Override at row 392
                          function shelly_DP_Name_Main(dp) {
                              dp = dp.split(".");
                              dp = userdir + datenpunkt + dp[2];   /*line changed by spacerx*/
                              return dp;
                          }
                          /*** END SpacerX ***/
                          // Erster Start und Initialisierung
                          shelly_verbrauch_erster_start();
                          // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
                          schedule('*/15 * * * *', shelly_verbrauch_update);
                          /*** START Edit SpacerX ***/
                          // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                          //schedule('0 0 * * *', shelly_vebrauch_tag);
                          // Nachts um 23:59 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                          schedule('59 23 * * *', shelly_vebrauch_tag);
                          /*** END Edit SpacerX ***/
                          

                          Warum Aktualisierung um 23:59 Uhr und nicht 0:00 Uhr?
                          Ganz einfach, in InfluxDB gehört 0:00 Uhr schon zum nächsten Tag.

                          I Offline
                          I Offline
                          IOBaer
                          wrote on last edited by IOBaer
                          #62

                          @spacerx Ganz lieben Dank - ich komme aber überhaupt nicht klar, wo ich nun was einfügen muss. Ich beziehe mich auf die aktuellste Version des ursprünglichen Skripts, abrufbar unter https://www.kreyenborg.koeln/shelly-verbrauchs-historie-fuer-tag-woche-monat-jahr/

                          S 1 Reply Last reply
                          0
                          • S SpacerX

                            @iobaer

                            Das sind meine Änderungen am original Script

                            * Skript Name:      Shelly-Verbrauch
                             * Skript Version:   1.60
                             * Erstell-Datum:    08. Oktober 2021 | Update: 20. Juli 2022 | Override Functions by SpacerX 26.09.2022 (Zeile 402)
                            

                            Ab Zeile 402 sieht mein Skript dann so aus.
                            Die Funktionen die einer Änderung bedurften werden einfach überschrieben. So muss ich nicht Quer durch den Code Änderungen vornehmen und bei Updates kann ich schnell anpassen.
                            Ich habe die Hinweise mal im Code belassen.

                            Zu beachten ist, es so angepasst ist das die Tageswerte um 23:59 Uhr, Wochenwerte am Sonntag um 23:59 Uhr, Monatswerte am letzten Tag des Monats um 23:59 Uhr und Jahreswerte am 31 Dez. um 23:59.

                            In Zeile 409 wird dann der Userdatenpunkt definiert.

                            /*
                             * Override Functions
                             * @autor 2022 SpacerX <spacerx@rbe-base.de>
                             * Überschreibt Funktionen um Datenpunkte unter 0_userdata.0 zu erstellen
                             *
                             *** START SpacerX ***/
                            // Userdatenpunkt
                            var userdir = "0_userdata.0."; // Abschließender Punkt !!! WICHTIG !!!
                            /**
                             * Letzten des Monats berechnen.
                             * @param {Date} oHeute
                             */
                            function letzterDesMonats(oHeute) {
                                return new Date(oHeute.getFullYear(), oHeute.getMonth() + 1, 0).getDate();
                            }
                            //Override at row 48
                            // Shelly Verbrauch aktualisieren - nachts um 23:59 Uhr
                            function shelly_vebrauch_tag() {
                                // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
                                shelly_verbrauch_update();
                                // Datumsvariable
                                var heute = new Date();
                                // Heute zu Gestern verschieben. Täglich um 23:59 Uhr
                                verschiebe_verbrauch_objekt("heute", "gestern");
                                log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");
                                // aktuelle Woche in letzte Woche verschieben. Am Sonntag um 23:59 Uhr
                                if (heute.getDay() === 0) {   /*line changed by spacerx (Sonntag=0, Montag=1)*/
                                    verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
                                    log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
                                }
                                // aktueller Monat in letzten Monat verschieben. Am letzten des Monats um 23:59 Uhr
                                if (heute.getDate() === letzterDesMonats(heute)) {   /*line changed by spacerx*/
                                    verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
                                    log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
                                }
                                // aktuelles Jahr in letztes Jahr verschieben. Am letzten Tag des Jahres um 23:59 Uhr
                                if (heute.getDate() === letzterDesMonats(heute) && heute.getMonth() === 11) { /*line changed by spacerx (Jan=0, Dez=11)*/
                                    verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
                                    log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
                                }
                            }
                            //Override at row 254
                            //Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
                            function verschiebe_verbrauch_objekt(von, nach) {
                                $('state[id=' + userdir + datenpunkt + '*.*.' + von + ']').each(function (id, i) {   /*line changed by spacerx*/
                                    // Temporärer Gruppen-Datenpunkt
                                    var tmp_dp = id.slice(0, -(von.length));
                                    var verbrauch = getState(id).val;
                                    if (verbrauch != null) {
                                        setState(tmp_dp + nach, verbrauch, true);
                                    }
                                    // Setze "von" zurück
                                    setState(id, 0, true);
                                });
                            }
                            //Override at row 267
                            // Funktion um die aktuellen Namen des Shelly abzuholen
                            function aktualisiere_namen() {
                                if (typeof extendObject === "function") {
                                    shellyDpsName.each(function (id, i) {
                                        if (existsState(id)) {
                                            setState(shelly_DP_Name(id), String(getState(id).val), true);
                                            extendObject(shelly_DP_Name_Main(id), {   /*line changed by spacerx*/
                                                common: {
                                                    name: String(getState(id).val),
                                                    desc: String(getState(id).val)
                                                },
                                                type: "channel"
                                            });
                                        }
                                    });
                                }
                            }
                            //Override at row 377
                            function shelly_DP(dp, extended = false) {
                                dp = dp.split(".");
                                dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                                if (extended) {
                                    dp = dp + "_Returned.";
                                } else {
                                    dp = dp + ".";
                                }
                                return dp;
                            }
                            //Override at row 387
                            function shelly_DP_Name(dp) {
                                dp = dp.split(".");
                                dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
                                return dp;
                            }
                            //Override at row 392
                            function shelly_DP_Name_Main(dp) {
                                dp = dp.split(".");
                                dp = userdir + datenpunkt + dp[2];   /*line changed by spacerx*/
                                return dp;
                            }
                            /*** END SpacerX ***/
                            // Erster Start und Initialisierung
                            shelly_verbrauch_erster_start();
                            // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
                            schedule('*/15 * * * *', shelly_verbrauch_update);
                            /*** START Edit SpacerX ***/
                            // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                            //schedule('0 0 * * *', shelly_vebrauch_tag);
                            // Nachts um 23:59 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
                            schedule('59 23 * * *', shelly_vebrauch_tag);
                            /*** END Edit SpacerX ***/
                            

                            Warum Aktualisierung um 23:59 Uhr und nicht 0:00 Uhr?
                            Ganz einfach, in InfluxDB gehört 0:00 Uhr schon zum nächsten Tag.

                            SKBS Offline
                            SKBS Offline
                            SKB
                            Developer Most Active
                            wrote on last edited by
                            #63

                            @spacerx Hier hast Du, denke ich, einen Denkfehler, wenn Du um 23:59 alles "Tagesabschlüsse" fährst.

                            Denn die Zeit zwischen 23:59 und 00:00 gehört eben noch zum gleichen Tag und wenn dann um 00:00 gespeichert wird, passt das. Dir würde der Verbrauch von 23:59 bis 00:00 zum nächsten Tag gebucht werden.

                            ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                            Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                            S 1 Reply Last reply
                            0
                            • I IOBaer

                              @spacerx Ganz lieben Dank - ich komme aber überhaupt nicht klar, wo ich nun was einfügen muss. Ich beziehe mich auf die aktuellste Version des ursprünglichen Skripts, abrufbar unter https://www.kreyenborg.koeln/shelly-verbrauchs-historie-fuer-tag-woche-monat-jahr/

                              S Offline
                              S Offline
                              SpacerX
                              wrote on last edited by
                              #64

                              @iobaer
                              im originalen Skript alles ab Zeile 402 mit dem Code der oben in CodeTags steht ersetzen.

                              Mit der Prämisse das die Aktualisierungen der Tages-, Wochen-, Monats-, Jahreswerte nach dem oben genannten Hinweis passiert.
                              Natürlich alles ohne Garantie. 😊
                              Alte Werte aus dem Javascript Zweig werden aber nicht übernommen. Fängt alles von vorne an.

                              DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                              1 Reply Last reply
                              0
                              • SKBS SKB

                                @spacerx Hier hast Du, denke ich, einen Denkfehler, wenn Du um 23:59 alles "Tagesabschlüsse" fährst.

                                Denn die Zeit zwischen 23:59 und 00:00 gehört eben noch zum gleichen Tag und wenn dann um 00:00 gespeichert wird, passt das. Dir würde der Verbrauch von 23:59 bis 00:00 zum nächsten Tag gebucht werden.

                                S Offline
                                S Offline
                                SpacerX
                                wrote on last edited by
                                #65

                                @skb damit hast du völlig recht. ist aber besser als wenn mir 15 Minuten fehlen weil ja alle 15min die Werte aktualisiert werden. Dann würde die Zeit von 23:45 bis 0:00 schon auf den nächsten Tag geschrieben werden. Jetzt mal nicht von deinem Skript sondern von InfluxDB weil ich nur Änderungen logge.

                                DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                                SKBS 1 Reply Last reply
                                0
                                • S SpacerX

                                  @skb damit hast du völlig recht. ist aber besser als wenn mir 15 Minuten fehlen weil ja alle 15min die Werte aktualisiert werden. Dann würde die Zeit von 23:45 bis 0:00 schon auf den nächsten Tag geschrieben werden. Jetzt mal nicht von deinem Skript sondern von InfluxDB weil ich nur Änderungen logge.

                                  SKBS Offline
                                  SKBS Offline
                                  SKB
                                  Developer Most Active
                                  wrote on last edited by SKB
                                  #66

                                  @spacerx Also bei den 15 Minuten wird ja 00, 15, 30, 45 und wieder 00 ausgeführt. Somit ist beim 5. Lauf der Rest drin. Es fehlt somit nichts.

                                  (Editiert)

                                  ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                                  Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                                  S 1 Reply Last reply
                                  0
                                  • SKBS SKB

                                    @spacerx Also bei den 15 Minuten wird ja 00, 15, 30, 45 und wieder 00 ausgeführt. Somit ist beim 5. Lauf der Rest drin. Es fehlt somit nichts.

                                    (Editiert)

                                    S Offline
                                    S Offline
                                    SpacerX
                                    wrote on last edited by
                                    #67

                                    @skb es fehlt auch nicht!

                                    Ich logge den Datenpunkt Gesamtverbrauch und das nur bei Änderung.
                                    Wenn das Skript den Verbrauch der letzten 15 Minuten vor 0:00 Uhr um 0:00Uhr schreibt wird 0:00 in die Datenbank geschrieben. 0:00 Uhr gehört unter InfluxDB nun mal zum nächsten Tag. Das führt sich zwar jeden Tag fort und man merkt es gar nicht richtig weil der Verbrauch um die Uhrzeit nicht so hoch ist.
                                    Doch stimmen dann die errechneten Werte vom Skript, die zweifelsohne stimmen, mit denen aus InfluxDB errechneten nicht überein.

                                    DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                                    SKBS 1 Reply Last reply
                                    0
                                    • S SpacerX

                                      @skb es fehlt auch nicht!

                                      Ich logge den Datenpunkt Gesamtverbrauch und das nur bei Änderung.
                                      Wenn das Skript den Verbrauch der letzten 15 Minuten vor 0:00 Uhr um 0:00Uhr schreibt wird 0:00 in die Datenbank geschrieben. 0:00 Uhr gehört unter InfluxDB nun mal zum nächsten Tag. Das führt sich zwar jeden Tag fort und man merkt es gar nicht richtig weil der Verbrauch um die Uhrzeit nicht so hoch ist.
                                      Doch stimmen dann die errechneten Werte vom Skript, die zweifelsohne stimmen, mit denen aus InfluxDB errechneten nicht überein.

                                      SKBS Offline
                                      SKBS Offline
                                      SKB
                                      Developer Most Active
                                      wrote on last edited by
                                      #68

                                      @spacerx Hier wäre der Datenpunkt "heute" eigentlich passender - so logge ich es. Dann stimmt es meiner Meinung nach.

                                      ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                                      Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                                      S 1 Reply Last reply
                                      0
                                      • SKBS SKB

                                        @spacerx Hier wäre der Datenpunkt "heute" eigentlich passender - so logge ich es. Dann stimmt es meiner Meinung nach.

                                        S Offline
                                        S Offline
                                        SpacerX
                                        wrote on last edited by SpacerX
                                        #69

                                        @skb wenn ich heute logge dann muss ich in InfluxDB bei Monatswerten jeden Tag mit add() zusammenzählen. Habe ich den Gesamtstand reicht egal ob Tag, Woche, Monat, oder was weiß ich ein einfaches difference().
                                        Ich hab vorher auch immer den Tageswert geloggt. Ich bin da nicht so richtig zurechtgekommen, schon weil ich aus dem Bucket mit Retention 1 Monat in ein anderes Bucket die Daten Downsample.

                                        Edit: Bei loggen von heute um 0:00 Uhr steht der Verbrauch dann einen Tag weiter im Bucket.

                                        DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                                        SKBS 1 Reply Last reply
                                        0
                                        • S SpacerX

                                          @skb wenn ich heute logge dann muss ich in InfluxDB bei Monatswerten jeden Tag mit add() zusammenzählen. Habe ich den Gesamtstand reicht egal ob Tag, Woche, Monat, oder was weiß ich ein einfaches difference().
                                          Ich hab vorher auch immer den Tageswert geloggt. Ich bin da nicht so richtig zurechtgekommen, schon weil ich aus dem Bucket mit Retention 1 Monat in ein anderes Bucket die Daten Downsample.

                                          Edit: Bei loggen von heute um 0:00 Uhr steht der Verbrauch dann einen Tag weiter im Bucket.

                                          SKBS Offline
                                          SKBS Offline
                                          SKB
                                          Developer Most Active
                                          wrote on last edited by
                                          #70

                                          @spacerx Logg' doch, was Du willst :D

                                          ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                                          Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                                          S 1 Reply Last reply
                                          1

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          297

                                          Online

                                          32.7k

                                          Users

                                          82.6k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe