NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@waly_de
Ah ok, danke Dir. Dann ist mein Gedanke ja korrekt WENN ich die Batterien nur laden möchte OHNE Einspeisung.
Damit könnte ich (Frage von gestern) ja regeln, dass tagsüber erstmal die Batterien geladen werden bis Abends verbraucht wird. Im Sommer wird es mit viel Sonne vermutlich zu Problemen kommen, da ich den Ertrag limitiere mit dieser Einstellung.Danke!
-
@waly_de ja aber was soll das für ein Datenpunkt sein und woher kommt der?
die struktur von meinem Sonoff IR Reader sieht so aus:
-
@accu Es ist der .POWER Datenpunkt.
-
@holgerwolf sorry stehe gerade auf dem Schlauch. genau den habe ich doch im Skript angegeben und der wird auch gezogen.
habe mal gesucht und im skript kommt der datenpunkt bei der Schaltersteckdosen Sektion vor, die ich nicht habe und deshalb auch nicht konfiguiert habe. -
@Waly_de
Die Einspeiseregelung des PS passt jetzt in meinem Fall mit dem Sensor aus meiner Tibber-Bridge sehr gut.Habe jetzt gestern Abend noch die Überschussladung "programmiert" und warte gespannt auf Überschuss meiner PV Anlage.
Unter AdditionalPower habe ich den Wert der Überschüssigen Einspeisung in positiven Watt Werten hinterlegt.
Den Wert lese ich über den ModBUS Adapter aus meiner SolarEdge Wechselrichter einer 36,77kWp Anlage aus.
Kann ich in meinem Fall ohne PV Module an PS oder Delta auch nur mit dem Tibber Wert der Einspeisung arbeiten der aber negativ ist!?Bei Divisonsfaktor habe ich wie im Skript angegeben 10 für die Delta Pro gesetzt --> Das passt so auch wenn der oben genannte AdditionalPower Wert korrekt in Watt kommt?
Geschalten werden soll die AC-Ladung über einen Shelly Plug den ich ebenso eingefügt habe.
Einmal mit seinem Power-Wert und einmal mit seinem Switch (True/False).So sollte es jetzt funktionieren?
Ziel ist es ab 250Watt Überschuss die Shelly einzuschalten und dann den Ladestrom AC der DeltaPro nach Überschuss anzupassen.
Hier noch die Codepassage:
name: "DELTA Pro", typ: "DM", subscribe: true, // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt }, //####################################################################### ], 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: "SolarEdge Restliche AC-Einspeisung", // Beliebiger Name id: "modbus.0.holdingRegisters.40207", // Der Objektpfad zu dem Leistungswert in Watt (W) factor: 10, // Divisionsfaktor für den Leistungswert. (10 für die Delta) }, //####################################################################### ], //**************************************** // Erweiterte Einstellungen: //**************************************** SmartmeterTimeoutMin: 1, // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit... SmartmeterFallbackPower: 300, // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden. 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 BasePowerOffset: 0, // 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: 10, // 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_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: 1, //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss. ExcessChargeMaxPower: 2300, //Maximale Ladeleistung des Speichers in Watt ExcessChargeOffsetPower: -50, //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen. ExcessChargeStartPower: 250, //Mindest-Überschussleistung zum Einschalten des Speichers ExcessChargeStopPower: 200, //Überschussleistung bei der der Speicher abgeschaltet werden soll. ExcessChargeStartPowerDurationMin: 1, //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: "shelly.0.shellyplusplugs#d4d4da345b5c#1.Relay0.Power", //ID des Schalters, der den Speicher aktiviert: ExcessChargeSwitchID: "shelly.0.shellyplusplugs#d4d4da345b5c#1.Relay0.Switch", 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, } //***************************************/
-
@accu Eben... der Pfad, den du angegeben hast: "sonoff.0.NOUS-DVES_F0A844.POWER" hat wenig mit dem zu tun was auf dem Bild zu sehen ist. Fahre mit der Maus über den Punkt "power", dann erscheint daneben ein Symbol zum kopieren des Pfades. Wenn du darauf klickst, befindet sich der richtige Pfad in Zwischenablage, füge das einfach im Skript ein und es sollte funktionieren.
-
@thomas-weller Interessante Anwendung.
Also ich habe es richtig verstanden, dass du weder an der PS noch an der Delta ein PV Modul angeschlossen hast?
Theoretisch sollte das so funktionieren. Allerdings muss der Faktor auf eins. zehn muss man nur angeben, wenn man den Datenpunkt der Delta für den PV Ertrag wählt, weil der zum Beispiel 100 für 10 W anzeigt.Ob das alleine mit einem negativen Smart Meter Wert funktioniert kann ich nicht 100-prozentig sagen, weil mein Smart Meter nicht in der Lage ist negative Werte anzuzeigen. Aber es könnte gut sein Probiers mal aus und sag mir Bescheid ob's geklappt hat.
-
@accu habe mal gesucht und im Skript kommt der datenpunkt bei der Schaltersteckdosen Sektion vor, die ich nicht habe und deshalb auch nicht konfiguriert habe.
Jetzt steh ich ein bisschen auf dem Schlauch nutzt du die Überschussladung? Wenn du das gar nicht konfiguriert hast, kannst du die Meldung ignorieren. Wenn du allerdings die Überschussladung nutzen möchtest, dann muss dieser Schalterpunkt auch richtig konfiguriert werden.
-
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@thomas-weller Interessante Anwendung.
Also ich habe es richtig verstanden, dass du weder an der PS noch an der Delta ein PV Modul angeschlossen hast?
Theoretisch sollte das so funktionieren. Allerdings muss der Faktor auf eins. zehn muss man nur angeben, wenn man den Datenpunkt der Delta für den PV Ertrag wählt, weil der zum Beispiel 100 für 10 W anzeigt.Ob das alleine mit einem negativen Smart Meter Wert funktioniert kann ich nicht 100-prozentig sagen, weil mein Smart Meter nicht in der Lage ist negative Werte anzuzeigen. Aber es könnte gut sein Probiers mal aus und sag mir Bescheid ob's geklappt hat.
Habe den Faktor also auf 1 gestellt.
Hab jetzt 1.250Watt Überschuss aber die Shelly Steckdose schaltet nicht ein.
Hier der Log, er sagt immer knapp über 2.000Watt Überschuss:
12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: Lastcutoff: 0 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: gapSumme: -2309 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: Bedarf : -2309 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: PStotalPV (+10 W/PS): 10 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: Gobal totalPV: 1233 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: PVBedarf : -2309 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: BatBedarf: 0 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: PVfaktor:-230.9 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: Batfaktor:0 12.1.2024, 10:28:42.140 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: ueberschuss:2309 12.1.2024, 10:28:42.141 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: ************************************* 12.1.2024, 10:28:42.156 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: Änderung für Einspeisung gesendet PS:[PowerStream] : 0 W 12.1.2024, 10:28:43.271 [info ]: javascript.0 (892) script.js.EcoFlow_Steuerung: PeakSkip Delta: 213
edit:
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:Also ich habe es richtig verstanden, dass du weder an der PS noch an der Delta ein PV Modul angeschlossen hast?
Ja, hab bisher keine Module am PS und auch nicht an der Delta.
-
@waly_de habe jetzt mal meinen Shelly da eingetragen, der hinter meiner Delta Pro am AC Netzstrom sitzt. Bisher hatte ich den direkt über Regeln in der Shelly App angesteuert nach dem Motto: WENN PV Ertrag größer XYZ dann schalte AC Laden der EF DP ein.
Mit den Boardmitteln der Shelly app finde ich ganz gut, dass man da eine Hysterese konfigurieren kann. Also wenn man Wolken sind, dass der Shelly nicht gleich wieder ausgeht und der AC Eingang ständig AN und wieder AUS geschalten wird.Aber gut - ich probiere es jetzt mal mit deinem Skript -- Wenn mal Sonne da wäre ...
-
Weiß jemand wie man einen lokalen MQTT-Broker zwischen den Geräten und der Cloud zum Beobachten des Datenverkehrs dazwischenschaltet?
-
@foxthefox nicht direkt aber was wäre wenn du z.B. eine Software wie MQTT Explorer mit den Daten von Ecoflow fütterst
oder du Wireshark wäre auch eine Möglichkeit zum Test. -
@aherby
Mir geht es um die Möglichkeit ungefiltert den Datenaustausch zu sehen und nicht auf den bekannten topics die man abonniert. Ich bin auf der Suche nach unbekannten topics, die ggf für die Kommunikation zwischen Plug und Stream genutzt werden. Mqqt Explorer auf den Broker von ecoflow anzusetzen geht glaub ich nicht mit wildcard. Wireshark au wlan ist glaub ich auch etwas schwierig und wenn es verschlüsselt ist, eventuell nicht möglich. -
@waly_de Hallo was macht mein Script hier falsch oder was könnte der Grund dafür sein?
Script script.js.Ecoflow_Dym_Script_1_2_1 is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
-
@aherby das haben wir doch gefühlt schon 1000 mal hier im Thead besprochen und ist im Eingangsbeitag und im Skripheader behandelt...
-
@waly_de Soory ja ein typischer "Schicht 8 Fehler" System neu aufgesetzt und halt einige Fehlermeldungen gehabt. Dann einfach hier die Frage gepostet statt sich dann einfach mal 5 Minuten Zeit fürs Suchen oder verstehen zu nehmen.
-
Bei uns ist endlich mal wieder Sonne und ich kann ein wenig testen. So richtig rund läuft es bei mir mit mehreren PS und Deltas noch nicht.
Ich habe 3 PS:
- PS mit einer Delta Pro + Zusatzakku (PV an PS und an Delta)
- PS mit einer Delta2Max + Zusatzakku (PV an PS und an Delta)
- PS mit einer DeltaMax + Zusatzakku (PV an PS und an Delta) / diese steht in der Gartenhütte bei -5 Grad aktuell
Habe zum testen alle so eingestellt:
MaxPower: 50, // 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: 99, battPozOff: 94, // 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 gechaltet wird. 0 für kein Rückschalten. lowBatLimitPozOn: 5, lowBatLimitPozOff: 90,// Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 0, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
Folgende aktuelle Beobachtung:
Alles PS DeltaPro und PS Delta2Max fangen normal an mit dem Ertrag und der Batterieladung/Einspeisung. Nur wird der PS DeltaMax ignoriert und hat weder an über den Powerstream, noch an der DeltaMax Ertrag (0W PV Ertrag).
Das Log sagt wiederholend:
Ich verstehe nicht, warum weder die PS DeltaMax, noch die DeltaMax selbst anfängt zu erzeugen. Die Spannung der Panele liegt an. Die Temperatur kann es eigentlich nicht sein, da ich gestern irgendwie und irgendwann geschafft habe, dass zumindest der Powerstream anfängt zu laden.
Hat jemand eine Idee, die ich testen kann?
Edit: Ich habe jetzt überall die "Regulation" aus gemacht und der EF App die PS_DeltaMax getestet. Egal ob "Stromspeicher" oder "Stromversorgung" Priorisieren. Sobald ich über 50W Hausverbrauch einstelle holt er sich das.
Ich gehe davon aus, dass die Batterien zu kalt sind und keine Interaktion zulassen. Somit kann der PS nur direkt in den Haushalt einspeisen... alles andere hängt. Kann das jemand bestätigen?EDIT2 Also, es hat sich bestätigt, dass es die Temperatur war und er deshalb nicht mehr geschaltet hat.
Die Funktionalität mit 3 PS scheint trotzdem im "Balance Mode" nicht rund zu laufen.
Beispiel:19:58:21.118 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Gap_Durchschnitt: PS:[PS_DeltaPro] : 150 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Gap_Durchschnitt: PS:[PS_Delta2Max] : 0 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Gap_Durchschnitt: PS:[PS_DeltaMax] : 0 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: ************************************* 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Lastcutoff: 204 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: gapSumme: 150 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Bedarf : 523 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: PStotalPV (+10 W/PS): 30 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Gobal totalPV: 1 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: PVBedarf : 30 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: BatBedarf: 493 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: PVfaktor:1 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Batfaktor:5.9397590361445785 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: ueberschuss:0 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: ************************************* 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Der ps: [PS_Delta2Max] bekommt die Gapsumme: 150 W Zusaetzlich 19:58:21.119 info javascript.0 (1327) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Der ps: [PS_DeltaMax] bekommt die Gapsumme: 154 W Zusaetzlich
Delta2Max Batterie ist 99% geladen und er sagt unten er bekommt die GAP Summe von 150W. Es wird jedoch nichts geschaltet.
Genau dieser PS hat heute Mittag bei 99% auch aufgehört zu erzeugen, da die Batterie voll war. Der PS hat dann nicht auf Maximale Einspeisung verändert, sondern 0 Ladung erzeugt.
Ich schaffe es aktuell nicht, dass alles rund läuft und ich mich darauf verlassen kann, finde den Fehler leider auch nicht. Gibt es im Balance Mode noch etwas zu beachten?Edit3: mittlerweile läuft es besser. Hat sich erstmal erledigt. Ich habe nochmal alles neu aufgebaut, war wohl irgendwo ein Config Fehler.
-
nachdem ich mein laufendens Skript jetzt lange Zeit ausgestellt hatte und heute mal wieder aktivieren wollte, bekomme folgenden Fehler:
09:02:08.960 info javascript.0 (852) Start javascript script.js.Test.EF_Integration 09:02:09.026 info javascript.0 (852) script.js.Test.EF_Integration: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 09:02:09.353 info javascript.0 (852) script.js.Test.EF_Integration: Verbunden mit dem Ecoflow MQTT-Broker 09:02:19.025 info javascript.0 (852) script.js.Test.EF_Integration: PowerStream [PowerStream] Batteriestand unter Limit:5% (0%). Limitiere Einspeiseleistung auf: 100W 09:02:19.222 info javascript.0 (852) script.js.Test.EF_Integration: **Fehler beim Abrufen des niedrigsten Werts: Error: No data**
Hat jemand eine Idee? was mit Abrufen des niedrigsten Werts gemeint ist?
Noch eine Zusatzfrag:
mein Powerstream regelt erfolgreich nach, allerdings habe ich immer ca. 50W die ich noch aus dem Netz ziehen muss. Gibt es irgendwo eine off-set Einstellung wo man beim PS zzl. zum ermittelten wert noch 50W on top einstellen kann? -
@accu
Schau mal bei den erweiterten Einstellungen:
BasePowerOffset: 30, // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen
Zusatzpower_Offset: 50,Hier kannst du dich annähern.
-
Geht es, dass man in dem Script die "Cell Temperatur" einer Delta abgreift und die Variable "hasBat" der Powerstream entsprechend dynamisch regelt?
Denn: Wenn die Temperatur zu niedrig ist, lädt er nicht in die Batterie und der Powerstream nutzt auch die Energie nicht, um in das Netz einzuspeisen.
Das wäre eine Idee, dies zu umgehen und wenigstens die Solar Power nicht zu verschwenden.