NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@aherby
Mal schauen was sich daraus ergibt -
Hi,
ich habe weiß nicht was bei mir passiert ist, jedoch funktioniert das Script nicht mehr korrekt.
Ich habe 3 PS jeweils mit Powerstations (Delta2Max, DeltaPro und Delta Max) verbunden. Ich habe zuletzt ein wenig umgebaut und auch das neuste PS Update gefahren. Seitdem funktioniert nur noch ein PS und bei den anderen speist er nicht mehr aus den Akkus ein, trotz genügend Kapazität. Die PS ist bei Delta Pro an Port 1, ein Shelly Pro EM3 liest den Bedarf//############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################ { seriennummer: "XXX", // Die Seriennummer des Gerätes name: "PowerStream (DeltaPro)", // beliebiger Namen 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: Powerstrem:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "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: 10, battPozOff: 50, // 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: 0, // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus gechaltet wird. 0 für kein Rückschalten. lowBatLimitPozOn: 10, lowBatLimitPozOff: 45, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 0, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist }, //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################ { seriennummer: "XXX", // Die Seriennummer des Gerätes name: "PowerStream (DeltaMax)", // beliebiger Namen 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: Powerstrem:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "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: 10, battPozOff: 50, // 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: 0, // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus gechaltet wird. 0 für kein Rückschalten. lowBatLimitPozOn: 10, lowBatLimitPozOff: 45,// Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 0, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist }, //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################ { seriennummer: "XXXX", // Die Seriennummer des Gerätes name: "PowerStream (Delta2Max)", // beliebiger Namen 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: Powerstrem:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "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: 10, battPozOff: 50, // 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: 0, // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus gechaltet wird. 0 für kein Rückschalten. lowBatLimitPozOn: 12, lowBatLimitPozOff: 45,// Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 0, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist },
im Log kommt nur noch die Delta2Max korrekt :
PowerStream [PowerStream (Delta2Max)] Batteriestand unter Limit:12% (6%). Limitiere Einspeiseleistung auf: 0W
bei den anderen beiden kommt immer nur "Batterie unter 10%, schalte auf Batterie Prio.
Habe ich irgendeinen Config Fehler den ich nicht sehe? Er schaltet die Prioritäten nicht mehr korrekt. Ich weiß jetzt nicht ob dies am PS Update oder an meiner CFG liegt.
Kann mir hier einer helfen?EDIT: ich habe es nachdem ich gepostet habe selbst gefunden. Der Wert prioOffOnDemand ist ausschlaggebend...wenn man zu lange auf das Script schaut
-
@guhfy9966 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
battPozOn: 10, battPozOff: 50,
das sieht auch nicht so aus, als sei es dass was Du willst. Bei 10% Batterie soll er mit 600 W einspeisen, ohne zu regeln? Und ab 50% wieder normal arbeiten? gleichzeitig:
lowBatLimitPozOn: 10, lowBatLimitPozOff: 45,
ab 10% soll auf lowBatLimit: 0. also 0 Watt Ausgang
geschaltet werden, bis die Batterie wieder bei 45% ist?Guck Dir dazu doch noch mal die Standardeinstellungen an. Ich denke die sind eine gute Ausgangsbasis...
-
Danke für den Hinweis, ich glaube das hatte ich anders interpretiert .
Aktuell bleibt das Script einfach stehen und meine grafana Oberfläche steht. Kein Fehler und ich sehe nicht woher das kommt. Jemand einen tip wie ich das debugge?
-
@guhfy9966 auch keine Hinweise im Protokoll?
In jedem Fall solltest Du das State-Limit in den Einstellungen vom Javascriptadapter deutlich erhöhen. Bei so vielen Geräten kannst Du es ruhig mal auf 8000 stellen... -
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@guhfy9966 auch keine Hinweise im Protokoll?
In jedem Fall solltest Du das State-Limit in den Einstellungen vom Javascriptadapter deutlich erhöhen. Bei so vielen Geräten kannst Du es ruhig mal auf 8000 stellen...ok, versuche ich mal! THX
Edit: Mein Wert von 6000 war wohl zu niedrig. Mit 8000 läuft alles. Danke!
Mir ist aufgefallen, dass die Powerstreams aktuell immer minimale Leistung abgeben, obwohl ich es (Batterie <10% = 0 Watt Abgabe) eingestellt habe:
Zuvor hatte ich da eine sehr saubere Abgab, die entweder am Verbrauch angelehnt war (also mehrere 100Watt) oder eben 0. Woher kann so ein Effekt kommen?
-
@guhfy9966 ich habe das bei mir nach dem letzten Firmwareupdate auch beobachtet. Habe da im Moment keine Erklärung oder Lösung. Eigentlich sollte die PS das eigenständig unterbinden.
-
@guhfy9966 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Vielen Dank, hat super funktioniert. Kannst du mir noch helfen wie ich mit "Additional Power" einen Solarertrag einer Delta2Max (angeschlossen an PV1) dazu addieren kann?
Hast Du das gelöst?
bei mir (Delta Max) sieht das so aus:AdditionalPower: [ { name: "Hoymiles2000", id: "mqtt.0.solar.ac.power" }, { name: "Delta PV-Input", id: "0_userdata.0.ecoflow.app_device_property_XXX.data.params.mppt.inWatts", factor: 10 }, ],
Das mit dem Faktor funktioniert aber erst in der neuen Version des Skriptes (1.2) das vor der Tür steht.
Die Leistung wird auf diese Weise in "TotalPV" mit aufgenommen.
Ich brauche jetzt nur ein wenig Sonne für den abschießenden Test... also Daumen drücken...Ich spoiler schon mal das Changelog:
(1.2) 04.12.2023
- Neue Funktion Überschussladung implementiert:
Bei überschüssiger Leistung kann nun ein zusätzlicher Speicher aktiviert werden.
Da die neue Firmware für die DELTAs inzwischen duales Laden (Solar und AC gleichzeitig) unterstützt, kann damit die
Ladeleistung der Deltas bis 2000W oder mehr erhöht werden. Auch eine Integration von weiteren Wechselrichtern ohne eigene
Batterie wird möglich.
Konfiguration: siehe Einstellungen weiter unten zu "ExcessCharge" (Überschussladung) - Neuer Parameter unter AdditionalPower: "factor" für den Divisionsfaktor. Bei den Deltas dort 10 angeben.
- Filter gegen Datenflut der Deltas eingebaut, der das System entlastet, wenn auch die Deltas auf "subscribe: true" gestellt werden
- Verschiedene Optimierungen und Bugfixes
die Einstellungen:
//**************************************** // Überschussladung: //**************************************** ExcessCharge: false, //Überschussladung AN/AUS (true/false) //ID zum Einstellen der Ladeleistung des Speichers in Watt: ExcessChargePowerID: "0_userdata.0.ecoflow.app_xx_xx_thing_property_set.writeables.slowChgPower", //ID des aktuellen Ladestandes des Speichers in %: ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_xx.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 ExcessChargeStartPower: 50, //Mindest-Überschussleistung zum Einschalten des Speichers ExcessChargeStartPowerDurationMin: 2, //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet 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: "sonoff.0.NOUS-DVES_F0A844.ENERGY_Power", //ID des Schalters, der den Speicher aktiviert: ExcessChargeSwitchID: "sonoff.0.NOUS-DVES_F0A844.POWER", 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"...) //---------------------------------------- //****************************************
- Neue Funktion Überschussladung implementiert:
-
@waly_de
Habe es aktuell mit einem eigenen Umrechnungsscript gelöst. Deine neuen Integrationen kommen daher wie gerufen.
Super, freue mich darauf! -
So. Zwar gestaltet sich das Testen bei dem bisschen Sonne sehr schwierig. Aber ich wage dennoch mal die Veröffentlichung der neuen Version.
(1.2) 04.12.2023
- Neue Funktion Überschussladung implementiert:
Bei überschüssiger Leistung kann nun ein zusätzlicher Speicher aktiviert werden.
Da die neue Firmware für die DELTAs inzwischen duales Laden (Solar und AC gleichzeitig) unterstützt, kann damit die
Ladeleistung der Deltas bis 2000W oder mehr erhöht werden. Auch eine Integration von weiteren Wechselrichtern ohne eigene
Batterie wird möglich.
Konfiguration: siehe Einstellungen weiter unten zu "ExcessCharge" (Überschussladung) - Neuer Parameter unter AdditionalPower: "factor" für den Divisionsfaktor. Bei den Deltas dort 10 angeben.
- Filter gegen Datenflut der Deltas eingebaut, der das System entlastet, wenn auch die Deltas auf "subscribe: true" gestellt werden
- Verschiedene Optimierungen und Bugfixes
die Einstellungen:
//**************************************** // Überschussladung: //**************************************** ExcessCharge: false, //Überschussladung AN/AUS (true/false) //ID zum Einstellen der Ladeleistung des Speichers in Watt: ExcessChargePowerID: "0_userdata.0.ecoflow.app_xx_xx_thing_property_set.writeables.slowChgPower", //ID des aktuellen Ladestandes des Speichers in %: ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_xx.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 ExcessChargeStartPowerDurationMin: 2, //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet 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: "sonoff.0.NOUS-DVES_F0A844.ENERGY_Power", //ID des Schalters, der den Speicher aktiviert: ExcessChargeSwitchID: "sonoff.0.NOUS-DVES_F0A844.POWER", 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"...) //---------------------------------------- //****************************************
Download:
- Neue Funktion Überschussladung implementiert:
-
sorry hat sich alles in wohlgefallen aufgelöst und ich kann das post nicht löschen. Disregard/
-
@sirdir such mal nach :
function SetBasePower() { logM = false
Wenn Du da true setzt, werden die für mich wesentlichen Daten zur Regelung ausgegeben.
Was hast du bei ExcessChargePowerID angegeben?
Wahrscheinlich ist dort das Problem. Zeigt es auf den richtigen writeable? -
@sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
sorry hat sich alles in wohlgefallen aufgelöst
@sirdir Prima
-
@waly_de einen hätte ich doch noch: Könntest du die logM Variable auch in die ConfigData nehmen, so dass man sie als externen state anlegen kann? Dann könnte ich die über meine Statusseite ein/ausschalten und mich interessieren die logM Meldungen 100 mal mehr als die Debug.
-
@waly_de hat sich überschnitten. Ja das mit logM hab ich dann auch gemacht.. Ist halt eben nicht so bequem, für debug muss ich nur ein häkchen setzen. Und ja der writable war falsch, war in nem anderen path wo nur gelesen wird… sorry dafür. Hab den Wert eigentlich aus meinem Script nehmen wollen aber hab mein Script beim einfügen deines neuen Scripts versehentlich gelöscht… Zum Glück gibt es Backups, hat aber etwas gedauert.
-
@sirdir hab das mit dem logM jetzt mal gemacht, ist ja keine so grosse Sache… Wenn du nicht magst kann ich das auch bei neuen Versionen wieder machen ... Eine Frage hätte ich noch.
Verstehe den Sinn von AdditionalPower in deinem Script nicht wirklich. Vielleicht halt weil ich ja keinen Sensor am Zähler hab sondern ein eigenes Script nutze (hab grad gesehen du hast ja nun für Tibber wohl auch sowas). Wenn du nen Sensor am Zähler hat, liefert dir der doch schon den Überschuss aller anderen Solaranlagen? Was bringt es, die noch zu konfigurieren? -
@sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
hab das mit dem logM jetzt mal gemacht, ist ja keine so grosse Sache… Wenn du nicht magst kann ich das auch bei neuen Versionen wieder machen
ist ne gute Idee.. ich versuch dran zu denken
@sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Verstehe den Sinn von AdditionalPower in deinem Script nicht wirklich. Vielleicht halt weil ich ja keinen Sensor am Zähler hab sondern ein eigenes Script nutze (hab grad gesehen du hast ja nun für Tibber wohl auch sowas). Wenn du nen Sensor am Zähler hat, liefert dir der doch schon den Überschuss aller anderen Solaranlagen? Was bringt es, die noch zu konfigurieren?
Naja, das ist grundsätzlich wichtig um die Zusammensetzung des Verbrauchs zu analysieren und damit zu bestimmen, wie viel in die Batterien geht und die Statistiken sauber zu führen. Der Zähler gibt ja nur Summen aus (mein Zähler gibt auch aktuell nur einen einzigen Wert in Watt zurück.)
Realpower, das ist der Eigentlich Verbrauch, ohne Einspeisungen und Speicherleistung, ist z.B.:
Smartmeterwert - Einspeisung der PS - AdditionalPower + Überschussladung
Realpower - BasePowerOffset ist dann der Gesamtbedarf dem es zu decken gilt oder der den Überschuss darstellt.
Um zu wissen, ob und wie viel ich davon aus den Batterien ziehen muss, brauche ich PV-Total in dem auch AdditionalPower enthalten ist.
Der Batbedarf ist nämlich der Gesamtbedarf - PV-Total.Die Überschussladung könnte auch ohne das auskommen. Aber dann bekommt die Regelung der Ladeleistung über die PS Probleme und die Verbrauchsstatistik würde nicht stimmen.
-
@waly_de Hmm, da muss ich mir direkt überlegen, was das genau bedeutet. Naja, glaube probieren geht über studieren, ich trage meine Systeme mal ein.
-
@waly_de sorry, also hab die Systeme eingetragen. Solar kommt jetzt natürlich nichts mehr rein, aber hab noch nen grid tie inverter mit ner batterie, der gerade 95W liefert. Dein script sagt totalPV: 10…?
{ name: "Grid tie inverter", id: "shelly.0.SHSW-25#10D0C2#1.Relay0.Power", factor: 1 }, // Der Objektpfad zu dem Leistungswert in Watt (W)
So sieht der Eintrag aus… Warum 10?\
Edit:
Ah ich seh schon, das kommt in additionalpowersum nicht in totalPV und der wert wird auch nicht ausgegeben im log… -
@sirdir im Regelkreis werden immer 10W zur Solarleistung addiert, damit der PS nicht abregelt wenn die Batterie voll ist. Das siehst du in den mlog ausgaben. Aber in den States sollte es richtig stehen:
0_userdata.0.ecoflow.totalPV
und
0_userdata.0.ecoflow.AdditionalPowerSum