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

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

Vorheriges Thema - Nächstes Thema

dergolem

So die Get sind drinn:
hier der Code für Stream MAX
"STREAM MAX" => {
"Adjustments" => {},
"Gets" => {
"relay2Onoff" => "",
"backupReverseSoc" => "",
"energyStrategyOperateMode.operateSelfPoweredOpen" => "",
"energyStrategyOperateMode.operateIntelligentScheduleModeOpen" => "",
"feedGridMode" => "",
},
"Sets" => {
"cfgRelay2Onoff" => ":true,false",
"cfgBackupReverseSoc"=> ":slider,3,1,95",
"cfgEnergyStrategyOperateMode.operateSelfPoweredOpen" => ":true",
"cfgEnergyStrategyOperateMode.operateIntelligentScheduleModeOpen" => ":true",
"cfgFeedGridMode" => ":1,2",
},
"GetCmdCodes" => {
"relay2Onoff" =>                                           { "params.quotas" => {"relay2Onoff" => "",} },
"backupReverseSoc" =>                                       { "params.quotas" => {"backupReverseSoc" => ""},  },
"energyStrategyOperateMode.operateSelfPoweredOpen" =>       { "params.quotas" => {"energyStrategyOperateMode.operateSelfPoweredOpen" => ""} },
"energyStrategyOperateMode.operateIntelligentScheduleModeOpen" => { "params.quotas" => {"energyStrategyOperateMode.operateIntelligentScheduleModeOpen" => ""} },
"feedGridMode" =>                                       { "params.quotas" => {"feedGridMode" => ""} },
},
"SetCmdCodes" => {
    "cfgRelay2Onoff" => { "cmdId" => 17, "cmdFunc" => 254, "dirDest" => 1, "dirSrc" => 1, "needAck" => "true", "dest" => 2, "params.cfgRelay2Onoff" => "a[2]"},
"cfgBackupReverseSoc" => { "cmdId" => 17, "cmdFunc" => 254, "dirDest" => 1, "dirSrc" => 1, "dest" => 2, "needAck" => "true", "params.cfgBackupReverseSoc" => "a[2]" },
"cfgEnergyStrategyOperateMode.operateSelfPoweredOpen" => { "cmdId" => 17, "cmdFunc" => 254, "dirDest" => 1, "dirSrc" => 1, "dest" => 2, "needAck" => "true", "params.cfgEnergyStrategyOperateMode.operateSelfPoweredOpen" => "a[2]"},
"cfgEnergyStrategyOperateMode.operateIntelligentScheduleModeOpen" => { "cmdId" => 17, "cmdFunc" => 254, "dirDest" => 1, "dirSrc" => 1, "dest" => 2, "needAck" => "true", "params.cfgEnergyStrategyOperateMode.operateIntelligentScheduleModeOpen" => "a[2]"},
"cfgFeedGridMode" => { "cmdId" => 17, "cmdFunc" => 254, "dirDest" => 1, "dirSrc" => 1, "dest" => 2, "needAck" => "true", "params.cfgFeedGridMode" => "a[2]"},
},

Gurß Denis


hier der Auszug aus dem Log:
2026.01.12 07:07:31 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): cmd = relay2Onoff
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax has GetCmdCodes
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $key = params.quotas
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $str_value =
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = POST
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=553634 $timestamp=1768198064501
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["relay2Onoff"]}}
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = params.quotas[0]=relay2Onoff&sn=BKXXXXXXXXXXXXX&accessKey=XXXXXXXXXXXXXXXXXXXXXXXXXX&nonce=553634×tamp=1768198064501
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["relay2Onoff"]}}
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.12 07:07:44 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":{"relay2Onoff":true},"eagleEyeTraceId":"","tid":""}
2026.01.12 07:07:44 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=376545 $timestamp=1768198072616
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/list $query_str = accessKey=XXXXXXXXXXXXXXXXXXXXXXXXXX&nonce=376545×tamp=1768198072616
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=754027 $timestamp=1768198072619
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota/all?sn=BKXXXXXXXXXXXXX $query_str = accessKey=XXXXXXXXXXXXXXXXXXXXXXXXXX&nonce=754027×tamp=1768198072619
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/list
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":[{"sn":"BKXXXXXXXXXXXXX","deviceName":"STREAM Max-7155gol","online":1}],"eagleEyeTraceId":"","tid":""}
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): code = 0
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_deviceName = STREAM Max-7155gol
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_online = 1
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn = BKXXXXXXXXXXXXX
2026.01.12 07:07:52 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn : Comparing SerialNo BKXXXXXXXXXXXXX
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $base = data_1
2026.01.12 07:07:52 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): STREAM Max-7155gol
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): eagleEyeTraceId =
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): message = Success
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): tid =
2026.01.12 07:07:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota/all?sn=BKXXXXXXXXXXXXX
2026.01.12 07:07:52 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): cmd = feedGridMode
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax has GetCmdCodes
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $key = params.quotas
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $str_value =
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = POST
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=981418 $timestamp=1768198080985
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["feedGridMode"]}}
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = params.quotas[0]=feedGridMode&sn=BKXXXXXXXXXXXXX&accessKey=XXXXXXXXXXXXXXXXXXXXXXXXXX&nonce=981418×tamp=1768198080985
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.12 07:08:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["feedGridMode"]}}
2026.01.12 07:08:01 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.12 07:08:01 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":{"feedGridMode":2},"eagleEyeTraceId":"","tid":""}
2026.01.12 07:08:01 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): cmd = energyStrategyOperateMode.operateSelfPoweredOpen
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax has GetCmdCodes
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $key = params.quotas
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): $str_value =
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = POST
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=763286 $timestamp=1768198087133
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["energyStrategyOperateMode.operateSelfPoweredOpen"]}}
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = params.quotas[0]=energyStrategyOperateMode.operateSelfPoweredOpen&sn=BKXXXXXXXXXXXXX&accessKey=XXXXXXXXXXXXXXXXXXXXXXXXXX&nonce=763286×tamp=1768198087133
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"sn": "BKXXXXXXXXXXXXX", "params": {"quotas":["energyStrategyOperateMode.operateSelfPoweredOpen"]}}
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.12 07:08:07 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":{"energyStrategyOperateMode.operateSelfPoweredOpen":true},"eagleEyeTraceId":"","tid":""}
2026.01.12 07:08:07 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars

