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

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

Vorheriges Thema - Nächstes Thema

dergolem

hier estmal die Variablen:
"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",
},
"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]"},
},

klar, die Perl-Module sind installiert.

dergolem

#121
und hier nochmal ein Längerern Auszug aus der Logdatei:
2026.01.09 10:47:52 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirDest
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdId
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = needAck
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirSrc
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdFunc
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = params.cfgBackupReverseSoc
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $str_value = a[2]
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dest
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = PUT
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=713898 $timestamp=1767952080224
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgBackupReverseSoc": "34"}}
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = cmdFunc=254&cmdId=17&dest=2&dirDest=1&dirSrc=1&needAck=true¶ms.cfgBackupReverseSoc=34&sn=BKXXXXXXXXXXXXX&accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=713898×tamp=1767952080224
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgBackupReverseSoc": "34"}}
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.09 10:48:00 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"8524","message":"cfgBackupReverseSoc validator error","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:00 0: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): ERROR! {"code":"8524","message":"cfgBackupReverseSoc validator error","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:00 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=84976 $timestamp=1767952085420
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/list $query_str = accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=84976×tamp=1767952085420
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=88113 $timestamp=1767952085422
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota/all?sn=BKXXXXXXXXXXXXX $query_str = accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=88113×tamp=1767952085422
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:48:05 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.09 10:48:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/list
2026.01.09 10:48:05 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.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): code = 0
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_deviceName = STREAM Max-7155gol
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_online = 1
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn = BKXXXXXXXXXXXXX
2026.01.09 10:48:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn : Comparing SerialNo BKXXXXXXXXXXXXX
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $base = data_1
2026.01.09 10:48:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): STREAM Max-7155gol
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): eagleEyeTraceId =
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): message = Success
2026.01.09 10:48:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): tid =
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dest
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = params.cfgRelay2Onoff
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $str_value = a[2]
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdFunc
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = needAck
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirSrc
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdId
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirDest
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = PUT
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=564982 $timestamp=1767952090441
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgRelay2Onoff": "false"}}
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = cmdFunc=254&cmdId=17&dest=2&dirDest=1&dirSrc=1&needAck=true¶ms.cfgRelay2Onoff=false&sn=BKXXXXXXXXXXXXX&accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=564982×tamp=1767952090441
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgRelay2Onoff": "false"}}
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.09 10:48:10 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"8524","message":"Validation failed, Please check your param: cfgRelay2Onoff","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:10 0: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): ERROR! {"code":"8524","message":"Validation failed, Please check your param: cfgRelay2Onoff","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:10 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = params.cfgFeedGridMode
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $str_value = a[2]
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirDest
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdFunc
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = cmdId
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = needAck
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dest
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Set(): $key = dirSrc
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = PUT
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=985369 $timestamp=1767952103448
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgFeedGridMode": "2"}}
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota $query_str = cmdFunc=254&cmdId=17&dest=2&dirDest=1&dirSrc=1&needAck=true¶ms.cfgFeedGridMode=2&sn=BKXXXXXXXXXXXXX&accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=985369×tamp=1767952103448
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $json = {"cmdFunc": "254","cmdId": "17","dest": "2","dirDest": "1","dirSrc": "1","needAck": "true","sn": "BKXXXXXXXXXXXXX", "params": {"cfgFeedGridMode": "2"}}
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Get(): EcoFlowMax: $model = STREAM MAX
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/quota
2026.01.09 10:48:23 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"8524","message":"Validation failed, Please check your param: cfgFeedGridMode","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:23 0: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): ERROR! {"code":"8524","message":"Validation failed, Please check your param: cfgFeedGridMode","eagleEyeTraceId":"","tid":""}
2026.01.09 10:48:23 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=816752 $timestamp=1767952145429
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/list $query_str = accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=816752×tamp=1767952145429
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=143763 $timestamp=1767952145431
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/quota/all?sn=BKXXXXXXXXXXXXX $query_str = accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD&nonce=143763×tamp=1767952145431
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/list
2026.01.09 10:49:05 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.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): code = 0
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_deviceName = STREAM Max-7155gol
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_online = 1
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn = BKXXXXXXXXXXXXX
2026.01.09 10:49:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn : Comparing SerialNo BKXXXXXXXXXXXXX
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): $base = data_1
2026.01.09 10:49:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): STREAM Max-7155gol
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): eagleEyeTraceId =
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): message = Success
2026.01.09 10:49:05 5: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): tid =
2026.01.09 10:49:05 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.09 10:49:05 4: EcoFlowMax(Ecoflow 0.3.9.0): Ecoflow_Response(): Setting Reading Vars

KölnSolar

Erste Auffälligkeit: wo sind Deine GetCmdCodes ?

Du testet immer mit sets. Das ist komplizierter.
RPi3/2 buster/stretch-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)-zigbee2mqtt

dergolem

Hi,
sorry am WE ist immer schlecht mit antworten.
Die Get hab ich noch nicht gemacht, ich dachte erstmal die SetCmd zum laufen bringen und dann weitermachen. Ich werde die Montag fertig machen.

Gruß Denis

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 ?
RPi3/2 buster/stretch-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)-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

Deine Version liefert bei mir kein xstamp. :o

Shutdown Restart gemacht ? wie hast Du URL::Encode installiert ? Bei welcher Hardware/OS Konstellation ?
RPi3/2 buster/stretch-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)-zigbee2mqtt