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