NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@waly_de ja genau. Die PV hängt direkt an meiner DP aber nicht am PS.
Habs mal rausgekommen. Schaut jetzt so aus:
22:24.190 info javascript.0 (53248) script.js.Test.EF_Test: Adresse: app_1556567362703892482_DCxxxxxx_thing_property_set 10:22:30.297 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:30.325 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:30.326 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:30.328 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:40.297 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.298 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:50.332 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:50.332 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:50.334 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:50.334 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.338 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2795:15) 10:22:50.338 warn javascript.0 (53248) at script.js.Test.EF_Test:2502:37 10:22:50.338 info javascript.0 (53248) script.js.Test.EF_Test: Alle Bedingungen erfüllt. sonoff.0.NOUS-DVES_F0A844.POWER wird auf true gesetzt 10:22:50.339 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2817:9) 10:22:50.339 warn javascript.0 (53248) at script.js.Test.EF_Test:2502:37 10:22:50.340 info javascript.0 (53248) script.js.Test.EF_Test: ExcessCharge: Überschussladung AN! Angefordert mit:82 Plus ExcessChargeOffsetPower: 0
der ExcessPower Datenpunkt ist jetzt aber da:
Eingespeist wird aber nicht. Mein Gesamt Hausverbrauch springt aber auch gerade zwischen -80W und +120W
-
@accu super Jetzt kannst du im Log schön verfolgen was passiert.
10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82
Solange es keinen Bedarf gibt, wird natürlich auch nicht eingespeist.
Wenn der Gesamt Hausverbrauch für 3 Minuten immer über BasePowerOffset liegt, sollte der PS Einsspeisen. Entsprechende Meldung im Log sollte zu sehen sein. Etwa so:Änderung für Einspeisung gesendet PS:[PowerStream Dach] : 65 W
-
@waly_de jetzt scheint es tatsächlich zu funktionieren und der PS regelt die Einspeiseleistung ein. Ist zwar nicht ganz auf Null eingeregelt aber ok, da ich gerade nicht so viel Batterie habe.
Was bedeutet die Not Found Warnung? beim Sonoff?
-
Ich bekomme mit der neusten Version "mlog=true" nur noch folgendes zu sehen, finde jedoch keinen Fehler. Meine alte Version funktioniert mit logm=true einwandfrei. Geht das noch oder ist da bei euch auch etwas hinüber?
21:44:27.118 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Verbunden mit dem Ecoflow MQTT-Broker 21:44:36.888 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:44:46.886 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:44:56.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:06.896 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:16.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:26.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower !
EDIT:
@Waly_de
Bitte erkläre mit das nochmalbattPozOn: 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
Für mich widerspricht sich das, denn ich will doch den Batterieprio Modus BIS 99% und dann Max Einspeisung.
Wenn ich battPozOn z.B. auf 30% setze soll er auf BatteriePrio Modus und ab battPozOff auf "volle Einspeisung".
Irgendwas interpretiere ich anscheinend falsch. -
@accu sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Was bedeutet die Not Found Warnung? beim Sonoff?
Kannst du wörtlich nehmen.... "sonoff.0.NOUS-DVES_F0A844.POWER" scheint nicht zu existieren
-
@guhfy9966 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Für mich widerspricht sich das, denn ich will doch den Batterieprio Modus BIS 99% und dann Max Einspeisung.
Wenn ich battPozOn z.B. auf 30% setze soll er auf BatteriePrio Modus und ab battPozOff auf "volle Einspeisung".
Irgendwas interpretiere ich anscheinend falsch.Bei Batterieprio Modus gibt es keine Einspeisung solange die Batterie nicht voll ist.
Wenn irgendetwas geregelt werden soll, dann muss der PowerStream auf Stromversorgs-Priorität stehen.
Inzwischen kann die Firmware der PS selbst, wenn die Batterie voll ist, die Einspeisung einschalten. Das ging früher nicht.
Es ist so wie im Kommentar beschrieben: ab eine Batterieladung von battPozOn wird entweder alles eingespeist bis battPozOff erreicht ist und dann wieder normal geregelt, oder es wird in den Batterie Prioritätsmodus geschaltet, was bedeutet, dass die Batterie auf dem Maximalwert gehalten wird und die restliche PV Leistung ins Netz eingespeist wird. -
@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!