Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. ecoflow-connector-Script zur dynamischen Leistungsanpassung

NEWS

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

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

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

ecoflow-connector-Script zur dynamischen Leistungsanpassung

ecoflow-connector-Script zur dynamischen Leistungsanpassung

Scheduled Pinned Locked Moved JavaScript
1.6k Posts 127 Posters 741.2k Views 127 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.
  • W Waly_de

    @joppe und das hast du 100 % richtig verstanden genauso ist das Skript gedacht.

    W Offline
    W Offline
    Waly_de
    wrote on last edited by
    #1057

    Ich arbeite übrigens für mich gerade daran, dass Tibber Lade Modul aufzubohren.
    Im Moment kann es schon mittags den günstigsten Zeitpunkt feststellen, ermitteln, wie groß das Preis Delta zum abendlichen Höchstpreis ist und entscheiden, dass ab einem einstellbaren Delta der Akku auf einem gewissen Prozentsatz geladen wird. ( bei mir lohnt das erst ab circa 9 Cent Preisunterschied.)

    Der nächste Schritt ist, dass nächtliche preistief zu analysieren und die Wettervorhersage zu berücksichtigen, um zu entscheiden, wie voll der Akku geladen werden soll, damit noch genug Platz für die zu erwartende PV Energie ist.

    Besteht dann sowas hier allgemeines Interesse?

    Ich bin jetzt allerdings erst mal eine Woche im Urlaub. Danach geht’s dann weiter…😉

    J 1 Reply Last reply
    0
    • W Waly_de

      Ich arbeite übrigens für mich gerade daran, dass Tibber Lade Modul aufzubohren.
      Im Moment kann es schon mittags den günstigsten Zeitpunkt feststellen, ermitteln, wie groß das Preis Delta zum abendlichen Höchstpreis ist und entscheiden, dass ab einem einstellbaren Delta der Akku auf einem gewissen Prozentsatz geladen wird. ( bei mir lohnt das erst ab circa 9 Cent Preisunterschied.)

      Der nächste Schritt ist, dass nächtliche preistief zu analysieren und die Wettervorhersage zu berücksichtigen, um zu entscheiden, wie voll der Akku geladen werden soll, damit noch genug Platz für die zu erwartende PV Energie ist.

      Besteht dann sowas hier allgemeines Interesse?

      Ich bin jetzt allerdings erst mal eine Woche im Urlaub. Danach geht’s dann weiter…😉

      J Offline
      J Offline
      Joppe
      wrote on last edited by Joppe
      #1058

      @waly_de
      Sowas ähnliches habe ich schon im Homeassistant, funktioniert einwandfrei - nur leider bringt dir das wahrscheinlich nur wenig ^^
      Es fährt dann dein Script und meine HASS Logik mit unterschiedlichen Parametern an:

      FULLCHARGE - Schnell laden weil Strom billig - REGULATE OFF, dein Script speist nichts ein
      CHARGE - Langsam laden bis 50% weil Strom so halb billig oder nur kurze Tagesspitzen REGULATE OFF, dein Script speist nichts ein
      HOLD - Schalte REGULATE ab, regle also nicht, Akku wird auf Ladung gehalten (BackupReserve auf aktuellen Ladestand gesetzt)
      DISCHARGE - Entladen wie vom Script vorgesehen
      OVERCHARGE - Überschussladen (haut noch ned hin weil HASS in dem bezug schwer zu konfigurieren ist betreff der Laderegelung) -> Da hätte ich auf deine Funktion gehofft, bin noch am Coden aber so dolle is mein JS ned 😉

      Das ganze funktioniert ohne SmartSteckdose.
      Danke für die Antworten, dann muss ich jetzt nur noch schaffen die Steuerdaten zu setzen, das bringt er einfach nicht. Es kommt immer die Meldung dass
      0_userdata.0.ecoflow.app_1674681575638863874_SERIALNUMBER_thing_property_set.writeables.slowChgPower nicht gesetzt werden kann, auffällig ist auch dass der Wert zwar aktualisiert aber dann sofort wieder auf "0" gesetzt wird. Minimum ist aber 200. Da muss ich erst mal schauen.
      Die Idee ist ja scheinbar dass du einen Schalter umlegst und dann die Akkus zu laden beginnen, dann regelst du über die slowChgPower - hast du schon mal dran gedacht dass über die BackupReserve zu regeln anstatt über nen Schalter? So mache ich ich das, Vorteil ist dass du dir ne smarte Steckdose sparst die im Stromkreis hängt...bin da immer vorsichtig so viel Strom über so empfindliche Bauteile zu jagen...
      Aber, kommt mir grad, du hast ne Delta Max, die wird wahrscheinlich die 0W Ladeleistung unterstützen...dann hast die ganze problematik nicht..

      W 1 Reply Last reply
      0
      • J Joppe

        @waly_de
        Sowas ähnliches habe ich schon im Homeassistant, funktioniert einwandfrei - nur leider bringt dir das wahrscheinlich nur wenig ^^
        Es fährt dann dein Script und meine HASS Logik mit unterschiedlichen Parametern an:

        FULLCHARGE - Schnell laden weil Strom billig - REGULATE OFF, dein Script speist nichts ein
        CHARGE - Langsam laden bis 50% weil Strom so halb billig oder nur kurze Tagesspitzen REGULATE OFF, dein Script speist nichts ein
        HOLD - Schalte REGULATE ab, regle also nicht, Akku wird auf Ladung gehalten (BackupReserve auf aktuellen Ladestand gesetzt)
        DISCHARGE - Entladen wie vom Script vorgesehen
        OVERCHARGE - Überschussladen (haut noch ned hin weil HASS in dem bezug schwer zu konfigurieren ist betreff der Laderegelung) -> Da hätte ich auf deine Funktion gehofft, bin noch am Coden aber so dolle is mein JS ned 😉

        Das ganze funktioniert ohne SmartSteckdose.
        Danke für die Antworten, dann muss ich jetzt nur noch schaffen die Steuerdaten zu setzen, das bringt er einfach nicht. Es kommt immer die Meldung dass
        0_userdata.0.ecoflow.app_1674681575638863874_SERIALNUMBER_thing_property_set.writeables.slowChgPower nicht gesetzt werden kann, auffällig ist auch dass der Wert zwar aktualisiert aber dann sofort wieder auf "0" gesetzt wird. Minimum ist aber 200. Da muss ich erst mal schauen.
        Die Idee ist ja scheinbar dass du einen Schalter umlegst und dann die Akkus zu laden beginnen, dann regelst du über die slowChgPower - hast du schon mal dran gedacht dass über die BackupReserve zu regeln anstatt über nen Schalter? So mache ich ich das, Vorteil ist dass du dir ne smarte Steckdose sparst die im Stromkreis hängt...bin da immer vorsichtig so viel Strom über so empfindliche Bauteile zu jagen...
        Aber, kommt mir grad, du hast ne Delta Max, die wird wahrscheinlich die 0W Ladeleistung unterstützen...dann hast die ganze problematik nicht..

        W Offline
        W Offline
        Waly_de
        wrote on last edited by Waly_de
        #1059

        @joppe ich finde es immer klasse, wenn die Brücken geschlagen werden zwischen iobroker und HS … Aber in diesem Fall glaube ich auch, dass ich das besser komplett in iobroker abbilden sollte.

        Was den Schalter angeht, ist es dem Skript eigentlich egal was du da einsetzt. Bei der Delta Max Gibt es auch einen Softwareparameter, der die Lade Leistung auf null setzen kann. Das hat aber bei mir nicht so sauber funktioniert, und ich vertraue einem Schalter mehr, auch weil er unabhängig die Leistung messen kann. Aber wenn du das alles über die Delta regeln möchtest, musst du nur den entsprechenden Datenpunkt Schalter angeben.

        J 1 Reply Last reply
        0
        • W Waly_de

          @joppe ich finde es immer klasse, wenn die Brücken geschlagen werden zwischen iobroker und HS … Aber in diesem Fall glaube ich auch, dass ich das besser komplett in iobroker abbilden sollte.

          Was den Schalter angeht, ist es dem Skript eigentlich egal was du da einsetzt. Bei der Delta Max Gibt es auch einen Softwareparameter, der die Lade Leistung auf null setzen kann. Das hat aber bei mir nicht so sauber funktioniert, und ich vertraue einem Schalter mehr, auch weil er unabhängig die Leistung messen kann. Aber wenn du das alles über die Delta regeln möchtest, musst du nur den entsprechenden Datenpunkt Schalter angeben.

          J Offline
          J Offline
          Joppe
          wrote on last edited by
          #1060

          @waly_de
          Das kriegen wir schon hin 😉 Ein mächtiges Tool hast du da jedenfalls auf die Beine gestellt, bin nach wie vor schwer beeindruckt

          1 Reply Last reply
          1
          • J Joppe

            @audiofreak
            Ineffizient ja, aber ich will die 500W ja nicht verschenken.
            Ich dachte mir hier wird das folgende Scenario abgedeckelt:

            Sagen wir mal ich hab 2 Balkonkraftwerke mit je 800W.
            Eines speist über einen Hoymiles direkt in die Steckdose
            Das andere über eine Powerstream in den Akku UND die Steckdose

            Sagen wir mal die SolarLeistung liegt aktuell bei 600W, mein Verbrauch bei 200W.

            Die erste Anlage wird jetzt die 200W Verbrauch bedienen und 400W direkt ins Netz einspeisen.
            Die zweite Anlage nimmt 600W und steckt sie in den Akku, Powerstream Ausgang bei 0W.

            Jetzt möchte ich aber die 400W, die ich in unserem Scenario ins Netz haue aber auch in meinem Akku haben.
            Was mache ich jetzt? Aktuell sage ich der Delta Pro über HomeAssistant sie soll bitte die AC Ladung aktivieren, mit einer Ladeleistung von 400W.
            Nun lade ich die Delta Pro mit 400W AC und 600W DC, also 1000W (minus Verlust). Meine Einspeisung liegt jetzt bei 0W.
            Über HASS ist das gelinde gesagt besch. zu "programmieren", es geht nur so halb bei mir. Muss immer wieder manuell nach regeln. Umso mehr habe ich mich gefreut als ich hier im Script sah dass ein ein Update gab mit ExcessCharge und dachte dass es genau mein UseCase wäre...und du, @Audiofreak meinst dass dem nicht so sei? Also nur mit einer Powerstation nutzbar?
            Danke für die Antworten!

            A Offline
            A Offline
            Audiofreak
            wrote on last edited by
            #1061

            @joppe

            Ja mit einer getrennten PV mit so viel Überschuss, sieht es natürlich anders aus.
            Da in der Schweiz nur 600W eingespeist werden darf ohne die ganze Installation abnehmen zu müssen, muss ich mit einem Wechselrichter klarkommen.

            1 Reply Last reply
            0
            • W Waly_de

              @tom-goos normalerweise taucht diese Fehlermeldung nur beim Starten des Skripts auf. Wenn vorher noch keine Daten vom Smartmeter erfasst wurden. Wenn du also das Skript startest und kurze wartest, sollte die Fehlermeldung nicht mehr auftreten und das Skript ganz normal arbeiten.
              wenn du in den Zuständen siehst, dass sich Realpower regelmäßig ändert ist das ein gutes Zeichen

              Bitte bei allen Installationen immer prüfen, ob der History Adapter installiert wurde und funktioniert .

              Tom GoosT Offline
              Tom GoosT Offline
              Tom Goos
              wrote on last edited by
              #1062

              @waly_de Danke für die Info. Den History Adapter hatte ich gar nicht aktiv. Jetzt ist diese Meldung zwar weg und das scipt passt auch den Wert in der Ecoflow App an. Allerdings steht "setac" aktuell bei 680 bzw 68W obwohl "realpower" um 110 schwankt. Ist dieser "Offeset" gewünscht oder stimmt da noch etwas an der Konfiguration nicht? Wenn ich den Fernseher einschalte springt realpower auf 160W, und setac langsam auf 112.

              W 1 Reply Last reply
              0
              • Tom GoosT Tom Goos

                @waly_de Danke für die Info. Den History Adapter hatte ich gar nicht aktiv. Jetzt ist diese Meldung zwar weg und das scipt passt auch den Wert in der Ecoflow App an. Allerdings steht "setac" aktuell bei 680 bzw 68W obwohl "realpower" um 110 schwankt. Ist dieser "Offeset" gewünscht oder stimmt da noch etwas an der Konfiguration nicht? Wenn ich den Fernseher einschalte springt realpower auf 160W, und setac langsam auf 112.

                W Offline
                W Offline
                Waly_de
                wrote on last edited by
                #1063

                @tom-goos Ja das ist gewünscht und lässt sich mit : BasePowerOffset einstellen

                1 Reply Last reply
                0
                • W Waly_de

                  @accu das höre ich jetzt auch zum ersten Mal. Das wäre natürlich nicht förderlich. Allerdings müsste mein Power Stream dann längst gestorben sein, denn grob überschlagen habe ich mindestens 200000-400000 mal den Wert gesetzt seit Juli 2023.
                  Nichts, desto trotz sollte man mit den Jungs und Mädels von ECO-FLOW sprechen. Durch eine Firmware Änderung könnte man vermeiden, dass jedes einzelne Mal in das EEPROM geschrieben wird. wenn du da sowieso in Kontakt bist, regt das doch mal an.
                  Was ich tun könnte, wäre das Intervall mit dem geschrieben wird zu verlängern. Außerdem könnte ich ein Modulo einführen. Also den Wert nur in bestimmten Stufen, zum Beispiel 50 W ändern, und auch nur dann schreiben, wenn sich der aktuelle Messwert von dem zuvor geschriebenen unterscheidet. Damit könnte man die Frequenz mit der in das EEPROM geschrieben wird deutlich reduzieren.
                  Das alles geht natürlich auf Kosten der Reaktionsfähigkeit und Genauigkeit des Skripts. Das wäre wirklich schade.

                  M Offline
                  M Offline
                  Mortarvan
                  wrote on last edited by
                  #1064

                  @waly_de Hi, vielen Dank für eure wertvolle Recherche 🙂 Ist denn geklärt, dass das setzen der Einspeiseleistung im PS beliebig oft vorgenommen werden kann (Im Gegensatz zur Delta)? Ich würde in dem Fall gerne den MinValueMin auf 1 Minute oder vielleicht sogar auf 30 Sekunden setzen. Ich traue mich das nur nicht, weil mir unklar ist, ob der PS dadurch Schaden nimmt

                  1 Reply Last reply
                  0
                  • W Waly_de

                    @guhfy9966 das sieht korrekt aus. Allerdings ist MaxPower so ziemlich die einzige variable, die im Moment während der Laufzeit nicht zu verändern ist. das ist auch mit Vorsicht zu genießen, denn MaxPower reguliert auch die Batterieladung.

                    Was genau möchtest du denn erreichen, indem du diese Variable änderst?

                    A Offline
                    A Offline
                    aherby
                    wrote on last edited by
                    #1065

                    @waly_de Guten Morgen und willkommen zurück.
                    Ich will mich auch mit der "externConfig" mal beschäftigen.
                    Kann ich auch folgende Werte extern ändern?

                    lowBatLimitPozOn: 5 
                    lowBatLimitPozOff: 10
                    lowBatLimit: 150                 
                    

                    Ich würde gern je nach Jahreszeit oder Prognose mindestens den Wert "lowBatLimit" ändern.

                    W 1 Reply Last reply
                    0
                    • DaDue-maxD Offline
                      DaDue-maxD Offline
                      DaDue-max
                      wrote on last edited by
                      #1066

                      Hallo Ecoflow/Iobroker-Community, wir hatten hier im letzten Jahr mehrfach Temperatur-/WLAN-Disconnectprobleme der Powerstream diskutiert. Update von meiner Seite: Ecoflow hat die Powerstream HW bei mir ausgetauscht. Seid diesem Zeitpunkt habe ich mit der HW kein WLAN-Disconnect, auch wenn die Powerstream unter Vollast mit über 50 grad läuft.

                      1 Reply Last reply
                      1
                      • A Offline
                        A Offline
                        Accu
                        wrote on last edited by
                        #1067

                        @Waly_de noch eine Frage zum Skript. Bzw. ein paar Verbesserungsvorschläge:

                        • Kann man irgendwie verhindern, dass der PS einspeist, während die Delta Pro am AC Ladeeingang läd? Hatte paar mal die Situation dass sich das überschnitten hat und er PS mit 200W eingepeist hat und die DP fröhlich über AC geladen hat und die 200W in ihre Berechung mit einbezogen hatte über den Watt-Wert der vom Zählerschrank Sonoff kam
                        • kann man irgendwie noch einen Schalter / Logik mit einbauen, die das AC Laden komplett ausschaltet, wenn vorne an dem AC Ausgang der Delta Pro ein Gerät z.B. Trockner betrieben wird. Hintergrund ist dass sich dann die Verbräuche addieren. Use Case: meine Frau steck häufig ungefragt nen Trockner (ca. 400-700W) vorne an die Steckdose der DP. Was blöd ist wenn sie gerade mit 500W hinten läd, weil ich dann plötzlich einen Gesamtverbrauch von 1200 W habe. Kann man daher den AC Ladeeingang abschalten, wenn vorne an der DP der AC Knopf gedrückt wird?
                        W 1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          maik1007
                          wrote on last edited by
                          #1068

                          Guten Abend. Als erstes mal das ist ein super Script. Es ist etwas träge aber das liegt wohl an den Einstellungen und den Daten die bei mir vom Tibber Pulse kommen. Da ich komplett neu bin bei IoBroker und das auch nur wegen dem Script hoffe ich das man mir evtl hier helfen kann. Wie schon geschrieben bin ich bei Tibber und ich verwende meinen Powerstream mit Delta 2 Max um die teuren Stunden mit SolarStrom vom BKW zu reduzieren. Das Script ist super nur weis ich nicht wie ich es gescheit einsetzten kann. Die Situation ist die das am besten am Abend mein Speicher per Sonne voll geladen ist und in den teuren Stunden gespeißt wird. Vermutlich ist das Script nicht für so ein Szenario gedacht. Momentan mach ich es komplett über die EcoFlow App wo natürlich einiges an Strom vorbei geht der nicht erfasst wird. Dafür hatte ich gehofft mit dem Script arbeiten zu können. Leider fehlt mir aber dafür der Fernzugriff und/oder eine Möglichkeit das Script per Zeitplan zu steuern. Wenn jemand eine Idee oder Lösungsvorschlag hat wäre ich sehr dankbar. So kann ich es leider nicht einsetzen auch wenn es super funktioniert.

                          W 1 Reply Last reply
                          0
                          • A aherby

                            @waly_de Guten Morgen und willkommen zurück.
                            Ich will mich auch mit der "externConfig" mal beschäftigen.
                            Kann ich auch folgende Werte extern ändern?

                            lowBatLimitPozOn: 5 
                            lowBatLimitPozOff: 10
                            lowBatLimit: 150                 
                            

                            Ich würde gern je nach Jahreszeit oder Prognose mindestens den Wert "lowBatLimit" ändern.

                            W Offline
                            W Offline
                            Waly_de
                            wrote on last edited by
                            #1069

                            @aherby ja das sollte problemlos gehen.

                            1 Reply Last reply
                            0
                            • A Accu

                              @Waly_de noch eine Frage zum Skript. Bzw. ein paar Verbesserungsvorschläge:

                              • Kann man irgendwie verhindern, dass der PS einspeist, während die Delta Pro am AC Ladeeingang läd? Hatte paar mal die Situation dass sich das überschnitten hat und er PS mit 200W eingepeist hat und die DP fröhlich über AC geladen hat und die 200W in ihre Berechung mit einbezogen hatte über den Watt-Wert der vom Zählerschrank Sonoff kam
                              • kann man irgendwie noch einen Schalter / Logik mit einbauen, die das AC Laden komplett ausschaltet, wenn vorne an dem AC Ausgang der Delta Pro ein Gerät z.B. Trockner betrieben wird. Hintergrund ist dass sich dann die Verbräuche addieren. Use Case: meine Frau steck häufig ungefragt nen Trockner (ca. 400-700W) vorne an die Steckdose der DP. Was blöd ist wenn sie gerade mit 500W hinten läd, weil ich dann plötzlich einen Gesamtverbrauch von 1200 W habe. Kann man daher den AC Ladeeingang abschalten, wenn vorne an der DP der AC Knopf gedrückt wird?
                              W Offline
                              W Offline
                              Waly_de
                              wrote on last edited by
                              #1070

                              @accu sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                              @Waly_de noch eine Frage zum Skript. Bzw. ein paar Verbesserungsvorschläge:

                              • Kann man irgendwie verhindern, dass der PS einspeist, während die Delta Pro am AC Ladeeingang läd? Hatte paar mal die Situation dass sich das überschnitten hat und er PS mit 200W eingepeist hat und die DP fröhlich über AC geladen hat und die 200W in ihre Berechung mit einbezogen hatte über den Watt-Wert der vom Zählerschrank Sonoff kam

                              Wenn du das AC laden der Delta über die exceed power Funktion des Scriptes steuerst, sollte das nicht passieren. Es wird ja nur dann AC zugeschaltet wenn ein Überschuss da ist, also die PS nicht einspeist. Kann also höchstes kurzzeitig passieren. Die Reaktionsgeschwindigkeit kannst du mit den entsprechenden Parametern einstellen.

                              • kann man irgendwie noch einen Schalter / Logik mit einbauen, die das AC Laden komplett ausschaltet, wenn vorne an dem AC Ausgang der Delta Pro ein Gerät z.B. Trockner betrieben wird. Hintergrund ist dass sich dann die Verbräuche addieren. Use Case: meine Frau steck häufig ungefragt nen Trockner (ca. 400-700W) vorne an die Steckdose der DP. Was blöd ist wenn sie gerade mit 500W hinten läd, weil ich dann plötzlich einen Gesamtverbrauch von 1200 W habe. Kann man daher den AC Ladeeingang abschalten, wenn vorne an der DP der AC Knopf gedrückt wird?

                              Hmm das mit dem addieren verstehe ich nicht.
                              Was am AC der Delta angeschlossen ist, wird aus der Batterie versorgt und dürfte daher nicht Gemessen und daher auch im Script nicht berücksichtigt werden. Wenn es 400 w Überschuss im Haushalt gibt, dann werden die 400 w zum
                              Laden der Delta verwendet, egal was am AC Ausgang entnommen wird. So sollte es zumindest sein…

                              A 1 Reply Last reply
                              0
                              • M maik1007

                                Guten Abend. Als erstes mal das ist ein super Script. Es ist etwas träge aber das liegt wohl an den Einstellungen und den Daten die bei mir vom Tibber Pulse kommen. Da ich komplett neu bin bei IoBroker und das auch nur wegen dem Script hoffe ich das man mir evtl hier helfen kann. Wie schon geschrieben bin ich bei Tibber und ich verwende meinen Powerstream mit Delta 2 Max um die teuren Stunden mit SolarStrom vom BKW zu reduzieren. Das Script ist super nur weis ich nicht wie ich es gescheit einsetzten kann. Die Situation ist die das am besten am Abend mein Speicher per Sonne voll geladen ist und in den teuren Stunden gespeißt wird. Vermutlich ist das Script nicht für so ein Szenario gedacht. Momentan mach ich es komplett über die EcoFlow App wo natürlich einiges an Strom vorbei geht der nicht erfasst wird. Dafür hatte ich gehofft mit dem Script arbeiten zu können. Leider fehlt mir aber dafür der Fernzugriff und/oder eine Möglichkeit das Script per Zeitplan zu steuern. Wenn jemand eine Idee oder Lösungsvorschlag hat wäre ich sehr dankbar. So kann ich es leider nicht einsetzen auch wenn es super funktioniert.

                                W Offline
                                W Offline
                                Waly_de
                                wrote on last edited by
                                #1071

                                @maik1007 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                                Guten Abend. Als erstes mal das ist ein super Script. Es ist etwas träge aber das liegt wohl an den Einstellungen und den Daten die bei mir vom Tibber Pulse kommen. Da ich komplett neu bin bei IoBroker und das auch nur wegen dem Script hoffe ich das man mir evtl hier helfen kann. Wie schon geschrieben bin ich bei Tibber und ich verwende meinen Powerstream mit Delta 2 Max um die teuren Stunden mit SolarStrom vom BKW zu reduzieren. Das Script ist super nur weis ich nicht wie ich es gescheit einsetzten kann. Die Situation ist die das am besten am Abend mein Speicher per Sonne voll geladen ist und in den teuren Stunden gespeißt wird. Vermutlich ist das Script nicht für so ein Szenario gedacht. Momentan mach ich es komplett über die EcoFlow App wo natürlich einiges an Strom vorbei geht der nicht erfasst wird. Dafür hatte ich gehofft mit dem Script arbeiten zu können. Leider fehlt mir aber dafür der Fernzugriff und/oder eine Möglichkeit das Script per Zeitplan zu steuern. Wenn jemand eine Idee oder Lösungsvorschlag hat wäre ich sehr dankbar. So kann ich es leider nicht einsetzen auch wenn es super funktioniert.

                                Die Idee ist gut! Das ist tatsächlich im Moment so nicht vorgesehen und implementiert, aber relativ einfach umzusetzen. Ich würde vorschlagen, du befasst dich einmal mit der Funktion von blockys hier im iobroker. Damit kannst du ganz einfach und ohne Programmierkenntinisse einen Zeitplan erstellen und die Skript Regelung ein und ausschalten, aber zum Beispiel auch auf den Tibberpreis reagieren und das Skript dann starten lassen, wenn der Preis gerade hoch ist.
                                Der Zustand zum Ein- und Ausschalten des Skripts heißt Regulate

                                M 1 Reply Last reply
                                0
                                • Thomas WellerT Offline
                                  Thomas WellerT Offline
                                  Thomas Weller
                                  wrote on last edited by
                                  #1072

                                  Hallo @Waly_de

                                  hab bei mir seit gestern auch das Eproom-Schutz Skript laufen. Funktioniert so perfekt wie das alte.

                                  Danke!!

                                  Für mich wäre noch folgende Funktionen wichtig:

                                  • Habe am AC Ausgang der DeltaPro die Heizung der Wasserbetten da diese immer ~300Watt ganz kurz ziehen. Das Skript regelt das natürlich nicht raus in dieser Geschwindigkeit und es kommt zu 0,5-1kWh Netzbezug über Nacht..
                                    Nun besteht aber die Gefahr dass die Delta Pro leer läuft im Winter (Lade nur über ShellySchalter per AC auf).
                                    Von daher wäre eine Funktion gut die sagt "IMMER bei <5% SOC Laden bis 10% das die AC-Versorgung immer gewährleistet ist.

                                  • Vorbereitend für eine WallboxSteuerung wäre es Super wenn ich in IOBroker einen Wert hätte der nach deinem Skript den weiterhin vorhandenen Überschuss im Hause darstellt.
                                    Zum Beispiel: 12.000Watt Überschuss abzgl. 1.200Watt AC-Ladeleistung = 10.800Watt weithin Überschuss für z.B.: Wallbox

                                  W 1 Reply Last reply
                                  0
                                  • Thomas WellerT Thomas Weller

                                    Hallo @Waly_de

                                    hab bei mir seit gestern auch das Eproom-Schutz Skript laufen. Funktioniert so perfekt wie das alte.

                                    Danke!!

                                    Für mich wäre noch folgende Funktionen wichtig:

                                    • Habe am AC Ausgang der DeltaPro die Heizung der Wasserbetten da diese immer ~300Watt ganz kurz ziehen. Das Skript regelt das natürlich nicht raus in dieser Geschwindigkeit und es kommt zu 0,5-1kWh Netzbezug über Nacht..
                                      Nun besteht aber die Gefahr dass die Delta Pro leer läuft im Winter (Lade nur über ShellySchalter per AC auf).
                                      Von daher wäre eine Funktion gut die sagt "IMMER bei <5% SOC Laden bis 10% das die AC-Versorgung immer gewährleistet ist.

                                    • Vorbereitend für eine WallboxSteuerung wäre es Super wenn ich in IOBroker einen Wert hätte der nach deinem Skript den weiterhin vorhandenen Überschuss im Hause darstellt.
                                      Zum Beispiel: 12.000Watt Überschuss abzgl. 1.200Watt AC-Ladeleistung = 10.800Watt weithin Überschuss für z.B.: Wallbox

                                    W Offline
                                    W Offline
                                    Waly_de
                                    wrote on last edited by
                                    #1073

                                    @thomas-weller sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                                    Hallo @Waly_de

                                    hab bei mir seit gestern auch das Eproom-Schutz Skript laufen. Funktioniert so perfekt wie das alte.

                                    Danke!!

                                    Für mich wäre noch folgende Funktionen wichtig:

                                    • Habe am AC Ausgang der DeltaPro die Heizung der Wasserbetten da diese immer ~300Watt ganz kurz ziehen. Das Skript regelt das natürlich nicht raus in dieser Geschwindigkeit und es kommt zu 0,5-1kWh Netzbezug über Nacht..
                                      Nun besteht aber die Gefahr dass die Delta Pro leer läuft im Winter (Lade nur über ShellySchalter per AC auf).
                                      Von daher wäre eine Funktion gut die sagt "IMMER bei <5% SOC Laden bis 10% das die AC-Versorgung immer gewährleistet ist.

                                    Das würde ich auch extern über ein blocky lösen. Hat ja nicht direkt mit der Regelung zu tun und ist sehr einfach und schnell zusammengeklickt 😉

                                    • Vorbereitend für eine WallboxSteuerung wäre es Super wenn ich in IOBroker einen Wert hätte der nach deinem Skript den weiterhin vorhandenen Überschuss im Hause darstellt.
                                      Zum Beispiel: 12.000Watt Überschuss abzgl. 1.200Watt AC-Ladeleistung = 10.800Watt weithin Überschuss für z.B.: Wallbox

                                    Reicht Dir dafür nicht der Wert deines Smartmeters ? Der wird ja dann negativ und zeigt genau das an was du möchtest…

                                    Thomas WellerT 1 Reply Last reply
                                    0
                                    • W Waly_de

                                      So, meine Anbindung läuft jetzt seit einigen Tagen sauber. Daher spendiere ich dem Skript mal einen eigenen Thread.

                                      Anbei findet ihr ein Skript, das eine Verbindung zwischen euren ecoflow-Geräten und ioBroker herstellen kann. Dabei nutzt es die gleiche Schnittstelle wie die ecoFlow App. Ihr benötigt lediglich eure Zugangsdaten zur App und die Seriennummern eurer Geräte, um dieses Skript nutzen zu können. Alle bekannten übermittelten Daten werden in ioBroker als Zustände angelegt. Viele davon sind noch unbekannt. Wenn ihr herausfindet, was sich hinter den unbekannten Daten verbirgt, kann ich die Zustandsnamen anpassen.

                                      Achtung: Der ecoflow-Server sendet unfassbar viele Nachrichten. Wenn ihr mehrere Geräte habt, kann dies euer System stark belasten und sogar zu Abstürzen führen. Vielleicht bekommt Ihr auch diese Meldung und das Script wird beendet:

                                       [error]: javascript.0 (5490) Script script.js.EcoFlow is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
                                      

                                      Daher empfehle ich, nicht alle Geräte dauerhaft zu abonnieren (dies kann über einen Parameter in der Einstellungssektion festgelegt werden). Es werden nur die PowerStreams benötigt, um die Einspeiseleistung anpassen zu können.
                                      Sonst kann dieser Grenzwert aber auch in den Einstellungen der Javascript-Instanz heraufgesetzt werden. 3000 dürfte für die meisten Szenarien reichen. (Siehe Screenshot weiter unten. Der Wert befindet sich unten links)

                                      Damit kommen wir zur eigentlichen interessanten Funktion des Skripts:
                                      Wenn ihr ein Smartmeter habt, das euren aktuellen Stromverbrauch in Echtzeit anzeigen kann, könnt ihr es an ioBroker anbinden. Informationen dazu findet ihr im Netz.

                                      Hier hab ich das Ding gekauft (Wenn ihr über die Links kauft, bekomme ich ein paar Cent Provision ab ;-)):
                                      Hichi Wifi, IR Lesekopf für Stromzähler
                                      https://ebay.us/3X1pkH
                                      Der Verkäufer hat auch ein tolles Video gemacht, wie man es einrichtet 😉

                                      Es funktionieren aber auch viele andere Zähler wie z.B.:
                                      Der Shelly 3EM

                                      Tibber-Kunden mit Pulse empfehle ich die lokale Einbindung des Pulse als Smartmeter mit meinem Script:
                                      https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

                                      Das Skript passt dann die Einspeiseleistung des PowerStream dynamisch an, sodass möglichst der gesamte Verbrauch durch die Einspeisung gedeckt wird, aber nichts ins Netz verschenkt wird. Erst wenn die Batterie voll geladen ist, wird die gesamte Leistung ins Netz eingespeist (wenn ihr das möchtet).

                                      Das Smartmeter muss den aktuellen Verbrauch möglichst in Echtzeit und in der Einheit Watt in einem Objekt von IOBroker zur Verfügung stellen. Im Script muss dann nur noch der Pfad zu diesem Objekt unter "SmartmeterID:" eingetragen werden. Am einfachsten geht das über die Adminoberfläche von IOBroker. Klickt auf Objekte und sucht das Objekt eures Smartmeters mit dem "Watt"-Wert im Objektbaum:
                                      Bildschirmfoto 2023-09-04 um 09.55.08.jpg
                                      Wenn Ihr auf das markierte Symbol klickt, ist der Pfad in euerer Zwischenablage gespeichert.
                                      Jetzt müsst Ihr ihn nur noch hinter "SmartmeterID:" im Script einfügen. Achtet darauf, dass Ihr es zwischen die "" einfügt.
                                      Wenn alles geklappt hat, der Pfad stimmt und das Script läuft, solltet Ihr unter Objekte: "0_userdata.0.ecoflow.RealPower" sehen, dass sich dieser Wert regelmäßig anpasst.

                                      Es können mehrere PowerStreams konfiguriert werden. Im Moment wird jedoch nur der erste in der Konfiguration gesteuert. Ich habe zum Beispiel zwei PowerStreams, einen mit und einen ohne Batterie. Dadurch steht tagsüber mehr Leistung zum Laden der Batterie zur Verfügung. Die Daten werden vom Skript verwendet, um die optimale Einspeiseleistung zu berechnen. In Zukunft könnten auch mehrere PowerStreams gesteuert werden.

                                      Nochmals vielen Dank an alle hier im Forum, die mit Ihrer Arbeit die Anbindung erst möglich gemacht haben!
                                      Ursprünglicher Beitrag: https://forum.iobroker.net/topic/54929/adapter-für-ecoflow-einbindung/

                                      Wichtig: Zur Installation müssen 2 Module installiert werden. Einfach in den Einstellungen der Javascriptinstanz unter Zusätzliche Module die beiden Namen eintragen und speichern ("mqtt" und "protobufjs")

                                      Bildschirmfoto 2023-07-17 um 10.56.49.jpg

                                      Erweiterungen:
                                      Tibber Modul
                                      Kann als eigenes, neues Script neben dem Hauptscript angelegt werden.

                                      //*************************************************************
                                      // Tibber Modul
                                      //*************************************************************
                                      // Schaltet die Regelung der Powerstation ab, wenn der Strom billig ist 
                                      // und einen beliebigen Schalter zum Aktivieren der AC-Ladung ein, bis die Batterie 
                                      // den durch der "BatMax" festgelegten Ladestand in % erreicht hat
                                      // 
                                      // Diese Parameter aus dem Hauptscript sind wichtig:
                                      // RegulationOffPower: -2 // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
                                      // RegulationState: "Regulate" // Erzeugt der State zum Ein und Aus-Schalten der Regulation.
                                      //
                                      // Das Script versucht selbst die ID's für den TibberStatus und den Batteriestand zu ermitteln.
                                      // Wenn das nicht klappt bitte einfach die richtigen ID's hinter "batSocID" und "tibberID" angeben.
                                      //
                                      //*************************************************************
                                      
                                      //*************************************************************
                                      // Konfiguration laden, wenn nicht im Originalscript eingefügt
                                      //*************************************************************
                                      var ConfigData = {
                                          statesPrefix: '0_userdata.0.ecoflow',
                                          RegulationState: "Regulate"
                                      }
                                      if (typeof ConfigData.email === 'undefined') {
                                          try {
                                              let tempConfigData = getState("0_userdata.0.ecoflow.Settings.ConfigData").val
                                              if (typeof tempConfigData !== 'object' && tempConfigData !== null) {
                                                  tempConfigData = JSON.parse(tempConfigData)
                                              }
                                              if (typeof tempConfigData === 'object' && tempConfigData !== null) {
                                                  if (tempConfigData.email !== undefined) {
                                                      ConfigData = tempConfigData;
                                                      //log("wurde geladen als object")
                                                  }
                                              }
                                          } catch (error) {
                                              log("Konfiguration wurde nicht geladen: " + error.message)
                                          }
                                      }
                                      
                                      /***************************************
                                      **********  YOUR DATA HERE  ************ 
                                      ****************************************/
                                      var tibberConfig = {
                                          BatMax: 99,                                  //Bei diesem Ladestand stoppt die AC-Ladung und das Script wird wieder eingeschaltet 
                                          BatMin: 95,                                  //Der Ladestand der Batterie muss kleiner sein als BatMin , damit der Akku per AC-Ladung geladen wird 
                                          SwitchID: "sonoff.0.NOUS-DVES_F0A844.POWER", //ID des Schalters, der die AC-Ladung einschaltet. "true" und "false" werden gesetzt
                                          LevelToSwitch: [                             //Hier die Werte definieren, bei denen die AC-Ladung eingeschaltet werden soll
                                              //"NORMAL",
                                              //"CHEAP",                                 //Einkommentieren falls gewüscht 
                                              "VERY_CHEAP"
                                          ],
                                      }
                                      //***************************************/
                                      // Nur angeben, wenn automatische Ermittlung fehlschlägt
                                      //***************************************/
                                      let batSocID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID").val
                                      let tibberID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID").val
                                      //***************************************/
                                      
                                      
                                      var idOK = false
                                      if (!batSocID || !tibberID) {
                                          log("Versuche die IDs für Tibber und Batterielevel zu finden")
                                          $("tibberlink.*.Homes.*.CurrentPrice.level").each(function (id, i) {
                                              tibberID = id
                                              createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID", tibberID, false)
                                              log("TibberID gefunden und gespeichert:" + id)
                                          })
                                          $(ConfigData.statesPrefix + ".app_device_property_*.data.InverterHeartbeat.batSoc").each(function (id, i) {
                                              if (getState(id).val > 0) {
                                                  batSocID = id
                                                  createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID", batSocID, false)
                                                  log("batSocID gefunden und gespeichert:" + id)
                                              }
                                          })
                                          if (!batSocID || !tibberID) {
                                              log("Fehler bei der Ermittlung der IDs. Bitte händisch ins Script eintragen", 'error')
                                          } else {
                                              idOK = true
                                          }
                                      } else {
                                          idOK = true
                                      }
                                      if (idOK) {
                                          checkTibber()
                                          on({ id: tibberID, change: "ne" }, function (obj) {
                                              //log("Tibber Modul. tibberID Event:" + obj.state.val)
                                              checkTibber()
                                          });
                                          on({ id: batSocID, change: "ne" }, function (obj) {
                                              //log("Tibber Modul. batSocID Event:" + obj.state.val + "%")
                                              checkTibber()
                                          });
                                      }
                                      function checkTibber() {
                                          if (tibberID && batSocID) {
                                              const RegulateID = ConfigData.statesPrefix + "." + ConfigData.RegulationState
                                              let priceLevel = getState(tibberID).val;
                                              let batsoc = Number(getState(batSocID).val)
                                              let OldRegulate = toBoolean(getState(RegulateID).val)
                                              //log("Tibber Preislevel: " + priceLevel + " OldRegulate: " + OldRegulate + " batsoc: " + (batsoc))
                                              if ((tibberConfig.LevelToSwitch.includes(priceLevel))) {
                                                  if (OldRegulate) {
                                                      if (batsoc <= tibberConfig.BatMin) {
                                                          setState(RegulateID, false);  // Regulierung aus
                                                          setState(tibberConfig.SwitchID, true) //Schalter einschalten
                                                          log("Script abgeschaltet AC-Ladung Ein, weil priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                      }
                                                  } else {
                                                      if (batsoc >= tibberConfig.BatMax) {
                                                          setState(RegulateID, true);  // Regulierung an
                                                          setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                                                          log(" Batterie bei BatMax. Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                      }
                                                  }
                                              } else {
                                                  if (!OldRegulate) {
                                                      setState(RegulateID, true);  // Regulierung an
                                                      setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                                                      log("Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                  }
                                              }
                                          } else {
                                              //log("checkTibber skip. batsocID und/oder tibberID fehlen.")
                                          }
                                      }
                                      //*************************************************************
                                      

                                      Tibber-Pulse als Smartmeter nutzen und lokal auslesen:
                                      https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

                                      Unterstütze das Projekt 'ecoflow-connector'
                                      Wenn dir das Script zur dynamischen Leistungsanpassung für den IObroker gefällt und du es nützlich findest, ziehe bitte in Erwägung, eine kleine Spende via PayPal zu hinterlassen.
                                      Jeder Beitrag hilft, das Projekt am Laufen zu halten und weitere Updates zu ermöglichen.
                                      Danke für deine Unterstützung!
                                      Jetzt Spenden

                                      Dieses Script wird bei Änderungen und Updates immer aktualisiert:
                                      Nutzung auf eigene Gefahr !

                                      [Bildschirmfoto 2024-03-29 um 09.37.51.jpg

                                      • Installation von ioBroker und Skript unter UNRAID in nur 12 Minuten
                                      • Video mit Erklärung der Basiskonfiguration
                                      • Video mit Erklärung zu AdditionalPower und Überschussladung

                                      Download (neues JS-Script in IOBroker anlegen und den Inhalt der Datei einfügen):

                                      • ecoflow-connector_v125.txt (13.05.2024)
                                      • 1.2.5.f1 Fork von Florian Vogt (25.06.2024)
                                        Feature hinzugefügt, um die Größe der Delta-Speicher beim Ausbalancieren der Entladeleistung zu berücksichtigen, damit die Batterien gleichmäßig geleert werden.
                                        Parameter battCapacity bei den Einstellungen für PowerStream = Kapazität der angeschlossenen Batterie in kWh, default = 1
                                        ecoflow-connector_v125_mod_FV.txt (25.06.2024)

                                      ältere Versionen:

                                      • ecoflow-connector_v124.txt (22.04.2024)
                                      • ecoflow-connector_v123.txt (21.02.2024)
                                      • ecoflow-connector_v121_05.01.2024.txt
                                      • ecoflow-connector_v12_.04.12.2023.txt
                                      • ecoflow-connector_v1162_04.11.2023.txt
                                      • ecoflow-connector_v115_02.10.2023.txt
                                      • ecoflow-connector_v1142_26.09.2023
                                      • ecoflow-connector_v1132_31.08.2023
                                      • ecoflow-connector_v112_17.08.2023)
                                      U Offline
                                      U Offline
                                      ub35bo
                                      wrote on last edited by
                                      #1074

                                      @waly_de Die Idee des Scripts, die Powerstream-Leistung dynamisch an die Leistung am Smartmeter anzupassen, finde ich toll.
                                      Nach einigem Hin und Her habe ich das Skript auch zum Laufen gebracht, so dass nur noch beim Starten keine Fehler- und nur noch zwei Warnmeldungen (
                                      warn javascript.0 (2173) at getStateCr (script.js.common.EcoFlow-Connector:2612:16
                                      bzw.
                                      warn javascript.0 (2173) at script.js.common.EcoFlow-Connector:2073:37
                                      ) auftauchen. Leider bleibt der gewünschte Erfolg aus.
                                      Die Verbindung zu meinem Discovergy-Smartmeter scheint zu funktionieren. Zumindest kommt es zu Fehlermeldungen, wenn ich die Login-Daten von Smartmeter und Powerstream verfälsche.
                                      Die SmartmeterID in W - allerdings mit zwei Nachkommastellen - habe ich als "discovergy.0.12345678.Power_Consumption" gefunden. Leider führt eine Veränderung des Wertes nicht zur Anpassung der Powerstreamleistung.
                                      Hat jemand eine Idee, wo der Fehler liegen könnte?

                                      W 1 Reply Last reply
                                      0
                                      • W Waly_de

                                        So, meine Anbindung läuft jetzt seit einigen Tagen sauber. Daher spendiere ich dem Skript mal einen eigenen Thread.

                                        Anbei findet ihr ein Skript, das eine Verbindung zwischen euren ecoflow-Geräten und ioBroker herstellen kann. Dabei nutzt es die gleiche Schnittstelle wie die ecoFlow App. Ihr benötigt lediglich eure Zugangsdaten zur App und die Seriennummern eurer Geräte, um dieses Skript nutzen zu können. Alle bekannten übermittelten Daten werden in ioBroker als Zustände angelegt. Viele davon sind noch unbekannt. Wenn ihr herausfindet, was sich hinter den unbekannten Daten verbirgt, kann ich die Zustandsnamen anpassen.

                                        Achtung: Der ecoflow-Server sendet unfassbar viele Nachrichten. Wenn ihr mehrere Geräte habt, kann dies euer System stark belasten und sogar zu Abstürzen führen. Vielleicht bekommt Ihr auch diese Meldung und das Script wird beendet:

                                         [error]: javascript.0 (5490) Script script.js.EcoFlow is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
                                        

                                        Daher empfehle ich, nicht alle Geräte dauerhaft zu abonnieren (dies kann über einen Parameter in der Einstellungssektion festgelegt werden). Es werden nur die PowerStreams benötigt, um die Einspeiseleistung anpassen zu können.
                                        Sonst kann dieser Grenzwert aber auch in den Einstellungen der Javascript-Instanz heraufgesetzt werden. 3000 dürfte für die meisten Szenarien reichen. (Siehe Screenshot weiter unten. Der Wert befindet sich unten links)

                                        Damit kommen wir zur eigentlichen interessanten Funktion des Skripts:
                                        Wenn ihr ein Smartmeter habt, das euren aktuellen Stromverbrauch in Echtzeit anzeigen kann, könnt ihr es an ioBroker anbinden. Informationen dazu findet ihr im Netz.

                                        Hier hab ich das Ding gekauft (Wenn ihr über die Links kauft, bekomme ich ein paar Cent Provision ab ;-)):
                                        Hichi Wifi, IR Lesekopf für Stromzähler
                                        https://ebay.us/3X1pkH
                                        Der Verkäufer hat auch ein tolles Video gemacht, wie man es einrichtet 😉

                                        Es funktionieren aber auch viele andere Zähler wie z.B.:
                                        Der Shelly 3EM

                                        Tibber-Kunden mit Pulse empfehle ich die lokale Einbindung des Pulse als Smartmeter mit meinem Script:
                                        https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

                                        Das Skript passt dann die Einspeiseleistung des PowerStream dynamisch an, sodass möglichst der gesamte Verbrauch durch die Einspeisung gedeckt wird, aber nichts ins Netz verschenkt wird. Erst wenn die Batterie voll geladen ist, wird die gesamte Leistung ins Netz eingespeist (wenn ihr das möchtet).

                                        Das Smartmeter muss den aktuellen Verbrauch möglichst in Echtzeit und in der Einheit Watt in einem Objekt von IOBroker zur Verfügung stellen. Im Script muss dann nur noch der Pfad zu diesem Objekt unter "SmartmeterID:" eingetragen werden. Am einfachsten geht das über die Adminoberfläche von IOBroker. Klickt auf Objekte und sucht das Objekt eures Smartmeters mit dem "Watt"-Wert im Objektbaum:
                                        Bildschirmfoto 2023-09-04 um 09.55.08.jpg
                                        Wenn Ihr auf das markierte Symbol klickt, ist der Pfad in euerer Zwischenablage gespeichert.
                                        Jetzt müsst Ihr ihn nur noch hinter "SmartmeterID:" im Script einfügen. Achtet darauf, dass Ihr es zwischen die "" einfügt.
                                        Wenn alles geklappt hat, der Pfad stimmt und das Script läuft, solltet Ihr unter Objekte: "0_userdata.0.ecoflow.RealPower" sehen, dass sich dieser Wert regelmäßig anpasst.

                                        Es können mehrere PowerStreams konfiguriert werden. Im Moment wird jedoch nur der erste in der Konfiguration gesteuert. Ich habe zum Beispiel zwei PowerStreams, einen mit und einen ohne Batterie. Dadurch steht tagsüber mehr Leistung zum Laden der Batterie zur Verfügung. Die Daten werden vom Skript verwendet, um die optimale Einspeiseleistung zu berechnen. In Zukunft könnten auch mehrere PowerStreams gesteuert werden.

                                        Nochmals vielen Dank an alle hier im Forum, die mit Ihrer Arbeit die Anbindung erst möglich gemacht haben!
                                        Ursprünglicher Beitrag: https://forum.iobroker.net/topic/54929/adapter-für-ecoflow-einbindung/

                                        Wichtig: Zur Installation müssen 2 Module installiert werden. Einfach in den Einstellungen der Javascriptinstanz unter Zusätzliche Module die beiden Namen eintragen und speichern ("mqtt" und "protobufjs")

                                        Bildschirmfoto 2023-07-17 um 10.56.49.jpg

                                        Erweiterungen:
                                        Tibber Modul
                                        Kann als eigenes, neues Script neben dem Hauptscript angelegt werden.

                                        //*************************************************************
                                        // Tibber Modul
                                        //*************************************************************
                                        // Schaltet die Regelung der Powerstation ab, wenn der Strom billig ist 
                                        // und einen beliebigen Schalter zum Aktivieren der AC-Ladung ein, bis die Batterie 
                                        // den durch der "BatMax" festgelegten Ladestand in % erreicht hat
                                        // 
                                        // Diese Parameter aus dem Hauptscript sind wichtig:
                                        // RegulationOffPower: -2 // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
                                        // RegulationState: "Regulate" // Erzeugt der State zum Ein und Aus-Schalten der Regulation.
                                        //
                                        // Das Script versucht selbst die ID's für den TibberStatus und den Batteriestand zu ermitteln.
                                        // Wenn das nicht klappt bitte einfach die richtigen ID's hinter "batSocID" und "tibberID" angeben.
                                        //
                                        //*************************************************************
                                        
                                        //*************************************************************
                                        // Konfiguration laden, wenn nicht im Originalscript eingefügt
                                        //*************************************************************
                                        var ConfigData = {
                                            statesPrefix: '0_userdata.0.ecoflow',
                                            RegulationState: "Regulate"
                                        }
                                        if (typeof ConfigData.email === 'undefined') {
                                            try {
                                                let tempConfigData = getState("0_userdata.0.ecoflow.Settings.ConfigData").val
                                                if (typeof tempConfigData !== 'object' && tempConfigData !== null) {
                                                    tempConfigData = JSON.parse(tempConfigData)
                                                }
                                                if (typeof tempConfigData === 'object' && tempConfigData !== null) {
                                                    if (tempConfigData.email !== undefined) {
                                                        ConfigData = tempConfigData;
                                                        //log("wurde geladen als object")
                                                    }
                                                }
                                            } catch (error) {
                                                log("Konfiguration wurde nicht geladen: " + error.message)
                                            }
                                        }
                                        
                                        /***************************************
                                        **********  YOUR DATA HERE  ************ 
                                        ****************************************/
                                        var tibberConfig = {
                                            BatMax: 99,                                  //Bei diesem Ladestand stoppt die AC-Ladung und das Script wird wieder eingeschaltet 
                                            BatMin: 95,                                  //Der Ladestand der Batterie muss kleiner sein als BatMin , damit der Akku per AC-Ladung geladen wird 
                                            SwitchID: "sonoff.0.NOUS-DVES_F0A844.POWER", //ID des Schalters, der die AC-Ladung einschaltet. "true" und "false" werden gesetzt
                                            LevelToSwitch: [                             //Hier die Werte definieren, bei denen die AC-Ladung eingeschaltet werden soll
                                                //"NORMAL",
                                                //"CHEAP",                                 //Einkommentieren falls gewüscht 
                                                "VERY_CHEAP"
                                            ],
                                        }
                                        //***************************************/
                                        // Nur angeben, wenn automatische Ermittlung fehlschlägt
                                        //***************************************/
                                        let batSocID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID").val
                                        let tibberID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID").val
                                        //***************************************/
                                        
                                        
                                        var idOK = false
                                        if (!batSocID || !tibberID) {
                                            log("Versuche die IDs für Tibber und Batterielevel zu finden")
                                            $("tibberlink.*.Homes.*.CurrentPrice.level").each(function (id, i) {
                                                tibberID = id
                                                createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID", tibberID, false)
                                                log("TibberID gefunden und gespeichert:" + id)
                                            })
                                            $(ConfigData.statesPrefix + ".app_device_property_*.data.InverterHeartbeat.batSoc").each(function (id, i) {
                                                if (getState(id).val > 0) {
                                                    batSocID = id
                                                    createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID", batSocID, false)
                                                    log("batSocID gefunden und gespeichert:" + id)
                                                }
                                            })
                                            if (!batSocID || !tibberID) {
                                                log("Fehler bei der Ermittlung der IDs. Bitte händisch ins Script eintragen", 'error')
                                            } else {
                                                idOK = true
                                            }
                                        } else {
                                            idOK = true
                                        }
                                        if (idOK) {
                                            checkTibber()
                                            on({ id: tibberID, change: "ne" }, function (obj) {
                                                //log("Tibber Modul. tibberID Event:" + obj.state.val)
                                                checkTibber()
                                            });
                                            on({ id: batSocID, change: "ne" }, function (obj) {
                                                //log("Tibber Modul. batSocID Event:" + obj.state.val + "%")
                                                checkTibber()
                                            });
                                        }
                                        function checkTibber() {
                                            if (tibberID && batSocID) {
                                                const RegulateID = ConfigData.statesPrefix + "." + ConfigData.RegulationState
                                                let priceLevel = getState(tibberID).val;
                                                let batsoc = Number(getState(batSocID).val)
                                                let OldRegulate = toBoolean(getState(RegulateID).val)
                                                //log("Tibber Preislevel: " + priceLevel + " OldRegulate: " + OldRegulate + " batsoc: " + (batsoc))
                                                if ((tibberConfig.LevelToSwitch.includes(priceLevel))) {
                                                    if (OldRegulate) {
                                                        if (batsoc <= tibberConfig.BatMin) {
                                                            setState(RegulateID, false);  // Regulierung aus
                                                            setState(tibberConfig.SwitchID, true) //Schalter einschalten
                                                            log("Script abgeschaltet AC-Ladung Ein, weil priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                        }
                                                    } else {
                                                        if (batsoc >= tibberConfig.BatMax) {
                                                            setState(RegulateID, true);  // Regulierung an
                                                            setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                                                            log(" Batterie bei BatMax. Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                        }
                                                    }
                                                } else {
                                                    if (!OldRegulate) {
                                                        setState(RegulateID, true);  // Regulierung an
                                                        setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                                                        log("Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                                                    }
                                                }
                                            } else {
                                                //log("checkTibber skip. batsocID und/oder tibberID fehlen.")
                                            }
                                        }
                                        //*************************************************************
                                        

                                        Tibber-Pulse als Smartmeter nutzen und lokal auslesen:
                                        https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

                                        Unterstütze das Projekt 'ecoflow-connector'
                                        Wenn dir das Script zur dynamischen Leistungsanpassung für den IObroker gefällt und du es nützlich findest, ziehe bitte in Erwägung, eine kleine Spende via PayPal zu hinterlassen.
                                        Jeder Beitrag hilft, das Projekt am Laufen zu halten und weitere Updates zu ermöglichen.
                                        Danke für deine Unterstützung!
                                        Jetzt Spenden

                                        Dieses Script wird bei Änderungen und Updates immer aktualisiert:
                                        Nutzung auf eigene Gefahr !

                                        [Bildschirmfoto 2024-03-29 um 09.37.51.jpg

                                        • Installation von ioBroker und Skript unter UNRAID in nur 12 Minuten
                                        • Video mit Erklärung der Basiskonfiguration
                                        • Video mit Erklärung zu AdditionalPower und Überschussladung

                                        Download (neues JS-Script in IOBroker anlegen und den Inhalt der Datei einfügen):

                                        • ecoflow-connector_v125.txt (13.05.2024)
                                        • 1.2.5.f1 Fork von Florian Vogt (25.06.2024)
                                          Feature hinzugefügt, um die Größe der Delta-Speicher beim Ausbalancieren der Entladeleistung zu berücksichtigen, damit die Batterien gleichmäßig geleert werden.
                                          Parameter battCapacity bei den Einstellungen für PowerStream = Kapazität der angeschlossenen Batterie in kWh, default = 1
                                          ecoflow-connector_v125_mod_FV.txt (25.06.2024)

                                        ältere Versionen:

                                        • ecoflow-connector_v124.txt (22.04.2024)
                                        • ecoflow-connector_v123.txt (21.02.2024)
                                        • ecoflow-connector_v121_05.01.2024.txt
                                        • ecoflow-connector_v12_.04.12.2023.txt
                                        • ecoflow-connector_v1162_04.11.2023.txt
                                        • ecoflow-connector_v115_02.10.2023.txt
                                        • ecoflow-connector_v1142_26.09.2023
                                        • ecoflow-connector_v1132_31.08.2023
                                        • ecoflow-connector_v112_17.08.2023)
                                        M Offline
                                        M Offline
                                        matz75
                                        wrote on last edited by
                                        #1075

                                        @waly_de Das ist eine Super Sache und ich bin einfach nur begeistert.
                                        Allerdings erschliessen sich mir 2 Dinge nicht. Was hat es mit den Parametern battPozOn: 99, battPozOff: 92, tatsächlich auf sich und was ist gem. der Beschreibung/Kommentierung mit "Normalbetrieb" gemeint? Er regelt lustig vor sich hin und die Parameter/Settings erklären sich durch ein bisschen ausprobieren. Allerdings scheinen die 2 genannten nicht wirklich Wirkung zu zeigen. Oder aber ich bin gänzlich auf dem Holzweg.
                                        Vielleicht kann jemand auf die Schnelle Licht ins dunkel bringen 🙂
                                        Vielen Dank vorab dafür.

                                        W 1 Reply Last reply
                                        0
                                        • W Waly_de

                                          @accu sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                                          @Waly_de noch eine Frage zum Skript. Bzw. ein paar Verbesserungsvorschläge:

                                          • Kann man irgendwie verhindern, dass der PS einspeist, während die Delta Pro am AC Ladeeingang läd? Hatte paar mal die Situation dass sich das überschnitten hat und er PS mit 200W eingepeist hat und die DP fröhlich über AC geladen hat und die 200W in ihre Berechung mit einbezogen hatte über den Watt-Wert der vom Zählerschrank Sonoff kam

                                          Wenn du das AC laden der Delta über die exceed power Funktion des Scriptes steuerst, sollte das nicht passieren. Es wird ja nur dann AC zugeschaltet wenn ein Überschuss da ist, also die PS nicht einspeist. Kann also höchstes kurzzeitig passieren. Die Reaktionsgeschwindigkeit kannst du mit den entsprechenden Parametern einstellen.

                                          • kann man irgendwie noch einen Schalter / Logik mit einbauen, die das AC Laden komplett ausschaltet, wenn vorne an dem AC Ausgang der Delta Pro ein Gerät z.B. Trockner betrieben wird. Hintergrund ist dass sich dann die Verbräuche addieren. Use Case: meine Frau steck häufig ungefragt nen Trockner (ca. 400-700W) vorne an die Steckdose der DP. Was blöd ist wenn sie gerade mit 500W hinten läd, weil ich dann plötzlich einen Gesamtverbrauch von 1200 W habe. Kann man daher den AC Ladeeingang abschalten, wenn vorne an der DP der AC Knopf gedrückt wird?

                                          Hmm das mit dem addieren verstehe ich nicht.
                                          Was am AC der Delta angeschlossen ist, wird aus der Batterie versorgt und dürfte daher nicht Gemessen und daher auch im Script nicht berücksichtigt werden. Wenn es 400 w Überschuss im Haushalt gibt, dann werden die 400 w zum
                                          Laden der Delta verwendet, egal was am AC Ausgang entnommen wird. So sollte es zumindest sein…

                                          A Offline
                                          A Offline
                                          Accu
                                          wrote on last edited by
                                          #1076

                                          @waly_de wie gesagt, wenn die DP mit 500W hinten am AC Eingang läd und ich hänge jetzt vorne an die DP Steckdose einen Wäschetrockner ebenfalls mit 500W Verbrauch, dann wird das aufaddiert und in Summe 1.000W aus dem Hausnetz gezogen (AC Ladeleistung + die Leistung vom Verbraucher an der DP). Die Leistung vom Verbraucher werden nur aus der Batterie gezogen, wenn der AC Ladeeingang der DP aus ist.

                                          Mein Problem jetzt:
                                          ich habe z.B. in dem oberen Fall gerade 500W PV zur Verfügung mit der ich die DP Laden wollte, und was auch passt. Kommt jetzt der Trockner hinzu macht es keinen Sinn die DP weiter zu Laden sondern die 500W für den Trockner zu nutzen. Daher wäre es fein, wenn man einstellen könnte, dass das AC Laden ausgesetzt wird, wenn man vorne an der DP die Steckdosen aktiviert.

                                          W 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          379

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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