NEWS
Adapter für Ecoflow Einbindung
-
Ich versuche diese Anleitung hier nachzustellen:
https://haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.htmWie kommt man denn an die UUID? Irgendwie stehe ich auf dem Schlauch.
-
Ich versuche diese Anleitung hier nachzustellen:
https://haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.htmWie kommt man denn an die UUID? Irgendwie stehe ich auf dem Schlauch.
@xfirf sagte in Adapter für Ecoflow Einbindung:
Wie kommt man denn an die UUID?
Du meinst für die Client-ID? Die kann man sich ausdenken soweit ich mich erinnere. Hauptsache deine userId am Ende stimmt.
-
Ich versuche diese Anleitung hier nachzustellen:
https://haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.htmWie kommt man denn an die UUID? Irgendwie stehe ich auf dem Schlauch.
@xfirf ich habe hier mal eine funktion für z.B Node-Red:
function uuidv4() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } msg.payload = uuidv4(); return msg; -
Hi @all,
lese hier fleißig mit und bin begeistert von der Arbeit von @Waly_de

Besitze selbst 2 Delta Pro und das SmartHomePanel, die beiden DP sind über HASS im ioBroker. eingebunden.
Nun die Frage die mich brennend interessiert, gibt es eine Möglichkeit mit dem Script von @Waly_de das "SmartHomePanel" auszulesen und im besten Fall auch zu steuern ? Hat das schon jemand geschafft?
Danke schon mal im Voraus für ne Antwort, und viele Grüße
MZ
-
Hi @all,
lese hier fleißig mit und bin begeistert von der Arbeit von @Waly_de

Besitze selbst 2 Delta Pro und das SmartHomePanel, die beiden DP sind über HASS im ioBroker. eingebunden.
Nun die Frage die mich brennend interessiert, gibt es eine Möglichkeit mit dem Script von @Waly_de das "SmartHomePanel" auszulesen und im besten Fall auch zu steuern ? Hat das schon jemand geschafft?
Danke schon mal im Voraus für ne Antwort, und viele Grüße
MZ
@zariomahn ich würde einfach mal versuchen die Seriennummer im Script einzugeben. Wenn Du Glück hast bekommst du alle Daten. Die meisten Ecoflow Geräte (zumindest die Deltas) arbeiten ohne Protobuf und sind daher leicht auszulesen.
Steuern geht dann theoretisch auch. -
@zariomahn ich würde einfach mal versuchen die Seriennummer im Script einzugeben. Wenn Du Glück hast bekommst du alle Daten. Die meisten Ecoflow Geräte (zumindest die Deltas) arbeiten ohne Protobuf und sind daher leicht auszulesen.
Steuern geht dann theoretisch auch. -
@zariomahn Dir fehlt das Modul
protobufjs. Hast Du das als Erweiterung im JavaScript-Adapter eingetragen? -
@zariomahn Dir fehlt das Modul
protobufjs. Hast Du das als Erweiterung im JavaScript-Adapter eingetragen?habe protobufjs im Terminal mit npm install protobufjs installiert.
Muss noch etwas anderes gemacht werden ?Sorry, bin noch nicht lange mit ioBroker u.s.w. beschäftigt,
komme zwar aus der IT, habe aber immer einen großen Bogen um Programmierung, Skripten u.s.w. gemacht
viele Grüße
Mz
-
habe protobufjs im Terminal mit npm install protobufjs installiert.
Muss noch etwas anderes gemacht werden ?Sorry, bin noch nicht lange mit ioBroker u.s.w. beschäftigt,
komme zwar aus der IT, habe aber immer einen großen Bogen um Programmierung, Skripten u.s.w. gemacht
viele Grüße
Mz
@zariomahn sagte in Adapter für Ecoflow Einbindung:
habe protobufjs im Terminal mit npm install protobufjs installiert.
Warum das? Bitte in den Instanz-Einstellungen vom JavaScript-Adapter eintragen. Wenn Du manuell per
npmetwas machst, dann machst Du IMMER etwas falsch
-
@zariomahn sagte in Adapter für Ecoflow Einbindung:
habe protobufjs im Terminal mit npm install protobufjs installiert.
Warum das? Bitte in den Instanz-Einstellungen vom JavaScript-Adapter eintragen. Wenn Du manuell per
npmetwas machst, dann machst Du IMMER etwas falsch
Hallo,
Dacht ich muss, steht in der Beschreibung des Scripts...
OK, habs nun so gemacht, und bekomme keine Fehler mehr

Danke
viele Grüße
MZ
-
Hi,
ich habe ja nur mein SHP eingestellt mit der Seriennummer, da ich kein PowerStream habe um zu sehen was ich auslesen kann.
Bekomme aber beim starten des Skripts diese Fehlermeldung.
2023-08-08 10:10:13.659 error Script script.js.Tests.Skript_1 is calling setState more than 1000 times per minute! Stopping Script now! Please check your script! 2023-08-08 10:09:00.238 warn at processTimers (node:internal/timers:502:7) javascript.0 2023-08-08 10:09:00.238 warn at listOnTimeout (node:internal/timers:559:17) javascript.0 2023-08-08 10:09:00.238 warn at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) javascript.0 2023-08-08 10:09:00.238 warn at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 javascript.0 2023-08-08 10:09:00.238 warn at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) javascript.0 2023-08-08 10:09:00.238 warn at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1606:34) javascript.0 2023-08-08 10:09:00.237 warn at Object.<anonymous> (script.js.Tests.Skript_1:218:9) javascript.0 2023-08-08 10:09:00.237 warn at CheckforReconnect (script.js.Tests.Skript_1:435:16) javascript.0 2023-08-08 10:09:00.234 warn getState "0_userdata.0.ecoflow.app_device_property_SP10ZEW5ZE7xxxx.RAW_HEX" not found (3)Was bedeutet das, wo liegt der Fehler?
viele Grüße
MZ
-
Hi,
ich habe ja nur mein SHP eingestellt mit der Seriennummer, da ich kein PowerStream habe um zu sehen was ich auslesen kann.
Bekomme aber beim starten des Skripts diese Fehlermeldung.
2023-08-08 10:10:13.659 error Script script.js.Tests.Skript_1 is calling setState more than 1000 times per minute! Stopping Script now! Please check your script! 2023-08-08 10:09:00.238 warn at processTimers (node:internal/timers:502:7) javascript.0 2023-08-08 10:09:00.238 warn at listOnTimeout (node:internal/timers:559:17) javascript.0 2023-08-08 10:09:00.238 warn at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) javascript.0 2023-08-08 10:09:00.238 warn at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 javascript.0 2023-08-08 10:09:00.238 warn at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) javascript.0 2023-08-08 10:09:00.238 warn at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1606:34) javascript.0 2023-08-08 10:09:00.237 warn at Object.<anonymous> (script.js.Tests.Skript_1:218:9) javascript.0 2023-08-08 10:09:00.237 warn at CheckforReconnect (script.js.Tests.Skript_1:435:16) javascript.0 2023-08-08 10:09:00.234 warn getState "0_userdata.0.ecoflow.app_device_property_SP10ZEW5ZE7xxxx.RAW_HEX" not found (3)Was bedeutet das, wo liegt der Fehler?
viele Grüße
MZ
@zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.
Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
Wenn dieser Fehler auftritt, musst du das Skript neu starten. -
@zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.
Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
Wenn dieser Fehler auftritt, musst du das Skript neu starten.@waly_de sagte in Adapter für Ecoflow Einbindung:
@zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.
Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
Wenn dieser Fehler auftritt, musst du das Skript neu starten.Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.
seriennummern: [ { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true }, ],das Skript stoppt immer nach ca. 2 min
viele Grüße
MZ
-
@waly_de sagte in Adapter für Ecoflow Einbindung:
@zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.
Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
Wenn dieser Fehler auftritt, musst du das Skript neu starten.Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.
seriennummern: [ { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true }, ],das Skript stoppt immer nach ca. 2 min
viele Grüße
MZ


@zariomahn sagte in Adapter für Ecoflow Einbindung:
Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.
seriennummern: [ { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true }, ],"isPowerStream: true" solltest du auf: "isPowerStream: false"
ändernSonst kann ich dazu nicht viel sagen, ohne selbst einen SHP zum testen zu haben.
-


@zariomahn sagte in Adapter für Ecoflow Einbindung:
Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.
seriennummern: [ { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true }, ],"isPowerStream: true" solltest du auf: "isPowerStream: false"
ändernSonst kann ich dazu nicht viel sagen, ohne selbst einen SHP zum testen zu haben.
@waly_de sagte in Adapter für Ecoflow Einbindung:
"isPowerStream: true" solltest du auf: "isPowerStream: false"
ändernSonst kann ich dazu nicht viel sagen, ohne selbst einen SHP zum testen zu haben.
Hi, alles klar, ich hab jetzt einfach mal den kompletten Objektbaum gelöscht und neu anlegen lassen mit den o.g. Änderungen.
Die Fehler bleiben gleich, was mich etwas wundert...
Denn "getState "0_userdata.0.ecoflow.app_device_property_SP10ZEW5ZE7xxxx.RAW_HEX" not found (3)"
ist definitiv vorhanden
Aber er aktualisiert die Daten alle paar Sekunden... das is schon mal gut

Muss das "subscribe: true " auch auf false gestellt werden ?
danke
viele Grüße
-


@zariomahn sagte in Adapter für Ecoflow Einbindung:
Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.
seriennummern: [ { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true }, ],"isPowerStream: true" solltest du auf: "isPowerStream: false"
ändernSonst kann ich dazu nicht viel sagen, ohne selbst einen SHP zum testen zu haben.
@zariomahn sagte in Adapter für Ecoflow Einbindung:
Muss das "subscribe: true " auch auf false gestellt werden ?
Nein, dann kommen keine Daten mehr.
Zu dem "not found" hab ich einen Verdacht... Ich versuche es beim nächsten Update abzufangen
-
Hallo zusammen,
ich lese über MQTT meinen River 2 MAX aus. Gibt es eine Möglichkeit ein weiteres Gerät von Ecoflow auszulesen? Bisher habe ich es nicht hinbekommen.
Edit:
Hab es jetzt doch hinbekommen
Hab bei Subscribe Pattern einen "/" vergessen 
-
Hallo zusammen,
ich lese über MQTT meinen River 2 MAX aus. Gibt es eine Möglichkeit ein weiteres Gerät von Ecoflow auszulesen? Bisher habe ich es nicht hinbekommen.
Edit:
Hab es jetzt doch hinbekommen
Hab bei Subscribe Pattern einen "/" vergessen 
-
-
BasePower Offset ist das, was bei der Berechnung der Einspeiseleistung abgezogen wird. Also wenn Ermittelt wird, dass Dein Verbrauch gerade 400W ist und der Offset auf 50 eingestellt ist, dann wird 350W als Einspeiseleistung eingestellt. Dein Stromzähler sollte also im Idealfall dann 50 W anzeigen.
-
Dann stimmt etwas nicht. Der Wert sollte eher oberhalb des Offset liegen. Es wird ja immer der niedrigste Verbrauchswert der letzten <MinValueMin> Minuten ermittelt und davon der Offset abgezogen...
-
Ja die Werte weichen ab. Ich habe noch keine Erklärung bzw. keine Methode gefunden um das 100% gleich zu ziehen. Im Moment ziehe ich von den PV1 und PV2 Werten je 18W ab um die Summe zu errechnen. Das kam den Werten der App am nächsten. 100% Ist das aber nicht. Vielleicht findet einer von Euch ja raus, wie der Wert genau berechnet werden kann. Wenn du die App benutzt während das Skript läuft, kann es sein das der Empfang der Nachrichten im Skript abbricht. Ich Monitor das schon und starte das Skript neu.. aber das dauert. Wenn Du selbst neu startest, sollte es wieder schneller Daten geben.
-
Denk dran.. es wird der niedrigste wert der letzten <MinValueMin> Minuten ermittelt. daher muss die Leistung von 1500W mindestens <MinValueMin> Minuten dauerhaft anliegen, damit die Einspeisung angehoben wird. (Hast du auch die History für den Verbrauch aktiviert?)
-
Oha.. ja, es kommen eben sehr viele Updates vom MQTT. Ich hatte das auch, aber mit mehr als 1000. Ist aber kein Fehler, sondern leider die Realität. Ich hab das Limit in den Einstellungen des Javascript Adapters auf 5000 Erhöht.... Alternativ könntest du den Empfang der nicht codierten Meldungen (Delta 2 oder Max) abstellen. Die werden für die Funktionalität nicht gebraucht. Dazu muss nur eine Zeile im Script auskommentiert werden. Hier die Funktion mit der auskommentieren Anweisung:
// Auf Nachricht empfangen Ereignis reagieren client.on('message', async function (topic, message) { var jsonMessage = "" const mqState = topic.replace(/^\//, '').replace(/\//g, '_') await createMyState(mqState + ".RAW") setState(ConfigData.statesPrefix + ".LastTopic", topic) try { jsonMessage = JSON.parse(message); if (ConfigData.Debug) log('JSON-Nachricht empfangen:' + topic + ':' + JSON.stringify(jsonMessage)); setState(ConfigData.statesPrefix + '.' + mqState + ".RAW", JSON.stringify(jsonMessage)) //generateAndSyncSub("data", jsonMessage, false, ConfigData.statesPrefix + '.' + mqState) } catch (error) { if (ConfigData.Debug) log('Binäre Nachricht empfangen:' + topic + ':' + message.toString('hex')); await createMyState(mqState + ".RAW_HEX") setState(ConfigData.statesPrefix + '.' + mqState + ".RAW_HEX", message.toString('hex')) if (ConfigData.Debug) log('Decodierte Nachricht:' + decodeAndPrint(message.toString('hex'))) const messagedecoded = decodeAndPrint(message.toString('hex')) setState(ConfigData.statesPrefix + '.' + mqState + ".RAW", messagedecoded) generateAndSyncSub("data", JSON.parse(messagedecoded), false, ConfigData.statesPrefix + '.' + mqState) } });übrigens, nach diesem Eintrag im Log steht das Script so lange, bis du es Manuell neu startest. Also danach wird nichts mehr getan.
PS: Ich arbeite noch an der Sache. Hab einiges schon ergänzt und verbessert, vor allem die Berechnung der Einspeiseleistung. Aber ist noch nicht reif zum Posten.. dauert noch ein paar Tage...
@waly_de sehe ich das richtig, dass man mit deinem neuen Script nur die Werte vom Powerstream schreiben kann?
Ich habe ne DELTA Pro. Mit dem alten script (bevor Ecoflow alles umgestellt hat) konnte ich auch die Werte der Delta (MaxChargeSOC, etc.) schreiben.
Mit deinemscript kann ich zwar die Werte aus der Delta auslesen, aber nciht schreiben... -
