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. JavaScript
  5. Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
134 Beiträge 24 Kommentatoren 22.9k Aufrufe 27 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.
  • H homecineplexx

    @paul53 danke, das weiß ich auch. allerdings wenn hier schon über ein Skript getratscht wird.....

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

    @homecineplexx sagte: wenn hier schon über ein Skript getratscht wird

    ..., das zwei Jahre alt ist.

    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

    H crunchipC 2 Antworten Letzte Antwort
    0
    • paul53P paul53

      @homecineplexx sagte: wenn hier schon über ein Skript getratscht wird

      ..., das zwei Jahre alt ist.

      H Offline
      H Offline
      homecineplexx
      schrieb am zuletzt editiert von
      #45

      @paul53 korrekt, aber es wird darüber gesprochen, weils scheinbar jemand in Verwendung hat, der den Sourceanalytix scheinbar nicht verwenden möchte ;-)

      S 1 Antwort Letzte Antwort
      0
      • H homecineplexx

        @paul53 korrekt, aber es wird darüber gesprochen, weils scheinbar jemand in Verwendung hat, der den Sourceanalytix scheinbar nicht verwenden möchte ;-)

        S Offline
        S Offline
        SpacerX
        schrieb am zuletzt editiert von
        #46

        @homecineplexx genau!

        Ich brauche nur die Absicherung das beim Reset des Shelly die Werte nicht weg sind. Auswertung dann über Grafana.

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

        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @homecineplexx sagte: wenn hier schon über ein Skript getratscht wird

          ..., das zwei Jahre alt ist.

          crunchipC Abwesend
          crunchipC Abwesend
          crunchip
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #47

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

          das zwei Jahre alt ist.

          Erstell-Datum: 08. Oktober 2021 | Update: 20. Juli 2022

          auch ich nutze zusätzlich das Script, da es mir bis heute nicht gelungen ist mit SA Problemlos den shelly zu loggen(obwohl ich SA schon 3 Jahre nutze)

          umgestiegen von Proxmox auf Unraid

          1 Antwort Letzte Antwort
          2
          • H homecineplexx

            @skb Hallo
            tolles Skript und ich hab nur kurz Mal drüber geschaut, aber ich glaub du hast einen Fehler drinnen.
            Und zwar liest du die shellyDps, shelly3EMDps, shelly3EMTotalDps, shelly3EMTotalReturned, shellyDpsName nur beim Start des Skripts ein. Dh sollte das Skript laufen und es kommt ein neuer Shelly hinzu, würdest du das gar nicht mitbekommen!!
            Oder hab ich da etwas übersehen?

            SKBS Offline
            SKBS Offline
            SKB
            Developer Most Active
            schrieb am zuletzt editiert von
            #48

            @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.

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

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

            H 1 Antwort Letzte Antwort
            0
            • H homecineplexx

              @skb sowas gehört ins GIT

              SKBS Offline
              SKBS Offline
              SKB
              Developer Most Active
              schrieb am zuletzt editiert von
              #49

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

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

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

              H 1 Antwort Letzte Antwort
              0
              • SKBS SKB

                @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.

                H Offline
                H Offline
                homecineplexx
                schrieb am zuletzt editiert von
                #50

                @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 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @homecineplexx sagte: sowas gehört ins GIT

                  Es gibt einen Adapter: Sourceanalytix.

                  SKBS Offline
                  SKBS Offline
                  SKB
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  1
                  • SKBS SKB

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

                    H Offline
                    H Offline
                    homecineplexx
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              -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
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • SKBS SKB

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

                                  I Offline
                                  I Offline
                                  IOBaer
                                  schrieb am zuletzt editiert von
                                  #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 Antworten Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #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 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

                                          509

                                          Online

                                          32.4k

                                          Benutzer

                                          81.6k

                                          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