NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@giovanne sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Wenn du bei Gelegenheit die schreibenden Befehle auf einen alternativen mqtt broker umlenken könntest wäre das top
wozu? Das hat auch vermutlich wenig Sinn, weil der Inhalt einen buffer, also binäre Daten enthält
-
Ich komme hier alleine nicht weiter.
Ich starre jetzt seit vielen Stunden auf die neuen Daten (InverterHeartbeat2) und kann damit nichts anfangen. Die Werte dort machen für mich keinen Sinn. X_Unknown_45 scheint beispielsweise zunächst eindeutig invOutputWatts zu entsprechen. Dann weicht der Wert plötzlich um 100 Watt, manchmal 1000 Watt, ab. Ich habe es mit verschiedenen Datentypen versucht, habe den Wert sogar bitweise zerlegt, jedoch ohne Erkenntnisse.Jetzt bin ich kein Experte, was Protobuf angeht. Vielleicht liegt es an der Definition der Daten, aber sehr wahrscheinlich ist das nicht der Fall. Im Moment kommen zwar noch Daten im alten InverterHeartbeat, aber wie lange noch? Und warum wurde überhaupt dieses neue Format eingeführt? Es könnte auch sein, dass dies dazu dient, uns auszusperren. Das könnte ich nicht nachvollziehen, denn es kann für Ecoflow ja nicht schädlich sein, wenn es funktionierende Anbindungen gibt. Ihre API, wenn man das so nennen darf, kann im Moment ja auch noch nichts.
Wenn ihr irgendwie durch die Daten durchblickt, lasst es mich wissen.
Es wäre toll, eine Möglichkeit zu haben, gezielt Daten abzufragen. Vielleicht geht das ja schon, denn oft bekommt die App viel mehr Updates als ich über MQTT. Wenn das so ist, passiert das aber im Hintergrund. Ich weiß, dass einige Leute die Daten der App im Netz abgefangen und ausgewertet haben. Habt ihr dazu eine Idee?
Ehrlich gesagt, wenn das so weitergeht und wir bei jedem Update zittern müssen, ob unsere Anbindung noch funktioniert, dann hat es wenig Sinn, da weiter Arbeit reinzustecken. Die letzten Tage waren sehr anstrengend. Unterstützung wäre super.
-
Off topic: Ich hatte meinen Text oben an ChatGPT zur Rechtschreibkorrektur gesendet. Das hat die KI so bewegt, dass sie mir Ihre Meinung dazu mitgeteilt hat. Diese möchte ich Euch nicht vorenthalten:
ChatGPT:
Ich kann Ihre Frustration absolut nachvollziehen, besonders wenn die Daten nicht so sind, wie erwartet oder nicht klar ist, wie sie interpretiert werden sollen. Das "X_Unknown_45" Feld und seine wechselnden Werte sind in der Tat rätselhaft. Wie Sie bereits erwähnt haben, könnten sie vielleicht durch die Protobuf-Datendefinition beeinflusst sein.Was das neue Datenformat angeht, könnte es eine Reihe von Gründen dafür geben, einschließlich der Verbesserung der Datenstruktur, des Datenschutzes oder der Effizienz. Ohne genaue Kenntnisse über die Absichten des Unternehmens ist es jedoch schwierig, definitiv zu sagen, warum sie dieses neue Format eingeführt haben.
Die Idee, Daten abzufangen und auszuwerten, könnte funktionieren, sofern es legal und ethisch korrekt ist. Sie könnten eine Netzwerkprotokollanalyse durchführen, um den Datenverkehr zwischen der App und dem Server zu untersuchen. Tools wie Wireshark oder ähnliche könnten dabei hilfreich sein.
Was die Abfrage spezifischer Daten angeht, könnte dies möglich sein, wenn es eine zugängliche API gibt, oder wenn Sie in der Lage sind, die Anfragen zu reverse-engineeren, die die App an den Server sendet.
Letztendlich, ich verstehe Ihre Bedenken, ob es sich lohnt, weiter in dieses Projekt zu investieren, wenn es ständig Updates gibt, die Ihre Anbindung beeinträchtigen könnten. Manchmal kann es sich lohnen, einen Schritt zurückzutreten und das Gesamtbild zu betrachten. Möglicherweise gibt es einen effizienteren Ansatz oder eine alternative Lösung, die Sie noch nicht in Betracht gezogen haben.
Ich würde empfehlen, dass Sie sich an die Community wenden und sehen, ob es andere gibt, die ähnliche Probleme haben oder die möglicherweise bereits eine Lösung gefunden haben.
Ich hoffe, dass Ihnen das ein wenig weiterhilft. Es ist ein komplexes Problem, und ich wünsche Ihnen viel Glück bei der Lösung.
-
@waly_de
Ich kann mir durchaus vorstellen, dass ecoflow versucht ungewollte Nutzung zu verhindern. Mit den Smart Plugs verdienen die ganz gut Geld.
Funktionieren tun die nach meiner Beobachtung im PV Forum allerdings keinesfalls besser als das Script hier, eher im Gegenteil.Es ist auch nur eine Frage der Zeit bis ecoflow wieder was an den Daten ändert.
Ich würde ja sogar für ein zentrales Gerät zur Übermittlung der Werte des Stromzählers an den Powerstream zahlen, wenn es denn was gäbe...
Zur Kenntnis:
Es gab angeblich schon einen erfolgreichen Eingriff um einen Smart Plug zu manipulieren. Ich selbst habe das allerdings nicht reproduzieren können. Deswegen bin ich ja hier gelandet.
https://www.photovoltaikforum.com/thread/208943-ecoflow-powerstream-bastelecke-plug-nachbau-zur-messwerte-übergabe-eines-energie/ -
So !!! Neue Version ist im Eingansbeitrag. (0.6.8)
Diese sollte jetzt wieder sauber laufen. Die Daten kommen wieder in einer hohen Frequenz.
Zwar kann ich nach wie vor nichts mit den Daten unter InverterHeartbeat2 anfangen, aber das kann uns ja solange egal sein, wie die InverterHeartbeat Daten geliefert werden. und das tuen sie jetzt wieder -
Mit der neuen Version wird mein Passwort nicht mehr akzeptiert. Vermutlich wegen der Sonderzeichen?
-
@waly_de Ich bekomme mit Version 0.6.8 noch folgende Fehlermeldung:
13:47:02.909 error javascript.2 (1257440) script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803: Error: illegal token '{' (line 147)
13:47:02.911 error javascript.2 (1257440) at SendProto (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:1151:27)
13:47:02.911 error javascript.2 (1257440) at setmusterGetPS (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:1191:5)
13:47:02.911 error javascript.2 (1257440) at MqttClient.<anonymous> (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:877:17)
13:47:03.121 error host.sven-NUC7PJYH-SK Caught by controller[0]: at SendProto (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:1152:27)
13:47:03.121 error host.sven-NUC7PJYH-SK Caught by controller[0]: at setmusterGetPS (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:1192:5)
13:47:03.121 error host.sven-NUC7PJYH-SK Caught by controller[0]: at MqttClient.<anonymous> (script.js.Skripte.Instanz_2_Energie.Ecoflow_Skript_20230803:878:17) -
@xfirf Da hat sich hinter Passwort noch ein "!" reingeschmuggelt, das muss weg, dann sollte es funktionieren. Also bis auf den von mir gemeldeten Fehler - siehe oben. Vielleicht hab ich diesen aber auch exklusiv :-(!
-
13:52:01.067 info javascript.0 (1973029) Start javascript script.js.common.ecoFlow_PowerStream 13:52:01.260 info javascript.0 (1973029) script.js.common.ecoFlow_PowerStream: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 13:52:01.261 info javascript.0 (1973029) Start javascript script.js.common.ecoFlow_PowerStream 13:52:01.266 info javascript.0 (1973029) script.js.common.ecoFlow_PowerStream: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 13:52:01.583 info javascript.0 (1973029) script.js.common.ecoFlow_PowerStream: Verbunden mit dem Ecoflow MQTT-Broker 13:52:01.596 error javascript.0 (1973029) script.js.common.ecoFlow_PowerStream: Error: illegal token '{' (line 147) 13:52:01.597 error javascript.0 (1973029) at SendProto (script.js.common.ecoFlow_PowerStream:1147:27) 13:52:01.597 error javascript.0 (1973029) at setmusterGetPS (script.js.common.ecoFlow_PowerStream:1187:5) 13:52:01.597 error javascript.0 (1973029) at MqttClient.<anonymous> (script.js.common.ecoFlow_PowerStream:873:17) 13:52:01.670 error host.iobroker Caught by controller[0]: at SendProto (script.js.common.ecoFlow_PowerStream:1148:27) 13:52:01.670 error host.iobroker Caught by controller[0]: at setmusterGetPS (script.js.common.ecoFlow_PowerStream:1188:5) 13:52:01.670 error host.iobroker Caught by controller[0]: at MqttClient.<anonymous> (script.js.common.ecoFlow_PowerStream:874:17)
-
@apollosk Ne kann ich so nicht bestätigen. Wenn ich das Passwortfeld leer lasse kommt ein Fehler bezüglich fehlender Credentials. Mit Passwort eingefügt kommt ein Syntaxfehler. Irgendwas ist bisschen verstrubbelt
-
@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