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

 

 

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

Post a comment