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

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

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

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

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.
  • A anteater321

    Hi, sorry ich bin Anfänger in Sachen iobroker (habe es hauptsächlich installiert, weil ich dieses Skript verwenden möchte) und ich bekomme es nicht richtig zum Laufen. Für Hilfe, woran es liegt, wäre ich sehr dankbar.

    Das Skript habe ich eingefügt und die jeweiligen Daten eingegeben:

    46129223-1519-41ef-bd99-febd900cdd68-image.png.

    Auf der Skript-Seite scheint mir auch alles in Ordnung:

    Capture1.PNG

    Das Log zeigt auf der Einstellung "silly" laufend viele Einträge an, aber das Skript nimmt keinerlei Einfluss auf die ausgegebene Leistung; die bleibt immer bei dem was in der App händisch eingestellt wurde. Weiß jemand, was ich falsch mache oder was ich hier einblenden muss, damit man es nachvollziehen kann?

    D Offline
    D Offline
    Dreffi
    wrote on last edited by
    #271

    @anteater321
    Hast du das richtige Objekt mit dem State deines Stromzählers im Script angegeben?

    A 1 Reply Last reply
    0
    • D Dreffi

      @anteater321
      Hast du das richtige Objekt mit dem State deines Stromzählers im Script angegeben?

      A Offline
      A Offline
      anteater321
      wrote on last edited by anteater321
      #272

      @dreffi danke für die Antwort. Ich habe aktuell nur einen Smartplug von Ecoflow eingebunden und sonst keine Daten. Aus der Erklärung des skripts erschien mir das optional. Wo muss ich denn den State im Script angeben? Hatte es jetzt mal mit dem folgenden Eintrag versucht, aber das funktioniert nicht:

      SmartmeterID: "0_userdata.0.ecoflow.app_device_property_*******.data.plug_heartbeat_pack.watts", 
      

      Im Debug-Modus erscheinen in regelmäßigen Abständen die folgenden Meldungen:

      Capture3.PNG

      Ich möchte eigentlich erreiche, dass sich der vom Wechselrichter ausgegebene Strom im Wesentlichen nach dem von den Panelen eingehenden Strom richtet, aber ich vermute jetzt, dass das so nicht funktioniert? Ich wäre aber auch schon froh, wenn ich den SmartPlug integriert bekäme, um das Prinzip zu verstehen

      A W 2 Replies Last reply
      0
      • A anteater321

        @dreffi danke für die Antwort. Ich habe aktuell nur einen Smartplug von Ecoflow eingebunden und sonst keine Daten. Aus der Erklärung des skripts erschien mir das optional. Wo muss ich denn den State im Script angeben? Hatte es jetzt mal mit dem folgenden Eintrag versucht, aber das funktioniert nicht:

        SmartmeterID: "0_userdata.0.ecoflow.app_device_property_*******.data.plug_heartbeat_pack.watts", 
        

        Im Debug-Modus erscheinen in regelmäßigen Abständen die folgenden Meldungen:

        Capture3.PNG

        Ich möchte eigentlich erreiche, dass sich der vom Wechselrichter ausgegebene Strom im Wesentlichen nach dem von den Panelen eingehenden Strom richtet, aber ich vermute jetzt, dass das so nicht funktioniert? Ich wäre aber auch schon froh, wenn ich den SmartPlug integriert bekäme, um das Prinzip zu verstehen

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

        @anteater321 Hi der Smartplug kann eigentlich nur ein- und ausgeschaltet werden und liefert Messwerte vom angeschlossenen Gerät also aktuelle Netzspannung, Strom, Leistung, etc.
        Wenn du nicht den Powerstream als Gerät mit Seriennummer angibst kann das Script auch nichts steuern.
        Weiter muss das Script doch einen Wert vom aktuellen Verbrauch bekommen damit es dynamisch regeln kann.
        Sonst kann es villeicht die Prio "Strom" oder "Akku" umschalten wenn die Batteriegrenzen über oder unterschritten sind.

        Was möchtest du genau erreichen und welche Geräte hast du verbaut?

        1 Reply Last reply
        0
        • A anteater321

          @dreffi danke für die Antwort. Ich habe aktuell nur einen Smartplug von Ecoflow eingebunden und sonst keine Daten. Aus der Erklärung des skripts erschien mir das optional. Wo muss ich denn den State im Script angeben? Hatte es jetzt mal mit dem folgenden Eintrag versucht, aber das funktioniert nicht:

          SmartmeterID: "0_userdata.0.ecoflow.app_device_property_*******.data.plug_heartbeat_pack.watts", 
          

          Im Debug-Modus erscheinen in regelmäßigen Abständen die folgenden Meldungen:

          Capture3.PNG

          Ich möchte eigentlich erreiche, dass sich der vom Wechselrichter ausgegebene Strom im Wesentlichen nach dem von den Panelen eingehenden Strom richtet, aber ich vermute jetzt, dass das so nicht funktioniert? Ich wäre aber auch schon froh, wenn ich den SmartPlug integriert bekäme, um das Prinzip zu verstehen

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

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

          Ich möchte eigentlich erreiche, dass sich der vom Wechselrichter ausgegebene Strom im Wesentlichen nach dem von den Panelen eingehenden Strom richtet, aber ich vermute jetzt, dass das so nicht funktioniert? Ich wäre aber auch schon froh, wenn ich den SmartPlug integriert bekäme, um das Prinzip zu verstehen

          Ich verstehe noch nicht ganz, was Du versuchst mit dem Skript zu machen. Wenn du mit SmartPlugs arbeitest, benötigst du das Skript eigentlich nicht. Wenn du möchtest, dass die eingespeiste Energie sich nach dem zur Verfügung stehenden Sonnenlicht richtet, benötigst du das Skript auch nicht.
          Für eine "Null-Einspeisung" ist ein Smartmeter Grundvoraussetzung, dass dem Gesamtverbrauch Deiner Wohneinheit misst.
          Zwar könntest du theoretisch auch die Ausgabe der Smart Plug als Smartmeter ID konfigurieren. Aber da die Smart Plug nur sehr selten Werte liefert und auch nur dann, wenn ein Gerät angeschlossen ist, und dieses seine Leistungsaufnahme ändert. Bekommst du die No Data Fehlermeldung. Da arbeitet die Smart Plug ganz ohne Skript, direkt mit dem PowerStream sicherlich viel besser.

          A 1 Reply Last reply
          0
          • M Milchbeck

            Erst einmal Super arbeit mit dem Script, nur ich hab ein problem
            bekomme ein error
            SetState more than 1000 times per minute
            und dann hält das script an

            27.8.2023, 12:58:40.938 [info ]: javascript.0 (5490) Start javascript script.js.EcoFlow
            27.8.2023, 12:58:40.961 [info ]: javascript.0 (5490) script.js.EcoFlow: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            27.8.2023, 12:58:41.437 [info ]: javascript.0 (5490) script.js.EcoFlow: Verbunden mit dem Ecoflow MQTT-Broker
            27.8.2023, 13:00:35.459 [error]: javascript.0 (5490) Script script.js.EcoFlow is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
            27.8.2023, 13:00:35.462 [info ]: javascript.0 (5490) Stop script script.js.EcoFlow
            27.8.2023, 13:00:35.465 [info ]: javascript.0 (5490) script.js.EcoFlow: Ecoflow MQTT-Client beendet
            27.8.2023, 13:00:59.397 [info ]: javascript.0 (5490) Stop script script.js.EcoFlow

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

            @milchbeck guck mal im Beitrag. Das wurde schon einige Male angesprochen. Du kannst den Wert in den Einstellungen der Javascript-Instanz hoch setzten. Je mehr Geräte Du hast, um so höher muss der Wert konfiguriert werden. Vor allem die Deltas liefern Unmengen an Updates.
            Wenn Du diese Daten nicht unbedingt brauchst, stelle in den Einstellungen für deinen Delta "subscribe" auf false.

            1 Reply Last reply
            0
            • W Waly_de

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

              Ich möchte eigentlich erreiche, dass sich der vom Wechselrichter ausgegebene Strom im Wesentlichen nach dem von den Panelen eingehenden Strom richtet, aber ich vermute jetzt, dass das so nicht funktioniert? Ich wäre aber auch schon froh, wenn ich den SmartPlug integriert bekäme, um das Prinzip zu verstehen

              Ich verstehe noch nicht ganz, was Du versuchst mit dem Skript zu machen. Wenn du mit SmartPlugs arbeitest, benötigst du das Skript eigentlich nicht. Wenn du möchtest, dass die eingespeiste Energie sich nach dem zur Verfügung stehenden Sonnenlicht richtet, benötigst du das Skript auch nicht.
              Für eine "Null-Einspeisung" ist ein Smartmeter Grundvoraussetzung, dass dem Gesamtverbrauch Deiner Wohneinheit misst.
              Zwar könntest du theoretisch auch die Ausgabe der Smart Plug als Smartmeter ID konfigurieren. Aber da die Smart Plug nur sehr selten Werte liefert und auch nur dann, wenn ein Gerät angeschlossen ist, und dieses seine Leistungsaufnahme ändert. Bekommst du die No Data Fehlermeldung. Da arbeitet die Smart Plug ganz ohne Skript, direkt mit dem PowerStream sicherlich viel besser.

              A Offline
              A Offline
              anteater321
              wrote on last edited by
              #276

              @waly_de @aherby vielen Dank für Eure Antworten:

              Ich habe einen Powerstream, ne Delta 2 Max und einen Smart Plug von ecoflow. Ist bei mir im Skript alles mit Seriennummern und Zugangsdaten eingegeben. Habe hier nur Sterne als Platzhalter für den Screenshot eingesetzt.

              Ich würde zunächst gerne das Prinzip verstehen und scheitere aktuell schon daran, den Smartplug zu integrieren. Ich weiß, dass der SmartPlug ohnehin automatisch in der Ecoflow-App berücksichtigt wird, mir geht es ums Grundverständnis (ich hoffe das lässt sich dann auf andere Smartplugs/ein Smartmeter übertragen).

              Meine Frage zum Einstieg wäre, welchen Wert (Enum?) ich beim Eintrag SmartMeterID angeben muss, damit sich der Output des Powerstream nach dem SmartPlug richtet. Ich vermute es ist "0_userdata.0.ecoflow.app_device_property_****.data.plug_heartbeat_pack.watts", aber dann schaukelt sich der Output innerhalb von ein paar Minuten auf 500W hoch, obwohl am Smartplug ein Verbrauch von 30W ausgegeben wird.

              W 1 Reply Last reply
              0
              • A anteater321

                @waly_de @aherby vielen Dank für Eure Antworten:

                Ich habe einen Powerstream, ne Delta 2 Max und einen Smart Plug von ecoflow. Ist bei mir im Skript alles mit Seriennummern und Zugangsdaten eingegeben. Habe hier nur Sterne als Platzhalter für den Screenshot eingesetzt.

                Ich würde zunächst gerne das Prinzip verstehen und scheitere aktuell schon daran, den Smartplug zu integrieren. Ich weiß, dass der SmartPlug ohnehin automatisch in der Ecoflow-App berücksichtigt wird, mir geht es ums Grundverständnis (ich hoffe das lässt sich dann auf andere Smartplugs/ein Smartmeter übertragen).

                Meine Frage zum Einstieg wäre, welchen Wert (Enum?) ich beim Eintrag SmartMeterID angeben muss, damit sich der Output des Powerstream nach dem SmartPlug richtet. Ich vermute es ist "0_userdata.0.ecoflow.app_device_property_****.data.plug_heartbeat_pack.watts", aber dann schaukelt sich der Output innerhalb von ein paar Minuten auf 500W hoch, obwohl am Smartplug ein Verbrauch von 30W ausgegeben wird.

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

                "0_userdata.0.ecoflow.app_device_property_****.data.plug_heartbeat_pack.watts" liefert W * 10

                10 Watt sind also ein Wert vom 100 in dem State.
                Daher das Verhalten.

                A 1 Reply Last reply
                0
                • Nils_1985N Offline
                  Nils_1985N Offline
                  Nils_1985
                  wrote on last edited by
                  #278

                  Vielen Dank für den äußerst nützlichen Script. Ganz tolle Arbeit.....

                  Der Script läuft bei mir fast ohne Probleme.

                  Ich möchte gerne, dass bei 95% Akkustand automatisch in den Batterie-Prioritätsmodus gewechselt wird, sofern dieser nicht manuell in der Ecoflow schon eingestellt ist. Ich habe dazu den Wert 95 bei battPozOn eingetragen und battOnSwitchPrio auf true geändert. Nun ist mein Akku bei 99% und der Script schaltet in den Strommodus. Was dann leider dazu führen kann, dass der Akku leergesaugt wird. Da ich Tibber und daher einen dynamischen Strompreis habe, möchte ich den Akkustrom dann nutzen wenn der Preis hoch ist, vorher macht es keinen Sinn für mich.

                  Habe ich einen Denkfehler, sollte der Script nicht in dem Akkumodus bleiben? Anbei die Meldung aus dem Protokoll.

                  Screenshot 2023-08-27 185118.jpg

                  Und wann wird die Zusatzpower (tolle Funktion) ein- und ausgeschaltet? Bei dem Wert von battPozOff?

                  Hier würde ich mir wünschen, dass bei über 600 Watt Solarleistung 600 Watt in den Akku gehen und der Rest ins Netz, dass funktioniert aber leider nur im Strommodus. Gibt es eine Möglichkeit, dass dann bei einer Leistung von unter 600 Watt nur der Akku gespeist wird dann die Leistungsabgabe ins Netz auf 0 geregelt wird?

                  Viele Grüße

                  Nils

                  W 2 Replies Last reply
                  0
                  • W Waly_de

                    "0_userdata.0.ecoflow.app_device_property_****.data.plug_heartbeat_pack.watts" liefert W * 10

                    10 Watt sind also ein Wert vom 100 in dem State.
                    Daher das Verhalten.

                    A Offline
                    A Offline
                    anteater321
                    wrote on last edited by
                    #279

                    @waly_de Danke für den Hinweis, hatte ich auch schon irgendwo im dem langen Thread gelesen, aber wieder vergessen.

                    Hab nochmal drauf geachtet, der Verbrauch kennt aber nur die Richtung nach oben (also deutlich mehr als Faktor 10). Auch wenn der Verbrauch bspw. auf 15 W absinkt, geht der Output nicht runter sondern hoch. Aber ich scheine der einzige mit dem Problem zu sein, muss also irgendwie an meinem Setup liegen.

                    W 1 Reply Last reply
                    0
                    • A anteater321

                      @waly_de Danke für den Hinweis, hatte ich auch schon irgendwo im dem langen Thread gelesen, aber wieder vergessen.

                      Hab nochmal drauf geachtet, der Verbrauch kennt aber nur die Richtung nach oben (also deutlich mehr als Faktor 10). Auch wenn der Verbrauch bspw. auf 15 W absinkt, geht der Output nicht runter sondern hoch. Aber ich scheine der einzige mit dem Problem zu sein, muss also irgendwie an meinem Setup liegen.

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

                      @anteater321 das ist klar, denn wenn der powerStream seine Ausgangsleistung steigert, sinkt ja der Messwert des smartplug nicht. Darum möchte das Skript immer mehr Leistungen abgeben und von Messung zu Messung steigt der Wert dadurch. Das Setup funktioniert so einfach nicht. Du brauchst einen unabhängigen Stromzähler oder zumindest muss der Powerstream mit dem Verbraucher hinter der SmartPlug eingesteckt sein. Sinn macht das aber alles nicht wirklich...

                      A 1 Reply Last reply
                      1
                      • 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)
                        A Offline
                        A Offline
                        aherby
                        wrote on last edited by
                        #281

                        @waly_de Bin immer noch begeistert, dass du die ganze Arbeit und Zeit findest das Script zu verbessern.
                        herzlichen Dank. Habe gerade mal eine Spende aufn Weg geschickt.

                        Mein Problem ist dass ich aktuell nicht aus der Ferne an den Rechner mit dem Script komme.
                        Daher kann ich nicht immer alles hier ausprobieren oder testen wenn ich vor Ort bin.

                        Was mir jetzt aufgefallen ist, das viele Daten der Delta 2 Max unter MPPT landen.
                        Hier auch Parameter wie Einstellung der DC Autoeingang 1 und Autoeingang 2 wo die Stromwerte 4, 6 und 8 Ampere als Strombegrenzung einstellen kann.
                        Ist das nur bei mir so oder gibt es einen Grund dafür?

                        Was mir aber irgendwie von der Bezeichung fehlt ist das Objekt PV1InAmp, PV1InVol ok sind wohl als InVol und anderen Objekten vorhanden. Liegt das daran, dass wenn ein Zigarettenanzünder zum Laden verwendet werden dann auch diese Werte beschrieben werden?

                        Kann oder werden noch weitere Tests oder Daten von der Delta 2 Max benötigt?

                        W 1 Reply Last reply
                        0
                        • Nils_1985N Nils_1985

                          Vielen Dank für den äußerst nützlichen Script. Ganz tolle Arbeit.....

                          Der Script läuft bei mir fast ohne Probleme.

                          Ich möchte gerne, dass bei 95% Akkustand automatisch in den Batterie-Prioritätsmodus gewechselt wird, sofern dieser nicht manuell in der Ecoflow schon eingestellt ist. Ich habe dazu den Wert 95 bei battPozOn eingetragen und battOnSwitchPrio auf true geändert. Nun ist mein Akku bei 99% und der Script schaltet in den Strommodus. Was dann leider dazu führen kann, dass der Akku leergesaugt wird. Da ich Tibber und daher einen dynamischen Strompreis habe, möchte ich den Akkustrom dann nutzen wenn der Preis hoch ist, vorher macht es keinen Sinn für mich.

                          Habe ich einen Denkfehler, sollte der Script nicht in dem Akkumodus bleiben? Anbei die Meldung aus dem Protokoll.

                          Screenshot 2023-08-27 185118.jpg

                          Und wann wird die Zusatzpower (tolle Funktion) ein- und ausgeschaltet? Bei dem Wert von battPozOff?

                          Hier würde ich mir wünschen, dass bei über 600 Watt Solarleistung 600 Watt in den Akku gehen und der Rest ins Netz, dass funktioniert aber leider nur im Strommodus. Gibt es eine Möglichkeit, dass dann bei einer Leistung von unter 600 Watt nur der Akku gespeist wird dann die Leistungsabgabe ins Netz auf 0 geregelt wird?

                          Viele Grüße

                          Nils

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

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

                          Und wann wird die Zusatzpower (tolle Funktion) ein- und ausgeschaltet? Bei dem Wert von battPozOff?

                          im Moment ist es so eingestellt, dass bei Batteriespeisung von Maxpower(600W ) - BAT_MAX_OFFSET(60 W) angefangen wird Zusatzpower zu geben. 60W deswegen, weil der PS im Betrieb eben oft nicht die 600 W Erreicht, sondern ein paar W davor aufhört. Vielleicht thermische Probleme oder Messabweichungen...

                          Hier würde ich mir wünschen, dass bei über 600 Watt Solarleistung 600 Watt in den Akku gehen und der Rest ins Netz, dass funktioniert aber leider nur im Strommodus. Gibt es eine Möglichkeit, dass dann bei einer Leistung von unter 600 Watt nur der Akku gespeist wird dann die Leistungsabgabe ins Netz auf 0 geregelt wird?

                          das geht nur mit dem Batterie-Priomodus bis 600W und würde ich auch nicht empfehlen, denn es belastet den Akku sehr, führt zu verkürzter Lebensdauer und beschert Dir die maximal mögliche Verlustleistung wegen Umwandlungsverlusten PV-Akku und dann Akku-Netz.

                          Wenn du etwas ähnliches unbedingt wills, spiel doch mal mit den Werten lowBatLimitPozOn,lowBatLimitPozOff und lowBatLimit
                          z.B:

                          lowBatLimitPozOn: 95, lowBatLimitPozOff: 99, lowBatLimit: 20,
                          Ist der Akku weniger als 95% geladen werden nur maximal 20 W eingespeist, der rest geht in den Akku. Dann greift aber Zusatzpower, um vielleicht noch etwas mehr heraus zu holen.

                          Guck aber das es mit battPozOn:, battPozOff:, battOnSwitchPrio:, keine Überschneidungen gibt.

                          1 Reply Last reply
                          0
                          • A aherby

                            @waly_de Bin immer noch begeistert, dass du die ganze Arbeit und Zeit findest das Script zu verbessern.
                            herzlichen Dank. Habe gerade mal eine Spende aufn Weg geschickt.

                            Mein Problem ist dass ich aktuell nicht aus der Ferne an den Rechner mit dem Script komme.
                            Daher kann ich nicht immer alles hier ausprobieren oder testen wenn ich vor Ort bin.

                            Was mir jetzt aufgefallen ist, das viele Daten der Delta 2 Max unter MPPT landen.
                            Hier auch Parameter wie Einstellung der DC Autoeingang 1 und Autoeingang 2 wo die Stromwerte 4, 6 und 8 Ampere als Strombegrenzung einstellen kann.
                            Ist das nur bei mir so oder gibt es einen Grund dafür?

                            Was mir aber irgendwie von der Bezeichung fehlt ist das Objekt PV1InAmp, PV1InVol ok sind wohl als InVol und anderen Objekten vorhanden. Liegt das daran, dass wenn ein Zigarettenanzünder zum Laden verwendet werden dann auch diese Werte beschrieben werden?

                            Kann oder werden noch weitere Tests oder Daten von der Delta 2 Max benötigt?

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

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

                            @waly_de Bin immer noch begeistert, dass du die ganze Arbeit und Zeit findest das Script zu verbessern.
                            herzlichen Dank. Habe gerade mal eine Spende aufn Weg geschickt.

                            Vielen Dank, das freut mich sehr!
                            Leider kann ich Dir wenig zu der Datenstruktur des Delta 2 sagen. Ich hab ja leider keinen. Ausserdem hat sich das ECOFLOW ausgedacht. Keine Ahnung was die sich dabei gedacht haben 😉

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

                            Kann oder werden noch weitere Tests oder Daten von der Delta 2 Max benötigt?

                            Von mir aus nicht. AC-ON/OFF hab ich so wie es hier @ponti92 herausgefunden hat für die nächste Version implementiert. Testen kann ich es nicht. Fehlt Dir denn noch was?

                            A 1 Reply Last reply
                            0
                            • Nils_1985N Nils_1985

                              Vielen Dank für den äußerst nützlichen Script. Ganz tolle Arbeit.....

                              Der Script läuft bei mir fast ohne Probleme.

                              Ich möchte gerne, dass bei 95% Akkustand automatisch in den Batterie-Prioritätsmodus gewechselt wird, sofern dieser nicht manuell in der Ecoflow schon eingestellt ist. Ich habe dazu den Wert 95 bei battPozOn eingetragen und battOnSwitchPrio auf true geändert. Nun ist mein Akku bei 99% und der Script schaltet in den Strommodus. Was dann leider dazu führen kann, dass der Akku leergesaugt wird. Da ich Tibber und daher einen dynamischen Strompreis habe, möchte ich den Akkustrom dann nutzen wenn der Preis hoch ist, vorher macht es keinen Sinn für mich.

                              Habe ich einen Denkfehler, sollte der Script nicht in dem Akkumodus bleiben? Anbei die Meldung aus dem Protokoll.

                              Screenshot 2023-08-27 185118.jpg

                              Und wann wird die Zusatzpower (tolle Funktion) ein- und ausgeschaltet? Bei dem Wert von battPozOff?

                              Hier würde ich mir wünschen, dass bei über 600 Watt Solarleistung 600 Watt in den Akku gehen und der Rest ins Netz, dass funktioniert aber leider nur im Strommodus. Gibt es eine Möglichkeit, dass dann bei einer Leistung von unter 600 Watt nur der Akku gespeist wird dann die Leistungsabgabe ins Netz auf 0 geregelt wird?

                              Viele Grüße

                              Nils

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

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

                              Habe ich einen Denkfehler, sollte der Script nicht in dem Akkumodus bleiben? Anbei die Meldung aus dem Protokoll.

                              ich glaube da muss ich noch mal in Ruhe ran. Das Beenden des Priomodus macht schon Sinn, sobald der Leistungsbedarf wieder da ist. Es soll ja die Batterieladung ohne Belastung erhalten und sonst alles Eingespeist werden, was die PV-Module hergeben. Aber nur so lange, wie die PV-Leistung ausreicht um den Bedarf zu decken. Wenn nicht soll auch die Batterie
                              wieder genutzt werden. Soweit der Plan. Aber mangels Sonne und Urlaub konnte ich das noch nicht so richtig prüfen... hole ich bald nach. (hoffe ich) 😉

                              1 Reply Last reply
                              1
                              • W Waly_de

                                @anteater321 das ist klar, denn wenn der powerStream seine Ausgangsleistung steigert, sinkt ja der Messwert des smartplug nicht. Darum möchte das Skript immer mehr Leistungen abgeben und von Messung zu Messung steigt der Wert dadurch. Das Setup funktioniert so einfach nicht. Du brauchst einen unabhängigen Stromzähler oder zumindest muss der Powerstream mit dem Verbraucher hinter der SmartPlug eingesteckt sein. Sinn macht das aber alles nicht wirklich...

                                A Offline
                                A Offline
                                anteater321
                                wrote on last edited by
                                #285

                                @waly_de alles klar, hat was gedauert, aber ich habe jetzt verstanden, wie es eigentlich gedacht ist. Danke für die Geduld

                                1 Reply Last reply
                                1
                                • M Offline
                                  M Offline
                                  Milchbeck
                                  wrote on last edited by
                                  #286

                                  Frage hab das Script soweit laufen alle plugs mal deaktiviet

                                  Aber das script brauch schon etwas um alles einzuspeisen was die Geräte brauchen liegt es an MinValueMin?
                                  Dynamisch funktioniert aber ich denke es braucht einfach zu lange, also länger als mit plug’s 🤔 oder hab ich was falsch eingestellt

                                  MinValueMin Ist bei mir auf 1
                                  MinValueAg ist auch auf 1

                                  Wenn nichts schnelles passiert bleibt es bei 35 Watt Bezug aber sobald kurze Ströme nach oben sind dauert es lange bevor es den Powerstream regelt

                                  W 1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    Milchbeck
                                    wrote on last edited by
                                    #287

                                    Noch kurz ne frage ich hab noch ein Balkonkraftwerk am start wenn der einspeist sendet mein Poweropti ein minus wert wird das dann berücksichtigt oder wird noch mehr eingespeist

                                    W 1 Reply Last reply
                                    0
                                    • M Milchbeck

                                      Frage hab das Script soweit laufen alle plugs mal deaktiviet

                                      Aber das script brauch schon etwas um alles einzuspeisen was die Geräte brauchen liegt es an MinValueMin?
                                      Dynamisch funktioniert aber ich denke es braucht einfach zu lange, also länger als mit plug’s 🤔 oder hab ich was falsch eingestellt

                                      MinValueMin Ist bei mir auf 1
                                      MinValueAg ist auch auf 1

                                      Wenn nichts schnelles passiert bleibt es bei 35 Watt Bezug aber sobald kurze Ströme nach oben sind dauert es lange bevor es den Powerstream regelt

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

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

                                      Frage hab das Script soweit laufen alle plugs mal deaktiviet

                                      Aber das script brauch schon etwas um alles einzuspeisen was die Geräte brauchen liegt es an MinValueMin?
                                      Dynamisch funktioniert aber ich denke es braucht einfach zu lange, also länger als mit plug’s 🤔 oder hab ich was falsch eingestellt

                                      MinValueMin Ist bei mir auf 1
                                      MinValueAg ist auch auf 1

                                      Wenn nichts schnelles passiert bleibt es bei 35 Watt Bezug aber sobald kurze Ströme nach oben sind dauert es lange bevor es den Powerstream regelt

                                      Das ist so gewünscht. Siehe einige Beiträge weiter oben.

                                      1 Reply Last reply
                                      0
                                      • M Milchbeck

                                        Noch kurz ne frage ich hab noch ein Balkonkraftwerk am start wenn der einspeist sendet mein Poweropti ein minus wert wird das dann berücksichtigt oder wird noch mehr eingespeist

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

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

                                        Noch kurz ne frage ich hab noch ein Balkonkraftwerk am start wenn der einspeist sendet mein Poweropti ein minus wert wird das dann berücksichtigt oder wird noch mehr eingespeist

                                        Das wird berücksichtigt. Sollte klappen.

                                        M 1 Reply Last reply
                                        0
                                        • W Waly_de

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

                                          Noch kurz ne frage ich hab noch ein Balkonkraftwerk am start wenn der einspeist sendet mein Poweropti ein minus wert wird das dann berücksichtigt oder wird noch mehr eingespeist

                                          Das wird berücksichtigt. Sollte klappen.

                                          M Offline
                                          M Offline
                                          Milchbeck
                                          wrote on last edited by
                                          #290

                                          @waly_de
                                          Super danke für die Antworten!!! 🙏🏼

                                          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

                                          107

                                          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