Ecovacs in Home Assistant Part7 - Robot Vacuum Control skills
For state queries, you can use the script status, or call GetWorkState via POST /robot/skill/ctl.
Now we Call the Ecovacs Deebot gateway api via HTTP
Table of Contents
Device list
curl -sS "https://open.ecovacs.com/robot/skill/deviceList?ak=your Access Key"
curl -sS "https://open.ecovacs.cn/robot/skill/deviceList?ak=FOcadaKSxfWGsZ65bsDeGlXjc4bASLko" | python -m json.tool
{
"msg": "OK",
"code": 0,
"data": [
{
"name": "E0**",
"nick": "DEEBOTX5PRO"
},
{
"name": "E0**",
"nick": null
}
]
}
curl -sS -X POST "https://open.ecovacs.cn/robot/skill/ctl" -H 'Content-Type: application/json' \
-d “{\"ak\":\"FOcadaKSxfWGsZ65bsDeGlXjc4bASLko\",\"nickName\":\"DEEBOTX5PRO\",\"ctl\":{\"cmd\":\"GetAreaList\",\"data\":{}}}" | python -m json.tool
Get area list
curl -sS -X POST "${BASE_URL}/robot/skill/ctl" -H 'Content-Type: application/json' \
-d "{\"ak\":\"${AK}\",\"nickName\":\"device nick or name fragment\",\"ctl\":{\"cmd\":\"GetAreaList\",\"data\":{}}}"
curl -sS -X POST "https://open.ecovacs.cn/robot/skill/ctl" \
-H "Content-Type: application/json" \
-d '{
"ak": "FOcadaKSxfWGsZ65bsDeGlXjc4bASLko",
"nickName": "DEEBOTX5PRO",
"ctl": {
"cmd": "GetAreaList",
"data": {}
}
}' | python -m json.tool output
curl -sS -X POST "https://open.ecovacs.cn/robot/skill/ctl" \
-H "Content-Type: application/json" \
-d '{
"ak": "FOcadaKSxfWGsZ65bsDeGlXjc4bASLko",
"nickName": "DEEBOTX5PRO",
"ctl": {
"cmd": "GetAreaList",
"data": {}
}
}' | python -m json.tool
{
"msg": "OK",
"code": 0,
"data": {
"code": 0,
"msg": "success",
"data": {
"ctl": {
"data": {
"ret": "ok",
"list": [
{
"subType": "6",
"mssid": "2",
"name": "\u5ba2\u5385\u536b\u751f\u95f4"
},
{
"subType": "6",
"mssid": "3",
"name": "\u4e3b\u5367\u536b\u751f\u95f4"
},
{
"subType": "13",
"mssid": "4",
"name": "\u9633\u53f0"
},
{
"subType": "5",
"mssid": "5",
"name": "\u53a8\u623f"
},
{
"subType": "0",
"mssid": "6",
"name": "\u5ba2\u4eba\u623f"
},
{
"subType": "10",
"mssid": "7",
"name": "\u513f\u7ae5\u623f"
},
{
"subType": "3",
"mssid": "8",
"name": "\u5367\u5ba4"
},
{
"subType": "1",
"mssid": "9",
"name": "\u5ba2\u5385"
},
{
"subType": "4",
"mssid": "10",
"name": "\u4e66\u623f"
}
]
}
}
}
}
}
subtype: 0 unspecified, 1 living room, 2 dining room, 3 bedroom, 4 study, 5 kitchen, 6 bathroom
see: https://github.com/mslycn/vacumm-ecovacs-deebot/blob/main/references/api.md#getarealist-response-list-appendix-e
GetWorkState
curl -X POST "https://open.ecovacs.cn/robot/skill/ctl" \
-H "Content-Type: application/json" \
-d '{
"ak": "你的AK",
"nickName": "你的设备",
"ctl": {
"cmd": "GetWorkState"
}
}'
curl -X POST "https://open.ecovacs.cn/robot/skill/ctl" \
-H "Content-Type: application/json" \
-d '{
"ak": "FOcadaKSxfWGsZ65bsDeGlXjc4bASLko",
"nickName": "DEEBOTX5PRO",
"ctl": {
"cmd": "GetWorkState"
}
}' | python -m json.tool output
{
"msg": "OK",
"code": 0,
"data": {
"code": 0,
"msg": "success",
"data": {
"ctl": {
"data": {
"ret": "ok",
"cleanSt": "h",
"chargeSt": "charging",
"stationSt": "i"
}
}
}
}
}
stationState when deebot docked
idle
"ret": "ok",
"cleanSt": "h",
"chargeSt": "charging",
"stationSt": "i"
dust
"data": {
"ret": "ok",
"cleanSt": "h",
"chargeSt": "charging",
"stationSt": "dust"
dust via ecovacs home app
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'i'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'dustpause'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'dust'}}}}}
deebot auto return to dust
Ecovacs data from vacuum.py: {'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'dust'}
Ecovacs data from vacuum.py: {'cleanSt': 's', 'chargeSt': 'i', 'stationSt': 'i'}
Ecovacs data from vacuum.py: {'cleanSt': 'h', 'chargeSt': 'g', 'stationSt': 'i'}
Ecovacs data from vacuum.py: {'cleanSt': 'p', 'chargeSt': 'charging', 'stationSt': 'i'}
Ecovacs data from vacuum.py: {'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'dustpause'}
wash
"cleanSt": "wash",
"chargeSt": "charging",
"stationSt": "i"
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'dust'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'wash', 'chargeSt': 'charging', 'stationSt': 'i'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'washpause', 'chargeSt': 'charging', 'stationSt': 'i'}}}}
dry
"data": {
"ret": "ok",
"cleanSt": "h",
"chargeSt": "charging",
"stationSt": "dry"
Cleaning only vacumm
{
"msg": "OK",
"code": 0,
"data": {
"code": 0,
"msg": "success",
"data": {
"ctl": {
"data": {
"ret": "ok",
"cleanSt": "s",
"chargeSt": "i",
"stationSt": "i"
}
}
}
}
}
error code
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'fail', 'errno': 4200, 'msg': '{"ret":"fail","errno":4200,"error":"endpoint offline","debug":"jmq.clusterNode.FetchClientInfo rsp!=null; clientinfo is in redis, but last endpoint ping and sync to redis time is 1778503965012, "}'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'fail', 'errno': 4200, 'msg': '{"ret":"fail","errno":4200,"error":"endpoint offline","debug":"jmq.clusterNode.FetchClientInfo rsp!=null; clientinfo is in redis, but last endpoint ping and sync to redis time is 1778503965013, "}'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'fail', 'errno': 4200, 'msg': '{"ret":"fail","errno":4200,"error":"endpoint offline","debug":"jmq.clusterNode.FetchClientInfo rsp!=null; clientinfo is in redis, but last endpoint ping and sync to redis time is 1778503965014, "}'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'fail', 'errno': 4200, 'msg': '{"ret":"fail","errno":4200,"error":"endpoint offline","debug":"jmq.clusterNode.FetchClientInfo rsp!=null; clientinfo is in redis, but last endpoint ping and sync to redis time is 1778503965018, "}'}}}}}
JSON response from api.py: {'msg': 'OK', 'code': 0, 'data': {'code': 0, 'msg': 'success', 'data': {'ctl': {'data': {'ret': 'ok', 'cleanSt': 'h', 'chargeSt': 'charging', 'stationSt': 'i'}}}}}
detail:
CloudCtl: Clean https://github.com/mslycn/vacumm-ecovacs-deebot/blob/main/references/api.md#cloudctl-clean
Comments
Be the first to post a comment