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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    ecoflow-connector-Script zur dynamischen Leistungsanpassung

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                                • Maik Becker
                                  Maik Becker @gooflo last edited by

                                  @gooflo Hallo, ich hätte Interesse und da ich zwei Powerstreams mit einer Batterie habe

                                  1x Powerstream mit Delta Pro
                                  1x Powerstream mit Delta Max

                                  Kannst du mir beim Einbau helfen.

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

                                    @maik-becker klar, gerne. Du musst eigentlich nur die Code-Schnipsel an die richtige Stelle im Code kopieren und den alten Code damit ersetzen. "battCapacity" natürlich pro PS einmal in die Config aufnehmen bei den ganzen anderen Parametern und die Werte für Deine Speichergröße anpassen (Größe in kWh).

                                    Und zur Sicherheit natürlich vorher mal ein Backup des gerade bei Dir laufenden Skripts machen 🙂

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

                                      @gooflo danke, werde ich probieren, kannst du das auch für das laden einstellen, ich lade nur über AC.

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

                                        @maik-becker mit AC Laden habe ich mich noch nicht beschäftigt. Kannst Du mir die Stelle im Code sagen? Wir bei AC Laden nicht sowieso immer so viel geladen wie geht?

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

                                          @gooflo Hallo, leider nein. Ich nutze zur Zeit die Überschussladung mit Steckdose.

                                          1 Reply Last reply Reply Quote 0
                                          • W
                                            Waly_de @gooflo last edited by

                                            @gooflo das ist ja cool! 🙂 sehr schöne Idee!
                                            Ich hab leider im Moment privat so viel um die Ohren, dass ich mich um nichts kümmern kann.
                                            Wenn du magst, schick mir doch bitte die letzte Version vom Skript mit deinem Code. Dann stelle ich das so online für alle. ich denke, wenn standardmäßig die Batteriekapazität auf null eingestellt wird, dürfte die Regelung auch wenn man es nicht eingestellt keinen Unterschied machen, oder?
                                            Ich muss dieses Skript unbedingt mal auf github bringen, damit sowas einfacher wird.

                                            Maik Becker 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            512
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            126
                                            1630
                                            509768
                                            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