Open CZDanol opened 2 years ago
Only :
/getWifi
/getDetail
/getLightStatus
/getLed
/getSta
/guideDone
/setLightStatus
/setLed
/setNick
/setSta
How did you figure the list out? Is that definitely the complete list for SP9? Previous versions of the socket don't have the power monitoring functionality afaik.
In Android app code
with : http://<ip>:5000/XXX
I have an SP9 and I'm also looking
I see. Thank you for your response. Please let me know if you find it out :) I'm trying to make the plug working with Home Assistant. I've made it turn on and off already, it's a pity I can't access the power monitoring data.
There are two operating modes:
/getSta
, /setSta
, ...)Can you post the full exchange with tcpdump
?
my dump :
Received: 2400060001670053033f0000000000007b2273657269616c4e756d223a224541...34222c226d61726b223a22222c2274696d655f7a6f6e65223a302c226c6f636174696f6e223a224672616e63652f5061726973227d
{"serialNum":"EA...4","mark":"","time_zone":0,"location":"France/Paris"}
Received: 240006000166002c033d0000000000007b2273657269616c4e756d223a224541...34222c22737461747573223a307d
{"serialNum":"EA...94","status":0}
Received: 24000600018100000344000000000000240006000189001503450000000000007b22766572223a332c22656e65726779223a5b5d7d
{"ver":3,"energy":[]}
...
Did you ever figure out how to get the energy usage on API?
Nope. Even tried contacting the support, they weren't of much help either.
I am also looking for a solution to get data from the plug. I tried to decompile the official application and look for a way to get this kind of data. If there is a possibility to get data using GET or POST request, then it is not used in the official application. Instead, the power data are collected by the provisioning server where the plug sends data in regular periods. How to setup the plug to own provisioning server is very nicely described in the article metioned by tvaira.
The plug connects to the ntp server and synchronizes the time. In an hour interval - every hour on the hour - plug sends the overall consumption data to the provisioning server. Actual power consumption and partial consumption (last hour) is provided on request. Actual power consumption is provided on every single request, partial consuption data are availible each circa 5 minutes and more frequent request are rejected.
response for Actual powerconsuption
{"resp_code":0,"data":{"power":84.481}}'
response for partial consuption
{"energy":["1666809547,2370,0.060,2315,2","1666809547,2370,0.060,2315,3"]}'
response for partial consuption on the request in the first minutes on the hour (eq 8:00, 9:00) - also contains data from the previous hour
{"energy":["1666735585,362,0.000,0,2","1666735585,4048,0.010,1109,3"]}'
overall consuption data - no request
{"ver":3,"energy":["1666810806,203902,1.920,129354,0"]}
I haven't completely decoded these energy data frames yet because they are slightly different from time to time but i believe:
1666809547
epoch time
2370
time in seconds for which energy consuption is counted
0.060
energy consumed in kwh
2315
time in seconds for which power was actualy drowned
2
I don't understand the meaning yet
I extended the code from lui_gough by adding reading and requesting of energy data ability (POC only), to capture data for afterward "decoding". Download from here
I am familiarizing myself with the development of integration for Home Assistant which is my main aim.
Hello, how did you figure out the "getSta" and "setSta" parameters? I have SP9 which also has power monitoring functionality and I'm trying to figure out what rest endpoint is used to get that data.
I tried doing a tcpdump in my router, but I couldn't get to make the app communicate with the plug directly and the cloud server seems to be using a slightly different protocol. I've found this response: but I wasn't able to find out how to ask for the data locally.