NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@gooflo Hallo, ich hätte Interesse und da ich zwei Powerstreams mit einer Batterie habe
1x Powerstream mit Delta Pro
1x Powerstream mit Delta MaxKannst du mir beim Einbau helfen.
-
@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
-
@gooflo danke, werde ich probieren, kannst du das auch für das laden einstellen, ich lade nur über AC.
-
@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?
-
@gooflo Hallo, leider nein. Ich nutze zur Zeit die Überschussladung mit Steckdose.
-
@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. -
@waly_de Hallo, auch wenn du Privat viel zu tun hast, wäre es möglich, wenn das mit einbaust noch prüfen zu lassen ob die PS schon Strom einspeisen. Wenn ja den soll er die DM D2M nicht weiter laden. Wäre nett von dir.
-
@maik-becker sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@waly_de Hallo, auch wenn du Privat viel zu tun hast, wäre es möglich, wenn das mit einbaust noch prüfen zu lassen ob die PS schon Strom einspeisen. Wenn ja den soll er die DM D2M nicht weiter laden. Wäre nett von dir.
Das verstehe ich nicht:
PV Energie von 400 W steht zur Verfügung Dein Haus Strombedarf ist 200 W.
Also gehen 200 W ins Haus und 200 W in die Batterie. Oder reden wir vom Überschuss laden? Das ist bereits so programmiert, dass es bei fehlenden Überschuss abgeschaltet wird.
Verzögerung, schalt Zeiten und Bedingungen dafür lassen sich in den Settings einstellen -
@waly_de wie reden von Überschussladung, ich arbeite ohne Solar. Da ich eine 3600 W Anlage auf dem Dach habe. Aber ab und zu gibt der PS Strom ins Netz aber lädt auch zur gleichen Zeit die Delat über die Überschussladung. Das Probelm ist aber auch nicht nur bei mir siehe Betrag: 15 Jun 2024, 09:07.
-
@waly_de hab's Dir per Mail geschickt. Wenn man überall den gleichen Wert einträgt (Defaultwert = 1.0) hat man das alte Verhalten. "0" sollte man nicht setzen, dann funktioniert's nicht
-
@gooflo Vielen Dank.. ich lade es hoch (Ich kann es aber auch nicht testen, weil ich nur eine Delta Batterie habe. Aber es wird schon laufen. )
Hier die Version von Florian:
1.2.5.f1 Fork von Florian Vogt- 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
- Feature hinzugefügt, um die Größe der Delta-Speicher beim Ausbalancieren der Entladeleistung zu berücksichtigen, damit die Batterien gleichmäßig geleert werden
-
@waly_de Hallo, kannst du mir bitte noch Helfen, arbeite mit einer DELTA Pro und DELTA Max über AC Laden, aber bekomme es nicht richtig hin.
Des weiteren ist noch das Probelm, das er teilweise lädt über AC und den Aber auch über den PS die Leitung raus gibt.
-
@maik-becker leider im Moment nicht. Da muss man wirklich genauer hinsehen und Protokoll Dateien untersuchen und und und, Dazu habe ich im Moment leider keine Zeit.
-
@waly_de Okay, danke. kannst du dir aber mal meine Config an Schauen, wenn ich sie per PM sende?
-
Kann das mal jemand prüfen lade nur über AC und hab zwei DELTA und Zwei PS nutze nur die Überschussladung.
*/ // Systemkoordinaten werden versucht zu ermitteln und als Default den Variablen zugeordnet. var latitude var longitude; // Ermitteln des Standortes aus den Einstellungen. getStandortKoordinaten() // Protokollierung einzelner Geräte bei Bedarf const logpath = '/opt/iobroker/log/'; const SERIAL_TO_LOG = "DCEBF8ZFAxxxxx" const LogAllOfSerial = false //false= nur Set-Anweisungen, true = alles von der Seriennummer /*************************************** ********** YOUR DATA HERE ************ ****************************************/ var ConfigData = { email: "xx@xxxxx", // Die App-Zugangsdaten von ecoFlow passwort: "xxxxx", SmartmeterID: "sonoff.0.mqtt.bridge-01.SML_aktuelle_Wirkleistung", // State, der den aktuellen Gesamtverbrauch in Watt anzeigt seriennummern: [ //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################ { seriennummer: "HW51ZEH4SFxxxxxx", // Die Seriennummer des Gerätes name: "PowerStream Pro", // beliebiger Name MaxPower: 800, // 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: -2, // 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: 100, lowBatLimitPozOff: 101, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 800, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist }, { seriennummer: "HW51ZEH4SFxxxxxx", // Die Seriennummer des Gerätesin name: "PowerStream Max", // beliebiger Name MaxPower: 800, // 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: -2, // 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: 100, lowBatLimitPozOff: 101, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 800, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist }, //####################################################################### { seriennummer: "DCEBF8ZFA1xxxx2", name: "DELTA Pro", typ: "D2M", subscribe: true, // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt }, { seriennummer: "DAEBZ5KF11xxxxxx", name: "DELTA Max", typ: "DM", 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: "Hoymiles2000", // Beliebiger Name id: "mqtt.0.solar.1234567890.0.power", // 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: 30, // 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: true, // 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: 0, // 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: //**************************************** //**********test */ // Überschussladung: //**************************************** ExcessCharge: true, //Überschussladung AN/AUS (true/false) //ID zum Einstellen der Ladeleistung des Speichers in Watt: ExcessChargePowerID: "ecoflow-mqtt.0.DAEBZ5KF118xxx.inv.cfgSlowChgWatts", //ID des aktuellen Ladestandes des Speichers in %: ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_DAEBZ5KF1xxx.data.params.bmsMaster.soc", ExcessChargeSwitchMin: 2, //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss. ExcessChargeMaxPower: 2600, //Maximale Ladeleistung des Speichers in Watt ExcessChargeOffsetPower: 0, //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen. ExcessChargeStartPower: 10, //Mindest-Überschussleistung zum Einschalten des Speichers ExcessChargeStopPower: 0, //Überschussleistung bei der der Speicher abgeschaltet werden soll. ExcessChargeStartPowerDurationMin: 0, //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: 1, //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 Nutzung einer Schlaltersteckdose: //---------------------------------------- //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt: ExcessActualPowerID: "sonoff.0.mqtt.bridge-01.SPM_ActivePower_1", //ID des Schalters, der den Speicher aktiviert: ExcessChargeSwitchID: "mqtt.1.cmnd.Stromschneine.Power2", ExcessChargeSwitchOn: "ON", //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...) ExcessChargeSwitchOff: "OFF", //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...) //---------------------------------------- ExcessCharge: true, //Überschussladung AN/AUS (true/false) //ID zum Einstellen der Ladeleistung des Speichers in Watt: ExcessChargePowerID: "ecoflow-mqtt.0.DCEBF8ZFAxxxx.inv.cfgSlowChgWatts", //ID des aktuellen Ladestandes des Speichers in %: ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_DCEBF8ZFAxxxx.data.params.bmsMaster.soc", ExcessChargeSwitchMin: 2, //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: 1, //Mindest-Überschussleistung zum Einschalten des Speichers ExcessChargeStopPower: 0, //Überschussleistung bei der der Speicher abgeschaltet werden soll. ExcessChargeStartPowerDurationMin: 0, //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: 1, //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 Nutzung einer Schlaltersteckdose: //---------------------------------------- //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt: ExcessActualPowerID: "sonoff.0.mqtt.bridge-01.SPM_ActivePower_0", //ID des Schalters, der den Speicher aktiviert: ExcessChargeSwitchID: "mqtt.1.cmnd.Stromschneine.Power1", ExcessChargeSwitchOn: "ON", //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...) ExcessChargeSwitchOff: "OFF", //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...) //---------------------------------------- // //**************************************** Debug: false, mlog: false, PlotCmdID: 99999, } //***************************************/ //***************************************/ // EXTERNE STATES zum Manipulieren von Konfigurationsvariablen var externConfig = [ //############# Diesen Abschnitt für jeden einzelne Wert anlegen ################ //Beispielwerte: { VarName: "seriennummern[0].lowBatLimitPozOn", //Variabelname aus "ConfigData" bei Aufzählungen [0...X] in der Reihenfolge der Angaben id: "0_userdata.0.ecoflow.ExStateTest", //Das Objekt (State) das den Wert für diese Variable enthalten soll. Muss manuell angelegt werden. create: false, //true: das Object wird unterhalb von "statesPrefix" angelegt. false: Es muss existieren oder manuell angelegt werden }, { VarName: "mlog", //Variabelname aus "ConfigData" bei Aufzählungen [0...X] in der Reihenfolge der Angaben id: "mlog", //Das Objekt (State) das den Wert für diese Variable enthalten soll. create: true, //true: das Object wird unterhalb von "statesPrefix" angelegt. false: Es muss existieren oder manuell angelegt werden }, //####################################################################### ];
-
Mein Beitrag hat zunächst nur indirekt mit dem Skript zu tun.
Mir geht es darum, möglichst ein Feedback von euch zu bekommen, ob es euch gelingt, mit oder ohne Skript stabil 800 Watt in das Hausnetz einspeisen zu können.
Ich habe eine Delta Pro in Kombination mit dem PS, der 800 Watt leisten kann. Leider speist der PS nur dann 800 Watt bzw. mehr als 600 Watt ein, wenn er nicht mit dem mit der Delta verbunden ist.
Die Kommunikation mit dem Support von Ecoflow ist sehr zäh und noch nicht wirklich zielführend.
Ist Delta Pro mit dem PS verbunden, werden nur ganz selten und dann nur kurzzeitig mehr als 600 Watt eingespeist.
In meiner Konfiguration hat die Einspeisung in das Hausnetz Vorrang vor der Batterieladung.
In der Anlage ist ein Chart eines typischen Tagesverlaufs und zeigt, wie die Ecoflow Firmware ohne äußeren Eingriff regelt. Die Daten wurden vom Adapter ioBroker.ecoflow-mqtt erfasst. PV Output Power bezieht sich auf den Solareingang der Delta, PV1 und PV2 auf die des PS. Man sieht, dass selbst bei einem Ladestand zwischen ca. 66% und 99% maximal 600 Watt ausgegeben werden bzw. zyklisch sogar nur 500 Watt.
Hat jemand ähnliche Erfahrungen gesammelt und z.B. beobachtet, dass, wenn das Script eine Einspeisung von mehr als 600 Watt einstellt, der PS zwar den Wert übernimmt aber weniger Power einspeist? -
@ksbweb https://www.offgridtec.com/media/product_attachements/EcoFlow_PowerStream_Datenblatt.pdf
Der Powerstream hat am DC Eingang / Ausgang , also da wo deine Delta dran hängt, maximal 600 W Leistung.... auch die 800W version.
Lediglich auf der PV Seite hast du zweimal 400 W also 800 W und auf der AC Seite ebenfalls 800 W.
D.h. wenn du die Batterie lädst, gehen maximal 600 W in die Batterie und wenn du keine Sonne hast und nur aus der Batterie einspeist, dann sind es auch nur 600WEingespeist werden können nur dann 800 W, wenn entweder zweimal 400 W über die PV Module anliegen, oder mindestens 200 W PV power und 600 W aus der Batterie kommen.
Alles klar?? -
@waly_de Alles klar, danke für deine Antwort.
Die Situation ist aber oft gegeben, dass viel Power an den Modulen des PS anliegt und auch die Batterie genug beisteuern kann, z.B. hier:
Auch im Chart oben sieht man, dass pv1 + pv2 an den PS-Eingängen zu vielen Zeitpunkten deutlich über 600 Watt liegt bei gleichzeitig hohem Batterieladestand.
Nur in Ausnahmefällen kann das aber der PowerStream, jedoch dann nur für wenige Minuten. Hier ist ein Screenshot dafür. -
@waly_de Hier eine erste Rückmeldung zum neuen Skript.
Weil ich eine große Differenz beim Ladezustand der Akkus hatte, dachte ich mir dieses Skript gleich zu verwenden. Es sieht bis jetzt so aus, als ob es super funktioniert. Hatte es heute Morgen aktiviert.
Da ich D2M habe, habe ich die Batteriekapazität auf 2.05 eingestellt, obwohl es so aussieht, als ob nur eine Nachkommastelle eingetragen werde soll. Wie gesagt scheint es zu funktionieren. Werde es weiter beobachten…
Vielen Dank an Florian!
Eine Beschreibung der Funktionsweise wäre schön. -
@ksbweb Alt Klassiker, lies mal in einem Forum von Ecoflow direkt. Ohne aktive Kühlung geht der Powerstream nach wenige Minuten in die Knie..