KölnSolar

Na wer sagt es denn: Success  8)

Also klappt der generelle Zugriff.

Bleiben die sets. Guck als 1. mal nach dem xtamp. Evtl. versehentlich timestamp im Code überschrieben ?
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

dergolem

Hi,

Nein das wort xtamp ist nicht im Code vorhanden. Da wo timestamp stehen soll ist es auch immer vorhanden.
Ich habe die Datei mal im jetzigen Zustand amgehängt.


KölnSolar

#123
Deine Version liefert bei mir kein xstamp. :o

Shutdown Restart gemacht ? wie hast Du URL::Encode installiert ? Bei welcher Hardware/OS Konstellation ?

Edit: nimm bitte mal meine Version, denn Deine verursachte bei mir andere Probleme.
Ich habe Deine Daten für Stream max übernommen. Nicht aber die "model detection". Knut hat das Attribut testmodel eingebaut. Wenn Du das mit STREAM MAX anlegst, sollte es auch funktionieren.
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

dergolem

Hallo,

die Hardware wird jetzt nicht mehr erkannt. Da er immernoch das Problem mit dem Xtamp hat werde ich die Perl Module alle noch mal mit einem Update versehen. Wenn ich noch die nötige Zeit habe werde ich das gesammte system updaten.
Ich habe einen Odroid HC2 mit DietPi v9.xy Shutdown Restart habe ich schon mehrfach gemacht.

2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model =
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): cmd = devices
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=124528 $timestamp=1768282049382
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/list $query_str = accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&nonce=124528×tamp=1768282049382
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/list
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":[{"sn":"BKxxxxxxxxxxxxxx","deviceName":"STREAM Max-7155gol","online":1}],"eagleEyeTraceId":"","tid":""}
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): code = 0
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_deviceName = STREAM Max-7155gol
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_online = 1
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn = BKxxxxxxxxxxxxxx
2026.01.13 06:27:29 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn : Comparing SerialNo BKxxxxxxxxxxxxxx
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $base = data_1
2026.01.13 06:27:29 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response():
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): eagleEyeTraceId =
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): message = Success
2026.01.13 06:27:29 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): tid =

KölnSolar

ZitatOdroid HC2 mit DietPi v9.xy
Da bin ich raus.
Attribut hattest Du gesetzt ? Was steht im Internal Model ?
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

dergolem

Hi,
ich habe das mit dem attr testModel versucht, das Funktioniert. Ich habe aber noch keine Lösung für:

"&needAck=truems.cfgRelay2Onoff=false"

und "xtamp" gefunden. Ein Update des Moduls URL::Encode habe ich gemacht. Das hat nicht geholfen.

Gruß Denis 

phantom

#127
HI,
gibt es schon einen Fortschritt für Ecoflow STREAM Module? Insbesondere wie aktiviert man die Set-Funktionen?
Die GET Funktionen zum Auslesen klappt auch mit den Ecoflow STREAM Ultra
aber bei den SET Funktionen (z.B. zum Schalten der Ausgänge) mittels PUT oder POST calls komme ich nicht weiter
PS: ich bin mit der Modulversion von KölnSolar aus #127 am weitesten gekommen

