Hallo zusammen,
Wollte mal meinen Senf dazugeben
Zu Anfang des Jahres habe ich keinerlei Infos zur API von Ecoflow gefunden. Das stört mich aber meistens nicht, und ich hab mit einer Men-In-The-Middle attacke weitergemacht und mir meine token aus der Android App stibitzt. Gleichzeitig konnte ich mir noch den Traffic der App anschauen und welche API Calls er ausführt.
Gesagt getan, lief - das ist halt nichts zum veröffentlichen, da ich die Keys manuell ausgelesen habe und es erneut machen muss wenn sie ablaufen.
Bringt ja nichts die Leute scharf zu machen wenn sie es nicht umsetzen können.
Nun gut, dann auf einmal lief nichts mehr (Das war zum Zeitpunkt der änderung der API) also wieder MITM und traffic anschauen. Hierbei viel mir auf das die App die Api eigentlich kaum noch nutzt, zumindest nicht um die Werte der Geräte zu erhalten. Ecoflow ist auf MQTT umgestiegen - find ich gut^^ - und sie haben mir auch direkt die Zugangsdaten für den MQTT Server bereitgestellt (Spass - aber im Traffic konnte ich sie finden)
Mit MQTT Explorer mal angesehen was dabei so rumkommt und dann direkt eine MQTT Instanz dafür erstellt. Als Rückgabe kommt ein JSON, was ich erstmal auf Objekte übersetzen muss. Die River 2 kam heute und die MQTT Nachrichten kommen leider im 0,5 Sekunden takt (Keine Ahnung wieso EcoFlow das macht, verbraucht ja auch Serverresourcen und Strom am Gerät???)
Habe nun da es sehr CPU lastig ist mal erneut geschaut ob die community etwas geschaffen hat zum pullen, und hier bin ich - tolle arbeit ich besorg mir nun via support mal einen API Key & Secret - der Adapter wurde offiziell gefunden und ohne Fehler installiert
Hier mal einige links die ich nutzte um daten abzurufen:
"https://iot1.ecoflow.com/api/v1/devices/getDeviceData?sn=DAEXXXXXXXXXXXXXXX"
"https://iot1.ecoflow.com/api/V1/users/devices"
"https://iot1.ecoflow.com/api/v1/users/getInfo"
"https://iot1.ecoflow.com/api/v2/devices/getLatestPackInfo?sn=DAEXXXXXXXXXXXXXXX"
Und ein paar Konfigurations beispiele:
--data-binary "{"cfg":{"curr_mA":4000,"id":71},"sn":"DAEXXXXXXXXXXXXXXX"}" --compressed "https://iot1.ecoflow.com/api/v1/devices/configDevice"
--data-binary "{"cfg":{"cmdset":0,"curr_mA":0,"enabled":0,"id":49,"lcd_time":0,"max_chg_soc":100,"max_power":0,"min_dsg_soc":0,"mppt_mode":0,"out_freq":0,"out_voltage":0,"slowChgPower":0,"standby_mins":0,"standby_mode":0,"state":0,"work_mode":0,"xboost":0},"sn":"DAEXXXXXXXXXXXXXXX"}" --compressed "https://iot1.ecoflow.com/api/v1/devices/configDevice"
Dann habe ich eben mal in den Traffic geschaut und mal rausgesucht was für https calls es so gibt
https://api.ecoflow.com/iot-service/device/upgradeStatus?sn=R6XXXXXXXXXXXXXXX"
"https://api.ecoflow.com/iot-service/device/latestPackInfo?supportSelfRD=1&sn=R6XXXXXXXXXXXXXXX"
"https://api.ecoflow.com/app/redPointNotify/main"
"https://api.ecoflow.com/iot-service/retrieve/sn?page=1&size=20"
"https://api.ecoflow.com/iot-service/user/device"
"https://api.ecoflow.com/iot-service/user/device"
"https://oa.ecoflow.com/api/afterSales.customerOrder.getUnreadCount"
"https://api.ecoflow.com/iot-service/version/latest?platform=2&channel=1"
"https://api.ecoflow.com/app/sku/queryBySn?SN=R6XXXXXXXXXXXXXXX"
"https://api.ecoflow.com/usercenter/inuc/getUserInfo"
"https://api.ecoflow.com/usercenter/inuc/getUserInfo"
"https://api.ecoflow.com/iot-service/user/config/push"
"https://api.ecoflow.com/app/productClass/classTree"
"https://api.ecoflow.com/app/productClass/productUsingList"
hier gibt es die mqtt benutzerdaten:
"https://api.ecoflow.com/iot-auth/app/certification?userId=hierkommtdieuseridhin"
Die userId wird nach dem Login übermittelt:
"https://api.ecoflow.com/auth/login"
E.g:
curl -H "Host: api.ecoflow.com" -H "lang: de-de" -H "lang: de-de" -H "platform: android" -H "sysversion: 11" -H "version: 4.1.2.02" -H "phonemodel: SM-X200" -H "content-type: application/json" -H "user-agent: okhttp/3.14.9" --data-binary "{"appVersion":"4.1.2.02","email":"deineemail@aol.com","os":"android","osVersion":"30","password":"DEINPASSWORTINBASE64","scene":"IOT_APP","userType":"ECOFLOW"}" --compressed "https://api.ecoflow.com/auth/login"