NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@xfirf da hat das forum beim Einfügen wieder was verbogen... sollte jetzt gefixt sein
-
@waly_de Top jetzt läufts. Vielen Dank.
-
@waly_de Bei mir läuft es auch. Super Arbeit!
-
@waly_de
Ich weiß jetzt warum mir manchmal das Script abschmiert.
Ich erhalte die Meldung: "Script script.js.Powerstream_Neu is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!"Gibt es hier ein Problem z.B. weil ich die Daten der Delta 2 mit abonniert habe? Kann ich den Wert einfach hochsetzen?
-
@dreffi kannst du in den Instanz-Settings hoch setzen..... die Deltas feuern eben unglaublich viel.
Da dein Host nichts anderes macht, sollte das kein Problem sein. -
@dreffi Das kannst Du in den Einstellungen für die Javascript Instanz hochsetzen. Ich hab es auf 3000 stehen.
-
Das Script läuft bei mir immer noch einwandfrei, trotz dem Umweg über Home Assistant. Super Arbeit. Danke dafür!
Nichts ist so gut, dass es nicht mehr verbessert werden könnte. Daher mal zwei Ideen für die sonnenschwache Jahreszeit:
- wie wäre es mit einem Pendant zu BattPoz On/Off für niedrigen Ladestand? Derzeit wird bei wenig Solarertrag der Akku permanent geladen und wieder entladen. Damit geht jeglicher Ertrag erst durch den Akku. Das bedeutend Verschleiß und erhebliche Verluste.
Ich würde hier ab einem gewissen Ladestand die Einspeisung ins Netz auf einen einstellbaren Höchstwert begrenzen, bis der Akku eine bestimmte Ladegrenze wieder erreicht hat. - könnte man die Einstellung „Regulation: true/false“ optional abhängig vom State eines Objektes machen? Ich für meinen Fall denke hier an einen Switch in Home Assistant dessen State ich an ioBroker durchreiche. Im Idealfall wird beim Umstellen auf false bei laufenden Script einmalig ein zu definierter Einspeisewert eingestellt.
Nachtrag zu Punkt 2:
Ich habe in Home Assistant ein Auswahlfeld mit true/false angelegt. Dessen Status wird in ioBroker durchgereicht und den state dieses Objektes habe ich im Script in den Nutzerdaten für regulation hinterlegt. Läuft aber irgendwie noch nicht zuverlässig. Es wird weiterhin geregelt, auch wenn ich auf false stelle. - wie wäre es mit einem Pendant zu BattPoz On/Off für niedrigen Ladestand? Derzeit wird bei wenig Solarertrag der Akku permanent geladen und wieder entladen. Damit geht jeglicher Ertrag erst durch den Akku. Das bedeutend Verschleiß und erhebliche Verluste.
-
@dreffi Danke für die Rückmeldung..... Da es sonst kaum Rückmeldung gibt, hoffe ich das es bei den anderen auch läuft Leider kann ich wegen des Wetters im Moment nicht so wirklich testen. Aber aber ich habe noch mal einiges hinzugefügt und verbessert. Einige wenige Dinge muss ich noch abschließend testen, dann werd ich es hoch laden. Hier schon mal zur Vorfreude die wichtigsten Dinge:
(1.0.0) 06.08.2023
- Neuer State "lowestValue" zeigt die Grundlage zur Berechnung der Einspeiseleistung an und repräsentiert niedrigsten Wert des realen Verbrauchs in den letzten mit "MinValueMin" eingestellten Minuten.
- Neue Einstellung MinValueAg: Art der Ermittlung des kleinsten Wertes 0 = Minimalwert, 1 = Durchschnittswert.
- Neues Feature: Wenn die volle Leistung (600w) in die Batterie geht, wird die Einspeiseleistung in Stufen erhöht, auch wenn dann Leistung ins Netz geht, um möglichst das volle Potenzial der vorhandenen Solarenergie zu nutzen.
- Neue Einstellungen: lowBatLimitPozOn, lowBatLimitPozOff und lowBatLimit. Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf "lowBatLimit" W limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist.
- Neue Einstellungen: RegulationState. Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unterhalb 0_userdata.0.ecoflow angelegt).
- Neue Einstellungen: RegulationOffPower. Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt. (-1 = keine Änderung).
Und ganz wichtig.... es gibt einen Spendenlink Bitte unterstützt mich bei der Weiterentwicklung.
-
@waly_de
Ich bin mehr als beeindruckt.
Ich wollte gerade vermelden, dass ich es geschafft habe das Script über eine Auswahl in Home Assistant ein- und auszuschalten, da kommst du mit dem Update um die Ecke...Mangels Sonne werde ich erst im Laufe der Woche brauchbares Feedback geben können.
Edit:
Blöde Frage, wo finde ich die aktuelle Version?
Edit 2: mein Fehler, ich warte ab. -
@waly_de
Servus oder moin @Waly_de
Super Arbeit bisher und ich bin sehr sehr beeindruckt.
Ich bin in Sachen Programmieren total oder bis auf 2% unbegabt.
Wie kann man dir am Besten bei der Unterstützung, Daten liefern behilflich sein?Habe einen Powerstream, zwei PV-Module direkt an der PS angeschlossen, eine Delta 2 Max auch mit zwei angeschlossenen PV-Modulen. Hätte sogar einen Finderzähler, der "live" die Leistungsdaten vom Haus auslesen kann.
Würde es auch bedeuten ich müsste an der Stelle:
"SmartmeterID: "sonoff.0.Stromzaehler1.MT175_P" trage ich den Namen oder Alias vom Momentanwert vom Zähler ein?Und alle Änderungen nehme ich nur im Bereich
"********** YOUR DATA HERE ************ " vor,
ist das richtigt?Den Offset habe ich noch nicht verstanden
Die Werte
"InverterHeartbeat.dynamicWatts" und "InverterHeartbeat2.X_Unknown_13"
scheinen identisch zu sein.Das passiert wenn man die Prio ändert
javascript.0 2023-08-06 20:10:38.940 info script.js.Ecoflow-Skript: 0a36102018352001280138034014488201580170f390ade004800113880101ba0103696f73ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:10:38.940 warn script.js.Ecoflow-Skript: Ungültiger cmd_func-Wert:130 javascript.0 2023-08-06 20:10:28.236 info script.js.Ecoflow-Skript: 0a3c0a020801102018352001280138034014488201500258017083bdace004800113880101ba0103696f73ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:10:28.236 warn script.js.Ecoflow-Skript: Ungültiger cmd_func-Wert:130 javascript.0
Wenn ich eine geplante Aufgabe
"14:00, Täglich auf Stromversorgung prio setze kommt"javascript.0 2023-08-06 20:34:36.471 info script.js.Ecoflow-Skript: 0a4f0a150802120f08012a0b1800200c2806300838e70f18021020183520012801380340144883015015580170a9ee84e104800113880101ba0103696f73ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:36.471 warn script.js.Ecoflow-Skript: Ungültiger cmd_func-Wert:131 javascript.0 2023-08-06 20:34:36.467 info script.js.Ecoflow-Skript: Decodierte Nachricht:{} javascript.0 2023-08-06 20:34:36.421 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/16697414287359YYYYY/HW51ZOxxxxxxxxxx/thing/property/set:0a4f0a150802120f08012a0b1800200c2806300838e70f18021020183520012801380340144883015015580170a9ee84e104800113880101ba0103696f73ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:36.421 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/16697414287359YYYYY/HW51ZOxxxxxxxxxx/thing/property/get:0a101020182070d7ec84e104ba0103696f73 javascript.0 2023-08-06 20:34:36.375 info script.js.Ecoflow-Skript: Decodierte Nachricht:{"data":{"InverterHeartbeat":{"batInputWatts":1738,"llcOpVolt":4218,"invInputVolt":4218,"invOutputCur":769,"invOutputWatts":1704,"dynamicWatts":1180},"InverterHeartbeat2":{"X_Unknown_13":1180,"X_Unknown_15":600,"X_Unknown_22":1630,"X_Unknown_24":5978,"X_Unknown_32":50387,"X_Unknown_45":1669,"X_Unknown_46":-1180}}} javascript.0 2023-08-06 20:34:36.326 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/device/property/HW51ZOxxxxxxxxxx:0a470a1ce801ca0d8802fa209802fa20a8028106b002a80d88039c09e003c603103518202001280140144801501c5801800103880103ca0110485735315a4f483453463554343632360a4e0a23689c0978d804b001de0cc001da2e8002d38903e802850df002e4f6ffffffffffffff0110351820200128014014480450235801800103880103ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:35.339 info script.js.Ecoflow-Skript: Decodierte Nachricht:{} javascript.0 2023-08-06 20:34:35.289 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/device/property/HW51ZOxxxxxxxxxx:0a530a2d1a2b08021225080110012a0f080010001800200c2806300838e70f320e0800100018002000280030003800180210351820200128014014488601502d5801ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:34.206 info script.js.Ecoflow-Skript: Decodierte Nachricht:{"data":{"InverterHeartbeat":{"batInputWatts":1720,"llcOpVolt":4189,"invInputVolt":4189,"invOutputCur":756,"invOutputWatts":1675,"dynamicWatts":1150},"InverterHeartbeat2":{"X_Unknown_13":1170,"X_Unknown_15":603,"X_Unknown_16":3,"X_Unknown_22":1620,"X_Unknown_24":5979,"X_Unknown_32":50385,"X_Unknown_45":1605,"X_Unknown_46":-1170}}} javascript.0 2023-08-06 20:34:34.159 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/device/property/HW51ZOxxxxxxxxxx:0a470a1ce801b80d8802dd209802dd20a802f405b0028b0d8803fe08e003c903103518202001280140144801501c5801800103880103ca0110485735315a4f483453463554343632360a510a2668920978db04800103b001d40cc001db2e8002d18903e802c50cf002eef6ffffffffffffff0110351820200128014014480450265801800103880103ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:34.036 info script.js.Ecoflow-Skript: Decodierte Nachricht:{} javascript.0 2023-08-06 20:34:34.036 info script.js.Ecoflow-Skript: 0a510a1708021211080110012a0b1800200c2806300838e70f18021020183520012801380340144883015017580170cddc84e104800113880101ba0103696f73ca0110485735315a4f48345346355434363245 javascript.0 2023-08-06 20:34:34.036 warn script.js.Ecoflow-Skript: Ungültiger cmd_func-Wert:131 javascript.0 2023-08-06 20:34:33.980 info script.js.Ecoflow-Skript: Binäre Nachricht empfangen:/app/16697414287359YYYYY/HW51ZOxxxxxxxxxx/thing/property/set:0a510a1708021211080110012a0b1800200c2806300838e70f18021020183520012801380340144883015017580170cddc84e104800113880101ba0103696f73ca0110485735315a4f48345346355434363245
Kann es sein dass das Setzten vom Strompreis hier drin steckt?
Hier auf EUR gesetzt./thing/property/set:0a3d0a0408c58801102018352001280138034020480b50045801709ec5e3e10c800113880101ba0103696f73ca0110485735315a4f48345346355434363245 property/set:0a3d0a0408c58801102018352001280138034020480b5004580170f5ffb8e20c800113880101ba0103696f73ca0110485735315a4f48345346355434363245
Hier mal auf 0,1123 gesetzt
/thing/property/set:0a3d0a0408c58801102018352001280138034020480b500458017082cf9ee20c800113880101ba0103696f73ca0110485735315a4f48345346355434363245
Hier ausschalten einer geplanten Aufgabe
0a3d0a0408c58801102018352001280138034020480b5004580170b0c0c0e30c800113880101ba0103696f73ca0110485735315a4f48345346355434363245
einschalten der Aufgabe
0a3d0a0408c58801102018352001280138034020480b5004580170dfb3cee30c800113880101ba0103696f73ca0110485735315a4f48345346355434363245
Smart Plug ausgeschaltet
thing/property/set:0a36102018352001280138034002488101580170bf9880e404800113880101ba0103696f73ca0110485735325a4448345346364b36303745
-
Noch eine Frage zum Stromzähler Lesekopf. Ich habe einen EasyMeter Stromzähler. Leider ist hier die optische Schnittstelle zugeklebt. Wie habt ihr das gemacht?
-
@aherby sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Habe einen Powerstream, zwei PV-Module direkt an der PS angeschlossen, eine Delta 2 Max auch mit zwei angeschlossenen PV-Modulen. Hätte sogar einen Finderzähler, der "live" die Leistungsdaten vom Haus auslesen kann.
Würde es auch bedeuten ich müsste an der Stelle:
"SmartmeterID: "sonoff.0.Stromzaehler1.MT175_P" trage ich den Namen oder Alias vom Momentanwert vom Zähler ein?richtig... in dem State sollte die live Leistung in Watt abrufbar sein. Wenn der State angegeben ist, fängt das script an zu regeln. Die Prio sollte dabei immer auf "Stromversorgung" stehen, sonst lässt sich die Einspeiseleistung nicht regeln.
Und alle Änderungen nehme ich nur im Bereich
"********** YOUR DATA HERE ************ " vor,
ist das richtigt?
Den Offset habe ich noch nicht verstandenRichtig. Offset bestimmt die Zielleistung der Regulation. 50 bedeutet, das Script versucht einen Netzbezug von 50W einzuregeln.
Die Werte
"InverterHeartbeat.dynamicWatts" und "InverterHeartbeat2.X_Unknown_13"
scheinen identisch zu sein.Danke für die Muster! Damit kann ich auf jeden fall schon was machen
-
Neue Version online
(1.0.0) 06.08.2023
- Neuer State "lowestValue" zeigt die Grundlage zur Berechnung der Einspeiseleistung an und repräsentiert niedrigsten Wert des realen Verbrauchs in den letzten mit "MinValueMin" eingestellten Minuten.
- Neue Einstellung MinValueAg: Art der Ermittlung des kleinsten Wertes 0 = Minimalwert, 1 = Durchschnittswert.
- Neues Feature: Wenn die volle Leistung (600w) in die Batterie geht, wird die Einspeiseleistung in Stufen erhöht, auch wenn dann Leistung ins Netz geht, um möglichst das volle Potenzial der vorhandenen Solarenergie zu nutzen.
- Neue Einstellungen: lowBatLimitPozOn, lowBatLimitPozOff und lowBatLimit. Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf "lowBatLimit" W limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist.
- Neue Einstellungen: RegulationState. Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unterhalb 0_userdata.0.ecoflow angelegt).
- Neue Einstellungen: RegulationOffPower. Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt. (-1 = keine Änderung).
Und ganz wichtig.... es gibt einen Spendenlink Bitte unterstützt mich bei der Weiterentwicklung.
(1.0.1) 07.08.2023
- Writeables auch für PowerStreams angelegt (SetDisplayBrightness, SetPrio, SetBatLimitLow, SetBatLimitHigh, SetAC).Sie tauchen auf, wenn bei laufendem Script per App geändert wird.
- Verbesserung der Reguierung
viel Spaß beim Testen
-
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
- Neue Einstellungen: RegulationState. Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unterhalb 0_userdata.0.ecoflow angelegt).
Das verstehe ich noch nicht ganz. Ich vergebe hier einen Namen unter dem dann ein Objekt angelegt wird. Und dieses kann ich dann z.B. durch ein externes Script ändern (true / false) um die Steuerung ein und auszuschalten?
(1.0.1) 07.08.2023
- Writeables auch für PowerStreams angelegt (SetDisplayBrightness, SetPrio, SetBatLimitLow, SetBatLimitHigh, SetAC).Sie tauchen auf, wenn bei laufendem Script per App geändert wird.
Wie löse ich denn eine Werteänderung aus? Also z.B. "Setze Prio auf Batterie"?
-
@dreffi sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Das verstehe ich noch nicht ganz. Gebe ich hier ein bestehendes State-Objekt an oder vergebe ich hier einfach einen Namen für ein Objekt, dass dann automatisch angelegt wird?
genau.. vergib einen Namen und es wird angelegt.
@dreffi sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Wie löse ich denn eine Werteänderung aus? Also z.B. "Setze Prio auf Batterie"?
0 = Stromversorgung
1 = Batterie -
@waly_de
Wow, läuft.
Bisher grundsätzlich getestet:- LowBatLimit -> ist erfolgreich angesprungen
- RegulationState -> Änderungen aus Home Assistant per Schalter werden per Script übertragen und korrekt übernommen, inkl. Begrenzung der Leistung
- SetPrio -> Umstellung per Auswahlliste in Home Assistant wird per Script übertragen und übernommen
Langzeittest steht aus.
-
@waly_de Ich hab per Node-Red noch ne Überwachung des Skripts gebaut damit es neu gestartet wird wenn es mal durch zu viele Javascript Aufrufe beendet wird. Kann ich nur empfehlen.
-
@Waly_de
Bis jetzt läuft das neue Skript (1.0.1) wunderbar
Ich würde evtl. die Zusatzpower in kleineren Schritten machen, da es gestern bei mir immer hin und her gesprungen ist. Z.b. 10er Schritte anstatt 50er Schritte..Was mir noch aufgefallen ist, dass die Regelung manchmal schnell auf 0W springt, sobald man den
BasePowerOffset
auf einen kleineren Wert setzt, z.b. 30W. Passiert das automatisch, wenn z.b. kurz ein negativer Wert in der Gesamtleistung erscheint? Ich würde dann lieber die Einspeiseleistung reduzieren, aber nicht gleich komplett auf Null setzen. Ich habe das beim Fernsehen beobachtet, bei dem der Wert ziemlich schwankt (OLED geht bei schwarzen Bildern sehr stark zurück und bei hellen Bildern gleich mal 100W mehr als davor)Ein weiterer Anregungspunkt: Könnte man evtl. einen "Passthrough" Modus implementieren, in dem immer nur die volle Solarleistung an den Ausgang gelegt wird? Z.b. bei schlechten Wetter wenn der Solaroutput eh nur sehr gering ist. Dann will man ungern, dass der Akku immer mitmachen muss, wenn dieser eh nur wenige Prozent an Kapazität übrig hat.
Sobald aber die Solarleistung einen höheren Wert als die AC Last hat, sollte der Rest in den Akku gehen. Das wäre dann ein Überschussladen in den Akku.PS: Hab gestern eine kleine Spende hinterlassen für deine Mühen
-
@ponti92
Für den Solar Passthrough Modus ist die neue Einstellung lowBatLimitPozOn/lowBatLimitPozOff und lowBatLimit gedacht.
Wenn die Solarleistung sehr gering ist, wird ab einem geringen Akkustand nur noch ein festgelegter Wert eingespeist bis der Akku wieder einen gewünschten Füllstand erreicht hat. Bei mir funktioniert das im Moment ganz gut.
Akku deaktivieren ist meines Wissens nur durch Stecker ziehen möglich oder über Prio Akku sobald der Akku die obere Ladegrenze erreicht hat.Den Vorschlag nicht gleich komplett abzuschalten befürworte ich auch. Vielleicht lässt man einfach für ein paar Zyklen mit geringer Leistung weiter einspeisen. Bei mir passiert es auch, dass der Powerstream komplett abgeschaltet wird wenn die Wolken aufreißen und das andere Balkonkraftwerk kurzzeitig mit der Einspeisung stark hochgeht. Das ließe sich wahrscheinlich auch über die neue Einstellung MinValueAg erreichen.
Ich würde mir noch eine Alternative zur Maximaleinspeisung bei vollem Akku wünschen (battPozOn/battPozOff). Hier wird der Akku auch eher unnötig belastet. Ich persönlich würde dann lieber auf Prio Akku umstellen bis ein Bestimmter Wert für Bezug überschritten wird. Damit würde wieder der Bypass aktiviert und die reine Solarleistung weiter eingespeist. Ich habe versucht das über externe Scripte zu steuern, aber noch keine zufriedenstellende Logik gefunden.
-
Neue Version Online
(1.0.2) 09.08.2023
- Unterstützung für SmartPlugs. Bisher ein Writeable: SwitchPlug mit den Werten 0= AUS und 1= AN
- Bugfix und Optimierungen