Neolux

Nice, gefällt mir. Sollten wir den SourceCode nach Github transferieren?

Sorry, über dne Winter war ich ziemlich untätig, weil meine Solaranlage da auch nicht so viel zu tun hatte. :)
Gruß
Knut

---
Modul 98_Ecoflow.pm für Ecoflow-Komponenten, die aktuellste Version gibt es immer hier

dergolem

Hallo phantom,
ja get funktioniert, kannst du mal versuchen einen Set mit verbose 5 zu machen und dann den Auszug aus dem Log hier Posten? Unkenntlich machen der Seriennummer und API Keys nicht vergessen. Mich würde interessieren ob da die Probleme wie bei mir auftreten. ich habes es schon soweit probiert, das ich das URL encode schon von Hand als Funktion eingebaut habe, was auch keine änderung brachte, bei mir fehl nur noch als Versuch ein komplettes System Update aus. Das hat aber erstmal keine Prio, da für mein Balkonkraftwerk ein neues Smart Meter her müsste von Janitza umg103 auf Shelly pro 3em( was für ein Abstieg)).

Gruß Denis

phantom

die Set Funktion für die Ausgänge, etc.  wird bei mir erst gar nicht im Frontend angezeigt  :o

ich vermute, weil auch die "detect model" Set-Funktion des Ecoflow Model nicht erkennt (dessen Name ist bei mir als "Ultra-1083" über die App eingetragen)
ist das Erkennen des Modells ggf. eine Voraussetzung für alles Weitere?

KölnSolar

ZitatSollten wir den SourceCode nach Github transferieren?

Sorry, über dne Winter war ich ziemlich untätig,
Und weil Du Dich lange nicht gemeldet hattest, habe ich zwischenzeitlich eine stark veränderte Version entwickelt.
Da sollten wir dann
1. schauen, ob meine Version nicht sinnvoller ist und
2. Warum github ? wenn doch ins FHEM-SVN als offizielles Modul.

ZitatErkennen des Modells ggf. eine Voraussetzung für alles Weitere?
Das lässt sich im Augenblick über das attr testmodel lösen. Set müsstest Du mit der zitierten Version dann bekommen(wird aber vermutlich wie bei Denis ohne Erfolg sein)

Ich werde vermutlich in 1-2 Wochen so weit sein, dass ich hier eine erste Version veröffentlichen kann und dann auch detailliert erläutern, was und warum ich "Funktionalitäten" verändert habe.
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

phantom

Hi zusammen, 
es stimmt  :P  testModel bringt nicht wirklich weiter; es bleibt bei den GET's
die SET's über PUT bzw. POST bekomme ich auch mittels curl nicht hin, obwohl curl-GET problemlos klappt
--> ich werde hier auf eine verbesserte Version von KölnSolar warten (nur kein Stress, es scheint ja ohnehin nicht so viel Sonne ...)

Bis dahin habe ich mal die Ecoflow STREAM's mittels MQTT2_CLIENT in FHEM eingebunden und darüber konnte man auch SET's per MQTT-Publish absetzen. Das Ganze via MQTT ist etwas "unplanbar", da nicht zu erkennen ist wann Ecoflow welche der vielen subscribe-Werte aktualisiert.

bis dahin  Gruß phantom

KölnSolar

ZitatBis dahin habe ich mal die Ecoflow STREAM's mittels MQTT2_CLIENT in FHEM eingebunden und darüber konnte man auch SET's per MQTT-Publish absetzen.
Genau.
Zitat--> ich werde hier auf eine verbesserte Version von KölnSolar warten (nur kein Stress, es scheint ja ohnehin nicht so viel Sonne ...)
Da muss ich Dich leider enttäuschen. Ich habe ja dasselbe und ungelöste Problem mit meinem powerstream, der bei anderen problemlos funktioniert. :'(
Mit meiner Version wird lediglich das debugging transparenter, da nicht z.B. durch das set ein reading ein update erfährt, sondern nur, wenn wirklich Daten von der API kommen. Überraschend wieviele readings es gibt, aber nur wenige tatsächlich "genutzt" werden.
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

phantom

#134
ich habe die HTTP API nochmal "von Hand" mit curl gemäß der Ecoflow Dokumentation durchprobiert
GET: /iot-open/sign/device/system/main/sn?sn=BKXXXXXXXXXX  klappt problemlos
aber
PUT: /iot-open/sign/device/quota: SetCmdRequest
POST: /iot-open/sign/device/quota: GetCmdRequest, GetCmdResponse

klappt mit den identischen Zugangsdaten nicht, es bringt stets "signature ist wrong"

hat das evtl. schon jemand erfolgreich beim Ecoflow STREAM geschafft?