Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. ecoflow-connector-Script zur dynamischen Leistungsanpassung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ecoflow-connector-Script zur dynamischen Leistungsanpassung

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      aherby @Waly_de last edited by aherby

      @waly_de der Wert hat sich wohl nach dem Update gestern verändert aber wenn ich in der App von 800 W runter gehe passiert da nichts.

      erdata.0.ecoflow.app_device_property_XXXXXXXX.data.InverterHeartbeat.ratedPower
      
      1 Reply Last reply Reply Quote 0
      • F
        foxthefox Developer @Ponti92 last edited by foxthefox

        @ponti92
        Danke für die Aufklärung wie es derzeitig läuft.
        Es ist klar, daß ein ein Shelly3EM nicht direkt wie ein Stecker behandelt werden kann. Mindestens muß die derzeitig abgegebene Leistung mit berücksichtigt werden.
        Hätte halt gedacht, daß dies schon so passiert. Aber woher soll es auch kommen.
        Wenn man den shelly als mqtt über EF abboniert scheint ja der originale output übermittelt zu werden. Also braucht es einen Umsetzer, der aber zeitgleich noch die aktuelle Leistung braucht.
        Wäre interessant ob es nunmehr ein ganz unbekanntes Gerät zu abbonieren gibt. Genaugenommen müsste das dann auch nicht JSON sein, sondern protobuf, da ja der powerstream nichts anderes kennt.

        PS.
        danke für die logs.
        Hab mal ein paar angeschaut und dort stehen noch mehr Daten drin als die heutige protobuf Definition kennt.
        Die Definition geht bisher bis Feld 61 und da gibt es nun Daten mit höheren Feldnummern!
        Da braucht es noch ein paar unknownXX.

        Edit.
        In dem einen sind die Energiedaten drin und siehe da, nicht nur die bekannten watth1..7, sondern auch "watth16":729,"watth17":866,"watth18":866
        Da muß man noch rausfinden, was die bedeuten könnten.

        1 Reply Last reply Reply Quote 0
        • A
          Accu @MikeRow last edited by

          @mikerow ich habe hinter meiner Delta Pro mit ZA einen Shelly 1 PM plus sitzen. Diesen habe ich dem Skript bekannt gemacht in der Sektion Überschussladung. Wenn überschussladung auf TRUE ist, dann schaltet das Skript den Shelly automatisch an und aus und reguliert die AC Ladeleistung in Abhängigkeit vom Hausstrom verbrauch.

          Du müsstest jetzt eigentlich nur noch irgendwie einen Datenpunkt haben, der deinen PV Batteriespeicher misst. Und kannst ja dann eine Bedingung basteln. WENN PV Speciher voll DANN schalte Überschussladung auf TRUE.

          Weiter oben hier im Thread gibs ein Codeschnipsel wie man den Überschussladeparameter umsetzt.

          M 1 Reply Last reply Reply Quote 0
          • M
            MikeRow @Accu last edited by

            @accu OK, Danke, da setze ich mal an. Vielen Dank

            1 Reply Last reply Reply Quote 0
            • A
              Accu last edited by

              @Waly_de ich hatte jetzt paar mal den Fall dass abends meine PS nicht eingespeist hat. Hatte dann festgestellt dass auf "Stromspeicher Priorisieren" gestellt war. Ich hatte dann per Hand auf "Stromversorgung priorisieren" umgestellt und sofort ging's wieder.
              Das Problem scheint aber sporadisch aufzutreten. Bzw. konnte ich noch kein Muster dafür erkennen. Hast Du einen Rat?

              A 1 Reply Last reply Reply Quote 0
              • D
                DerSmily last edited by DerSmily

                Ich versuche gerade das Skript mal wieder zum Laufen zu bringen:

                Wie bekomme ich diesen Fehler weg?
                javascript.0 11:31:21.934 info script.js.Ecoflow.DL: Fehler beim Abrufen des niedrigsten Werts: timeout
                javascript.0 11:31:36.912 info script.js.Ecoflow.DL: getLowestValue-error: timeout

                Zur Info vielleicht: Ich habe eine PS und nur einen Zusatzakku Delta

                Thomas Bucher M 2 Replies Last reply Reply Quote 0
                • A
                  aherby @Accu last edited by

                  @accu Hey kannst du das Verhalten näher beschreiben? Ich habe auch etwas das Gefühl das abends nicht mehr alles so funktioniert wie es soll. Durch meinen Aufbau sollte eigentlich auch bis Mitternacht odr länger quasi über Solar eingespeißt werden. Aber hin und wieder "steht" zwar eine Solarspannung an aber es kommt kein Strom. Dann nach Veränderungen, Warten plötzlich funktionert es dann wieder.

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    Accu @aherby last edited by

                    @aherby da gibt es eigentlich nicht viel zu beschreiben. Ich hatte ca. 3mal bisher das Problem dass der PS nach Sonnenuntergang nicht eingespeist hat. Hatte erst ewig gesucht und Geräte abgestöpselt aber dann festgestellt, dass der PS in der Setting Batterie bevorzugen stand. Habs dann manuell umgestellt und alles lief wieder. Keine Ahnung ob das im Skript irgendwo getriggert wurde und der Befehl es dann wieder zurück zu setzen nicht funktioniert hat. Wie gesagt kommt äußerst selten vor. Bei mir bisher 3x seitdem ich das Skript nutze.

                    1 Reply Last reply Reply Quote 0
                    • M
                      MikeRow @Maik Becker last edited by

                      @maik-becker Ich kann das bei meiner Delta Pro auch feststellen. Konntest du das Problem lösen?

                      Maik Becker 1 Reply Last reply Reply Quote 0
                      • A
                        Accu last edited by

                        ich meine hier mal was gelesen zu haben, dass jmd die EF outdoor Batterie mit dem PS betreibt. Kann hier jemand mal paar Erfarhungsberichte posten zum Gerät und vorallem in Verbindung mit dem Skript. Erkennt das Skript die neue EF 2KWH Outdoorbatterie? wie läuft das dann wenn man schon eine delta mit PS im einsatz hat. Kann das skript beide PS steuern vorallem dann auch beim Einspeisen?

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Milchbeck last edited by

                          Wenn ich im einspeise Script den wer von 1 auf 0.5 stelle wäre das dann alle 30 Sekunden
                          MinValueMin 0.5

                          1 Reply Last reply Reply Quote 0
                          • M
                            Mario1995 @Accu last edited by

                            @accu Ich habe die Outdoor Batterie (2 Kwh). Das Skript funktioniert damit. Allerdings werden die Ganzen Werte (Akkustand etc.) direkt vom PowerStream geliefert. Zu deiner anderen Frage mit der Delta kann ich dir keine Auskunft geben.

                            A 1 Reply Last reply Reply Quote 0
                            • Maik Becker
                              Maik Becker @MikeRow last edited by

                              @MikeRow ja ich habe die werte noch einmal wo anderes her geholt.

                              1 Reply Last reply Reply Quote 0
                              • Maik Becker
                                Maik Becker last edited by

                                Hallo,

                                ich habe jetzt eine Delta Pro und eine Delta Max mit je einem Powerstream und einer Sellysteckdose zum einschalten der AC Ladung, wie kann ich die Überschussladung für beide Geräte einstellen?

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Accu @Mario1995 last edited by

                                  @mario1995 scheint leider ausverkauft zu sein 😞

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MikeRow last edited by

                                    Hallo, irgendwie bekomme ich das Script nicht zum laufen. Die an AC angeschlossene Fritz Dect wird nicht geschaltet!

                                    Ich habe eine existierende PV Anlage und habe den WR unter Additional Power angelegt. Als Smartmeter ist der Tibber Pulse angegeben. Am AC Eingang der Delta Pro ist eine Fritz Dect angeschlossen. Ich habe das Script nun schon mehrfach geprüft und die Videos kann ich fast auswendig. Egal was ich einstelle, die Fritz Dect wird nicht geschaltet. Hat jemand eine Idee für mich? @Waly_de kannst du dir mal vielleicht die angehängte Config ansehen. Ich bin sonst mit meinem Latein am Ende 😞

                                    Screenshot 2024-06-18 130625.png

                                    email: "XXXXXX@outlook.de",                             // Die App-Zugangsdaten von ecoFlow
                                    passwort: "XXXXXX",
                                    SmartmeterID: "tibberlink.0.Homes.XXXXXX.LiveMeasurement.power",     // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
                                    seriennummern: [
                                        //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
                                        {
                                            seriennummer: "XXXXXXXXXXXXX",              // Die Seriennummer des Gerätes
                                            name: "PowerStream",                        // beliebiger Name
                                            MaxPower: 600,                              // Der höchstmögliche Wert in Watt für die Einspeiseleistung
                                            subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                            typ: "PS",                                  // Welches Gerät ist es: PowerStream:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max/Delta Pro: "D2M"; SmartPlug: "SM"; Andere: "NA" 
                                            // Parameter an hier nur für PowerStream.     
                                            regulation: true,                           // "true": Dieser PowerStream soll vom Script reguliert werden
                                            RegulationOffPower: -1,                     // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
                                            hasBat: true,                               // "true": Eine Batterie ist angeschlossen. Nur für PowerStream relevant.
                                            battPozOn: 100, battPozOff: 97,              // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb
                                            battOnSwitchPrio: true,                     // "true": Bei battPozOn wird in den Batterie-Prioritätsmodus gewechselt
                                            prioOffOnDemand: 30,                        // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus geschaltet wird. 0 für kein Rückschalten.   
                                            lowBatLimitPozOn: 5, lowBatLimitPozOff: 15, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                                            lowBatLimit: 250,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                                        },
                                        //#######################################################################
                                        {
                                            seriennummer: "XXXXXXX",
                                            name: "DELTA PRO",
                                            typ: "D2M",
                                            subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                        },
                                        //#######################################################################
                                        {
                                            seriennummer: "XXXXXXXXXXXXX",
                                            name: "SmartPlug 1",
                                            typ: "SM",
                                            subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                        },
                                        //#######################################################################
                                    ],
                                    AdditionalPowerAvgPeriod: 15000,                    // Zeitraum in ms in denen ein Durchschittswert der Summe von AdditionalPower erstellt wird
                                    AdditionalPower: [                                  // Wenn es weitere Wechselrichter gibt, die in IOBroker erfasst werden, können diese hier Angelegt werden
                                        //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
                                        {
                                            name: "STP8",                       // Beliebiger Name
                                            id: "modbus.0.inputRegisters.30775_PV_Leistung_Gesamt_Aktuell",      // Der Objektpfad zu dem Leistungswert in Watt (W)
                                            factor: 1,                                  // Divisionsfaktor für den Leistungswert. (10 für die Delta)
                                            offset: 0,                                  // Wert wird zum Messwert addiert um Messabweichungen ausgleichen zu können 
                                            NoFeedIn: false,                            // true setzen, wenn die enthaltene Leistung nicht ins Hausnetz fließt. (Nur in PVTotal aufnehmen)
                                            NoPV: false,                                // true setzen, wenn die enthaltene Leistung nicht in TotalPV einfließen soll. (Nur in Realpower aufnehmen)   
                                    
                                    //#######################################################################
                                    //****************************************
                                    // Erweiterte Einstellungen:
                                    //****************************************
                                    SmartmeterTimeoutMin: 4,                            // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
                                    SmartmeterFallbackPower: 150,                       // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden. 
                                    RegulationIntervalSec: 15,                          // Intervall in Sekunden in denen gemessen und reguliert wird 
                                    Regulation: true,                                   // 'false' stellt das Setzen der Einspeiseleistung ab 
                                    RegulationState: "Regulate",                        // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
                                    RegulationMultiPsMode: 0,                           // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
                                    SerialReverse: false,                               // true: im serial Mode (RegulationMultiPsMode: 1) werden die PS in umgekehrter Rheihenfolge duchfaufen 
                                    BasePowerOffset: 30,                                // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen 
                                    Zusatzpower_Offset: 10,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
                                    MinValueMin: 2,                                     // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
                                    MinValueAg: 0,                                      // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
                                    ReconnectMin: 30,                                   // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
                                    statesPrefix: "0_userdata.0.ecoflow",               // Hier werden die ecoFlow States angelegt
                                    latitude: latitude,                                 // Breitengrad des Standortes (wird automatisch eingesetzt)
                                    longitude: longitude,                               // Längengrad des Standortes (wird automatisch eingesetzt)
                                    //****************************************
                                    // Überschussladung:
                                    //****************************************
                                    ExcessCharge: true,                                //Überschussladung AN/AUS (true/false)
                                                                                        //ID zum Einstellen der Ladeleistung des Speichers in Watt: 
                                    ExcessChargePowerID: "0_userdata.0.ecoflow.app_XXXXXXXXXXX_thing_property_set.writeables.slowChgPower",
                                                                                        //ID des aktuellen Ladestandes des Speichers in %: 
                                    ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX.data.params.bmsMaster.soc",
                                    ExcessChargeSwitchMin: 5,                           //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss. 
                                    ExcessChargeMaxPower: 2000,                         //Maximale Ladeleistung des Speichers in Watt
                                    ExcessChargeOffsetPower: 0,                         //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen. 
                                    ExcessChargeStartPower: 50,                         //Mindest-Überschussleistung zum Einschalten des Speichers
                                    ExcessChargeStopPower: 0,                           //Überschussleistung bei der der Speicher abgeschaltet werden soll.
                                    ExcessChargeStartPowerDurationMin: 1,               //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet wird.
                                    ExcessChargeMinRegulatePause: 1,                    //Mindestpause in Minuten zwischen einzelnen Regelbefehlen (EEPROM-Schutz)
                                    ExcessChargeRegulateSteps: 100,                     //Stufen in Watt, in denen die Werte geändert werden sollen 
                                    ExcessChargeBatSocMax: 95,                          // Batterieladestand muss <= sein damit die Überschussladung gestartet wird
                                    ExcessChargeBatSocOff: 100,                         // Batterieladestand bei dem die Überschussladung abgeschaltet wird
                                    //----------------------------------------
                                    // Beispiel für Delta-Nutzung ohne Schlaltersteckdose:
                                    // Wird an einer Delta auch der PV-Eingang genutzt, bitte die PV-Leistung unter AdditionalPower anlegen. Die passende ID ist:
                                    // 0_userdata.0.ecoflow.app_device_property_xxx.data.params.mppt.inWatts
                                    // Bei der Delta: "subscribe: true" konfigurieren
                                    //----------------------------------------
                                                                                        //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt:
                                    //ExcessActualPowerID: "0_userdata.0.ecoflow.app_device_property_xx.data.params.inv.inputWatts",
                                                                                        //ID des Schalters, der den Speicher aktiviert: 
                                    //ExcessChargeSwitchID: "0_userdata.0.ecoflow.app_xx_xx_thing_property_set.writeables.chgPause", 
                                    //ExcessChargeSwitchOn: 0,                          //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                    //ExcessChargeSwitchOff: 1,                         //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                    //----------------------------------------
                                    // Beispiel für Nutzung einer Schlaltersteckdose:
                                    //----------------------------------------
                                                                                        //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt:
                                    ExcessActualPowerID: "fritzdect.0.DECT_116570551682.power",
                                                                                        //ID des Schalters, der den Speicher aktiviert: 
                                    ExcessChargeSwitchID: "fritzdect.0.DECT_116570551682.state", 
                                    ExcessChargeSwitchOn: true,                         //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                    ExcessChargeSwitchOff: false,                       //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                    //----------------------------------------
                                    //****************************************
                                    Debug: false, mlog: true,
                                    PlotCmdID: 99999,
                                    

                                    U 1 Reply Last reply Reply Quote 0
                                    • Thomas Bucher
                                      Thomas Bucher @DerSmily last edited by

                                      @dersmily schau mal ob der History Adapter läuft

                                      Maik Becker 1 Reply Last reply Reply Quote 0
                                      • Maik Becker
                                        Maik Becker @Thomas Bucher last edited by

                                        @Waly_de kann man das Skript prüfen lassen ob der Powerstream Strom einspeist.

                                        Ich habe zur Zeit eine Delta Pro und Max mit je einem Powerstream, aber zur Zeit ist es wieder mal ab und zu, dass er die Batterie ladet und aber auch über den Powerstream 300 Watt einspeist

                                        1 Reply Last reply Reply Quote 0
                                        • U
                                          ub35bo @MikeRow last edited by

                                          @mikerow
                                          Hallo, so wie du es beschreibst, willst du die Delta Pro zeitgesteuert über einem FritzDect-Schalter laden. Damit ist die Steuerung der FritzDect zunächst unabhängig vom Leistungsanpassungsscript, sie kann maximal von dort aufgerufen werden.
                                          Ich habe daher zunächst iobroker alle meine FritzDect-Schalter ermitteln lassen, dann den entsprechenden Schalter ausgewählt und schreibe dann in "fritzdect.0.DECT_123456789012.state" (bitte an deine Steckdose anpassen) den Wert "0" für aus bzw. "1" für an.

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            gooflo last edited by

                                            @Waly_de das Skript ist einfach toll!! Heute habe ich für einen Anwendungsfall bei zwei Powerstream mit Batterien zusätzlich zum Füllstand noch die Batteriekapazität bei der Watt-Verteilung mit einbezogen, damit wenn ein PS ne 4 kWh Batterie dran hat und der andere eine 2kWh tatsächlich beide gleich schnell entladen werden. Sowas macht einfach Spaß 🙂

                                            Falls jemand Interesse hat oder Du @Waly_de die Option einbauen willst (schöner wäre natürlich die Kapazität auszulesen, aber das geht leider nicht so einfach soweit ich das Beurteilen kann):

                                            Bei der Konfiguration pro PS einfügen

                                                        battCapacity: 4.096, // Kapazität der angeschlossenen Batterie
                                            

                                            Bei der Berechnung von psBatSumme:

                                             let psCounter = 0, psBatSumme = 0
                                             let psBatSummekWh = 0 // new
                                             for (var i = 0; i < ConfigData.seriennummern.length; i++) {
                                                 const asn = ConfigData.seriennummern[i].seriennummer
                                                 if (ConfigData.seriennummern[i].typ == "PS" && ConfigData.seriennummern[i].seriennummer != "XXXXXXXXXXXXX" && GlobalObj[asn].regulieren) {
                                                     psCounter = psCounter + 1
                                                     psBatSumme = psBatSumme + GlobalObj[asn].batstate
                                                     psBatSummekWh = psBatSummekWh + GlobalObj[asn].batstate / 100 * ConfigData.seriennummern[i].battCapacity // new
                                                     //gapSumme = gapSumme + GlobalObj[asn].GAPdurchschnitt
                                                 }
                                             }
                                            

                                            Bei der Berechnung von Batfaktor:

                                            let Batfaktor = 1
                                            let BatfaktorkWh = 1 // new
                                            if (psBatSumme != 0) {
                                              Batfaktor = (BatBedarf / psBatSumme)
                                              BatfaktorkWh = (BatBedarf / psBatSummekWh) // new
                                            }
                                            

                                            Und abschließend die Verwendung im Balance Mode:

                                            // Setpower = Setpower + (GlobalObj[asn].batstate * Batfaktor)
                                            // mlog("PS:" + GlobalObj[asn].PsName + " Setpower =  " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " Batfaktor = " + Batfaktor )
                                            Setpower = Setpower + (GlobalObj[asn].batstate/100 * ConfigData.seriennummern[i].battCapacity * BatfaktorkWh) // new
                                            mlog("PS:" + GlobalObj[asn].PsName + " Setpower =  " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " BatfaktorkWH = " + BatfaktorkWh ) // new
                                            
                                              
                                            
                                            Maik Becker W 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            717
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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