Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. Energy v. gewollt mal abwesendem Shelly Plug S erfassen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Energy v. gewollt mal abwesendem Shelly Plug S erfassen

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      rallyecom last edited by

      Hallo in die Runde und wahrscheinlich das absolute Newbie-Problem...:

      Umfeld: iobroker mit vis auf Raspi4, Solaranlage auf dem Wohnmobil (mit eigenem Gridwechselrichter), AC-seitig mit Shelly Plug S, der eigentlich auch brav "Energy" aufsummiert. Das WLAN reicht bis auf den Stellplatz, Netzanschluss des Fahrzeugs über steckbare Leitung.

      Problem: Ab und an wird das Fahrzeug mal tagsüber benötigt. Wird jetzt der Plug S vom Stromnetz getrennt, dann verliert er den "Energy"-Wert und fängt nach dem Reboot diesen bei 0 wieder neu an aufzusummieren. Die Shelly-Cloud kriegt es hin, die Werte halbwegs korrekt auf den Tageszählwert zu rechnen - aber das nützt mir im iob erstmal nichts.

      Der iob bekommt bspw. als letzten Datenpunkt "223 Wh" vom Shelly-Adapter, dann geht der Shelly wegen Stromausfall (Stecker ziehen vor Abfahrt) ohne Warnung offline. Kommt das Fahrzeug jetzt zurück und der Stecker wird wieder eingesteckt, dann kommt als neuer Wert "0 Wh" vom Shelly, was die Berechnung des Tages-Solarertrages doch stark behindert.

      Meine Idee wäre jetzt, den Wert zyklisch (60s) in einen Datenpunkt zu schreiben, dann bei "online=false" den Wert einmalig in einen anderen Datenpunkt zu addieren (und an der Quelle zu nullen), der Mitternacht (nach Übernahme in "Energy_Bus_gestern") genullt wird und bei "online=true" (Rückkehr des Busses) aus diesem Additions-Hilfsdatenpunkt in den regulären "Energy_Bus_heute" zurückzuschreiben.

      Funktioniert das so? Hat schon mal jemand dieses Problem gehabt und gelöst?

      Grüße von Mirco, der zwar recht fit mit Shellys ist, aber im iob noch auf den ersten paar Metern ist...

      paul53 S 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @rallyecom last edited by paul53

        @rallyecom sagte: dann kommt als neuer Wert "0 Wh" vom Shelly

        Das kann man prüfen und den aktuellen Zählerstand in einen Startwert schreiben, auf den der Shelly-Wert addiert wird.

        Bild_2022-07-09_155733713.png

        Wert und vorheriger Wert(unter "Trigger"):

        Blockly_DP_Props.JPG

        1 Reply Last reply Reply Quote 0
        • S
          Stefi @rallyecom last edited by

          Gesetz dem Fall du bist ein wenig firm mit plain Javascript, kannst du auch den folgenden Code-Snippet verwenden

              var shellyEnergyId = "shelly.0.[...].Energy";
              var solarGesamtId = "0_userdata.0.solar.gesamt";
              var solarTempId = "0_userdata.0.solar.zwischenwert";
             
              createState(solarGesamtId,  0, {name: "PV-Erfassung Gesamt [Wh]", desc: "PV-Erfassung Gesamt [Wh]", type: "number", read: true, write: true, role: "value"});
              createState(solarTempId,  0, {name: "PV-Erfassung Zwischenwert [Wh]", desc: "PV-Erfassung Zwischenwert [Wh]", type: "number", read: true, write: true, role: "value"});  
          
              // Workaround für die Erfassung der PV Gesamtenergie
              on({id: shellyEnergyId, change: "any"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
          
                  if (value < oldValue) {
                      // Letzten Gesamtwert zwischenspeichern
                      var totalValue = getState(solarGesamtId).val;
                      setState(solarTempId, totalValue);
                  }
          
                  // Neuen Gesamtwert berechnen
                  var tempValue = getState(solarTempId).val;
                  setState(solarGesamtId, tempValue + value);
              });
          

          Du kannst natürlich auch das Blockly-Skript von @paul53 verwenden, allerdings birgt das die Gefahr, dass das nicht immer 100% richtig reagiert. Ich hatte es anfangs auch sorum (der "sonst"-Zweig tritt nur ein, wenn Wert exakt 0 (oder negativ) ist) und habe leider ein paar Momente verpasst, weil der Shelly als nächsten Wert manchmal 0,0023 o.ä. als ersten Wert gemeldet hat. Für meine Graphen lasse ich dann die Variable "solarGesamtId" historisieren und einspeisen.

          Hoffe das hilft ein wenig weiter.

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

            @stefi sagte: paar Momente verpasst, weil der Shelly als nächsten Wert manchmal 0,0023 o.ä. als ersten Wert gemeldet hat.

            Habe es oben berücksichtigt.

            S R 2 Replies Last reply Reply Quote 0
            • S
              Stefi @paul53 last edited by

              @paul53 said in Energy v. gewollt mal abwesendem Shelly Plug S erfassen:

              @stefi sagte: paar Momente verpasst, weil der Shelly als nächsten Wert manchmal 0,0023 o.ä. als ersten Wert gemeldet hat.

              Habe es oben berücksichtigt.

              Sehr cool 🙂

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

                @paul53 das sieht schon recht lecker aus, werde ich morgen mal testen. In der Tat könnten Startwerte über null auftreten, nämlich dann, wenn der Wechselrichter nach "Stecker rein" schneller mit der Produktion beginnt wie das WLAN mit dem connect establishing fertig ist.

                Nice ist, dass dein Skript nicht nur den Fall "Strom und WLAN weg" erfasst, sondern auch einen Geräteneustart allgemein. Dein Skript lässt sich für jeden "Zähl-Shelly" verwenden, der bei Reboot Demez bekommt...

                Danke!

                1 Reply Last reply Reply Quote 0
                • R
                  romestylez last edited by

                  @paul53 vielen Dank erst mal auch für deine ganzen anderen Scripte. Sehe deinen Namen hier an jeder Ecke 🐶

                  Ich habe es mal nachgebaut. Was mich wundert wieso vor "Wert" und "vorheriger Wert" ein weißer Pfeil ist. Eventuell gabs da mal nen Update ? Ich hoffe meins funktioniert trotzdem

                  9641dfcf-2605-4170-b778-3901c13e3fbe-image.png

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @romestylez last edited by

                    @romestylez sagte in Energy v. gewollt mal abwesendem Shelly Plug S erfassen:

                    Eventuell gabs da mal nen Update

                    vor Jahren!
                    diese Bausteine wurden in Beispiel-Blocklies sonst für selbst erstellte Variablen gehalten.

                    1 Reply Last reply Reply Quote 1
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    1.1k
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    5
                    8
                    784
                    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