Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      homecineplexx @paul53 last edited by

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

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @homecineplexx last edited by

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

        ..., das zwei Jahre alt ist.

        H crunchip 2 Replies Last reply Reply Quote 0
        • H
          homecineplexx @paul53 last edited by

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

          S 1 Reply Last reply Reply Quote 0
          • S
            SpacerX @homecineplexx last edited by

            @homecineplexx genau!

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

            1 Reply Last reply Reply Quote 0
            • crunchip
              crunchip Forum Testing Most Active @paul53 last edited by

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

              1 Reply Last reply Reply Quote 2
              • SKB
                SKB Developer Most Active @homecineplexx last edited by

                @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 1 Reply Last reply Reply Quote 0
                • SKB
                  SKB Developer Most Active @homecineplexx last edited by

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

                  H 1 Reply Last reply Reply Quote 0
                  • H
                    homecineplexx @SKB last edited by

                    @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

                    SKB 1 Reply Last reply Reply Quote 0
                    • SKB
                      SKB Developer Most Active @paul53 last edited by

                      @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 1 Reply Last reply Reply Quote 1
                      • H
                        homecineplexx @SKB last edited by

                        @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

                        SKB 1 Reply Last reply Reply Quote 0
                        • SKB
                          SKB Developer Most Active @homecineplexx last edited by SKB

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

                          1 Reply Last reply Reply Quote 1
                          • SKB
                            SKB Developer Most Active @homecineplexx last edited by

                            @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 1 Reply Last reply Reply Quote 0
                            • S
                              SpacerX @SKB last edited by

                              @skb Skript ist von Dir?

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

                              SKB 1 Reply Last reply Reply Quote 0
                              • SKB
                                SKB Developer Most Active @SpacerX last edited by

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

                                Spass beiseite - kannst Du gerne machen.

                                1 Reply Last reply Reply Quote 0
                                • H
                                  homecineplexx @SKB last edited by

                                  @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

                                  SKB 1 Reply Last reply Reply Quote -2
                                  • SKB
                                    SKB Developer Most Active @homecineplexx last edited by

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

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      IOBaer @SKB last edited by

                                      @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 Reply Quote 0
                                      • S
                                        SpacerX @IOBaer last edited by

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

                                        1 Reply Last reply Reply Quote 1
                                        • S
                                          SpacerX @IOBaer last edited by 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 SKB 3 Replies Last reply Reply Quote 2
                                          • I
                                            IOBaer @SpacerX last edited by 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 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            506
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            24
                                            134
                                            14632
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo