Modul für Ecoflow-Komponenten (über HTTP-REST)

Begonnen von Neolux, 17 Februar 2025, 13:10:08

Vorheriges Thema - Nächstes Thema

DS_Starter

Morgen haben wir FHEM-Treffen. Freitag kann ich was testen.

LG
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

KölnSolar

Wie sehen Deine readings im MQTT device aus, ich denke so ?
ZitatM3EBF7ZXXXXX_params_pd.bpPowerSoc  5     2026-06-18 06:33:57

Und gerne Deine setlist, wenn implementiert.
RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

Moin Markus,

ja hast recht. Hier ein Auszug der MQTT Readings:

setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.fullCap 9450
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.maxCellTemp 37
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.maxCellVol 3994
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.maxMosTemp 40
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.minCellTemp 37
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.minCellVol 3910
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.minMosTemp 40
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.remainCap 9589
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.soc 100
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.temp 37
setstate EF_MQTT 2026-06-18 08:00:38 M3EBFXXXXXXXXXX_params_bmsSlave1.vol 3181

Eine setlist habe ich ebenfalls. Sie sieht so aus:

AC_spareCharge /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"168501049","moduleType":0,"operateType":"TCP","params":{"workMode":$EVTPART1,"id":65},"version":"1.0"}
Fan_autoSpeed /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"103432218","moduleType":0,"operateType":"TCP","params":{"fanMode":$EVTPART1,"id":73},"version":"1.0"}
X-Boost /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"452691063","moduleType":0,"operateType":"TCP","params":{"xboost":$EVTPART1,"id":66},"version":"1.0"}
Soc_max /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"177434020","moduleType":0,"operateType":"TCP","params":{"maxChgSoc":$EVTPART1,"id":49},"version":"1.0"}
Stby_Mode_Device /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"467272884","moduleType":0,"operateType":"TCP","params":{"id":33,"standByMode":$EVTPART1},"version":"1.0"}
LED /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"153732182","moduleType":0,"operateType":"TCP","params":{"id":35,"state":$EVTPART1},"version":"1.0"}
12V_DC /app/152XXXXXXXXXXXXXXXXX/M3EBFXXXXXXXXXX/thing/property/set {"from":"Android","id":"392953295","moduleType":0,"operateType":"TCP","params":{"id":34,"enabled":$EVTPART1},"version":"1.0"}

Ich weiß garnicht mehr wie ich die zusammengestellt habe, ist schon so lange her. Funktioniert aber.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

KölnSolar

Hallo Heiko(und evtl. andere River Max user),
here we go. Könnte klappen. Es gibt erst einmal nur ein set für maxchargesoc.

Bin gespannt.
Markus
RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

Hi Markus,

ich bemerke keine Änderung zur vorherigen Version. Readings bleiben unverändert.

code 1006
message current device is not allowed to get device info

Einen Setter maxchargesoc sehe ich auch nicht.
Hast du richtige V angehängt?  (Restart hatte ich ausgeführt)

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

KölnSolar

ZitatHast du richtige V angehängt?
ja.

Guck bitte mal, ob in den Internals model=River Max
Wenn nicht, mal ein get ... detectModel ausführen.
Hilft das nicht, dann mal attr ... Model River Max
RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

Guck bitte mal, ob in den Internals model=River Max
Also es sieht so aus. Es gibt in den Internals das richtige Model, aber nur Upper case:

Model  RIVER MAX

Mit verbose 5 sieht mman das gelieferte Model gemischt Upper/Lower case:

Ecoflow_Response() device list: $data = {"code":"0","message":"Success","data":[{"sn":"XXXXXXXXXXXXX","deviceName":"RIVER_USV","online":1,"productName":"RIVER Max"}],"eagleEyeTraceId":"","tid":""}

Versuche ich zu setzen:

attr ... Model River Max

kommt:

Error. Model not supported. Wrong model name

Setzen kann ich aber:

attr ... Model RIVER Max

In dem Fall wird das Internal auch so gesetzt. Dann sehe ich auch den Setter "...maxChargeSoc".

Update funktioniert dann weiterhin nicht mit der beschriebenen Meldung.
Eine Verwendung des Setters bringt:

code       1006
message    current Device is not allowed to be controlled

Entsprechendes sieht man auch im Log:

2026.06.18 10:44:54.666 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_SingleRequest(): $json = {"id": 123456789,"moduleType": 0,"operateType": "TCP","sn": "XXXXXXXXXXX","version": "1.0", "params": {"id": 49,"maxChgSoc": 90}}
2026.06.18 10:44:54.669 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Request(): $json={"id": 123456789,"moduleType": 0,"operateType": "TCP","sn": "XXXXXXXXXXX","version": "1.0", "params": {"id": 49,"maxChgSoc": 90}} $query_str=id=123456789&moduleType=0&operateType=TCP¶ms.id=49¶ms.maxChgSoc=90&sn=XXXXXXXXXXX&version=1.0&
2026.06.18 10:44:54.671 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Request(): $accessKey=XXXXXXXXXXX $nonce=223581 $timestamp=1781772294671
2026.06.18 10:44:54.674 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = id=123456789&moduleType=0&operateType=TCP¶ms.id=49¶ms.maxChgSoc=90&sn=XXXXXXXXXXX&version=1.0&accessKey=XXXXXXXXXXX&nonce=223581×tamp=1781772294671
2026.06.18 10:44:54.676 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Request(): $sign = XXXXXXXXXXX
2026.06.18 10:44:54.678 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Request(): $json = {"id": 123456789,"moduleType": 0,"operateType": "TCP","sn": "XXXXXXXXXXX","version": "1.0", "params": {"id": 49,"maxChgSoc": 90}}
2026.06.18 10:44:54.854 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.06.18 10:44:54.857 5: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Response(): $data = {"code":"1006","message":"current Device is not allowed to be controlled","eagleEyeTraceId":"","tid":""}
2026.06.18 10:44:54.859 0: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Response(): ERROR! {"code":"1006","message":"current Device is not allowed to be controlled","eagleEyeTraceId":"","tid":""}
2026.06.18 10:44:54.860 4: Ecoflow(Ecoflow 0.0.0.2): Ecoflow_Response(): Update Readings
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Amok

#247
Zitat von: KölnSolar am 17 Juni 2026, 22:37:29eine alte Version nutzt

Danke für den Tip, ich hab mal die Version von vor ein paar Posts probiert ... damit sieht es etwas anders aus:

FVERSION 98_Ecoflow.pm:0.039000/2025-06-10
Model
ModulVersion V 0.0.0.2

Allerdings bleibt Modell noch leer, vielleicht kommt er nicht mit 2 Geräten in einem System klar?!?

Ich habe bei mir noch einen SmartMeter drin, der auch angezeigt wird, wenn ich "get Devices" mache:

request sent, previous values are
code=0
data_1_deviceName=STREAM Ultra
data_1_online=1
data_1_sn=XXXXXXXXXXXXXXXX
data_2_deviceName=Smart Meter
data_2_online=1
data_2_sn=XXXXXXXXXXXXXXXX
eagleEyeTraceId=
message=Success
tid=

Aber auch die Daten der Readings kommen nur für ein Gerät ?!?

code 0 2026-06-18 11:25:36
data_backupReverseSoc 13 2026-06-18 11:25:36
data_cmsBattSoc 20.0 2026-06-18 11:25:36
data_cmsMaxChgSoc 100 2026-06-18 11:25:36
data_cmsMinDsgSoc 10 2026-06-18 11:25:36
data_energyStrategyOperateMode.operateIntelligentScheduleModeOpen false 2026-06-18 11:25:36
data_energyStrategyOperateMode.operateSelfPoweredOpen true 2026-06-18 11:25:36
data_feedGridMode 2 2026-06-18 11:25:36
data_gridConnectionPower 730.36707 2026-06-18 11:25:36
data_powGetBpCms 262.70752 2026-06-18 11:25:36
data_powGetPvSum 1225.0 2026-06-18 11:25:36
data_powGetSysGrid 0.0 2026-06-18 11:25:36
data_powGetSysLoad 962.2925 2026-06-18 11:25:36
data_quota_cloud_ts 2026-06-18 17:25:34 2026-06-18 11:25:36
data_relay2Onoff true 2026-06-18 11:25:36
data_relay3Onoff true 2026-06-18 11:25:36
message Success 2026-06-18 11:25:36

Ist das jetzt die korrekte Version des Moduls?!? Mich irritiert die Versionsnummer (und das Datum) ein wenig, dachte vorher wäre die höher gewesen.
Aber vorher war es auch die Datei aus dem ersten Post dieses Threads.

Jedenfalls... wenn ich supporten kann (z.B. mit Werten aus dem MQTT-Client) um das Modul zu verbessern ... programmiertechnisch reichen meine Skills da vermitlich nicht aus  ::)

EDIT: Wie müsste ich denn den Wert von Model setzen für ein "EcoFLow STREAM Ultra" (ohne X)

EDIT: Habs gefunden

Zitat von: dergolem am 06 März 2026, 13:28:11Folgene Geräte sollten jetzt zusätzlich noch unterstützt werden:
Name für testModel  Unterstütes Gerät
STREAM AC           STRAEM AC
STREAM MAX          STREAM MAX
STREAM UP           STREAM Ultra, STREAM Pro, STREAM AC Pro, STREAM Ultra X, STREAM Ultra (US)

Gruß
Thomas

MasterRay

Hallo,

ich habe ein System mit 3 Geräten, wovon eines gemäß EF-Dokumentation nicht unterstützt wird. Dieses liefert auch entsprechend immer nur den Code "1006". Die anderen funktionieren problemlos.

Nach meinem Verständnis wird bei den Requests auch allenfalls die Seriennummer übergeben, aber nicht direkt das Modell.

Viele Grüße

KölnSolar

#249
ZitatError. Model not supported. Wrong model name
ist korrekt, weil River nicht in uppercase.
Mich irritiert, dass das &-Zeichen nicht richtig dargestellt wird
Zitat$query_str = id=123456789&moduleType=0&operateType=TCP¶ms.id=49¶ms.maxChgSoc=90&sn=XXXXXXXXXXX&version=1.0&accessKey=XXXXXXXXXXX&nonce=223581×tamp=1781772294671
Da hatte Denis mal was zu gesagt, nur Anzeigeproblem (?) und ansonsten hat er eigentlich eine wirksame Korrektur gemacht.
@Denis: was meinst Du ?

ZitatUpdate funktioniert dann weiterhin nicht mit der beschriebenen Meldung.
Schade  :)) Die Meldung ist ja recht eindeutig. Ich schnüffle mal weiter bei HA.
Zyklisches Lesen geht auch nicht ? Code, Message ?




ZitatAllerdings bleibt Modell noch leer, vielleicht kommt er nicht mit 2 Geräten in einem System klar?!?
Doch, aber Smartmeter wird nicht unterstützt.

Mach mal nur mit der Ultra weiter. Danach versuchen wir uns am smartmeter, der aber protobuf(nicht implementiert) spricht.
Grüße Markus
Edit: @MasterRay: Genau.

RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

ZitatZyklisches Lesen geht auch nicht ? Code, Message ?
Nein, wie gehabt.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

KölnSolar

RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

KölnSolar

#253
Ja schade, dann beerdigen wir die River Max. :))
Einen Versuch wars wert.

Edit: Die vermeintliche HA-Implementierung bezog sich auf MQTT.
RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

DS_Starter

Ich lasse das Modul drin. Vllt. tut sich bei EcoFlow nochmal was bzw. sende ich mal einen Request wenn ich die Möglichkeit finde.

Ein Wunsch hätte ich unabhängig davon. Schön wäre es ein "disable" zu haben oder interval=0 damit man das Modul bei Bedarf deaktivieren oder in einer Ereigniskette gezielt abfragen kann.

Bis denne ... und danke für deine Mühe :)

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter