Skills ecovacs-robot-control
Control Ecovacs/DEEBOT robot vacuums via the Ecovacs IoT API. Use when the user wants to control a robot vacuum, check battery, start/stop/pause cleaning, return to dock, check clean status, set suction/water level, manage schedules, check consumables, or control auto-empty station. Covers all mainstream Ecovacs protocols including clean_V2, charge, getBattery, getCleanInfo_V2, getStats, getSpeed/setSpeed, getWaterInfo/setWaterInfo, getWorkMode/setWorkMode, getLifeSpan, getAutoEmpty/setAutoEmpty, getCachedMapInfo, getMapSet, getSched_V2/setSched_V2.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/1209823208/skill-create-pip" ~/.claude/skills/clawdbot-skills-ecovacs-robot-control && rm -rf "$T"
manifest:
skills/1209823208/skill-create-pip/SKILL.mdsource content
Ecovacs Robot Control
Auth Flow
Three-step flow: Login → Device List → Send Command
Full API details in
references/api.md. Core script in scripts/ecovacs.py.
Session Management
Session (token + userid + resource) is stored in
~/.ecovacs_session.json after login.
Always load_session() before calling device APIs. Re-login if token expired (errno 3000).
Critical Rule
toType = device's class field from device list (e.g. o0lqjm).NOT
"device" or "USER" — this is the #1 cause of errno:3003 permission denied.
Using the Script
# First time login python3 scripts/ecovacs.py login <phone> <md5_or_plain_password> # List all devices (shows did, status, name) python3 scripts/ecovacs.py devices # Check battery (use did or nick) python3 scripts/ecovacs.py battery <did> # Check clean status python3 scripts/ecovacs.py status <did> # Start full-house auto clean python3 scripts/ecovacs.py clean <did> start # Pause / resume / stop python3 scripts/ecovacs.py clean <did> pause python3 scripts/ecovacs.py clean <did> resume python3 scripts/ecovacs.py clean <did> stop # Return to dock python3 scripts/ecovacs.py charge <did> # Send any arbitrary command python3 scripts/ecovacs.py cmd <did> getLifeSpan '{"type":"brush,sideBrush,heap"}' python3 scripts/ecovacs.py cmd <did> setSpeed '{"speed":1}' python3 scripts/ecovacs.py cmd <did> getWorkMode '{}'
Direct API Calls
When using tools directly (not script), follow this pattern:
# 1. Login session = login(phone, md5(password)) # 2. Get devices devices = get_devices(session) device = next(d for d in devices if "T50" in d["deviceName"]) # 3. Send command result = send_cmd(session, device, "clean_V2", { "act": "start", "content": {"type": "auto", "count": 1} })
See
references/api.md for full protocol reference:
- Auth & device discovery — login, resource generation, device list fields
- All command payloads — clean_V2, charge, battery, stats, speed, water, workmode, lifespan, autoEmpty, maps, schedules
- State/event codes — error codes, evt codes, clean states
Common Protocols Quick Reference
| Goal | cmdName | key body.data fields |
|---|---|---|
| 开始全屋清扫 | | |
| 区域清扫 | | |
| 暂停/继续/停止 | | |
| 回充 | | |
| 查电量 | | |
| 查清扫状态 | | |
| 查本次面积时长 | | |
| 查/设吸力 | / | (1000静音/0标准/1强劲/2超强) |
| 查/设水量 | / | (1低/2中/3高/4超高) |
| 查/设扫拖模式 | / | (0边扫边拖/1仅扫/2仅拖/3先扫后拖) |
| 查耗材 | | |
| 手动集尘 | | |
| 查地图列表 | | |
| 查房间区域 | | |
| 查预约 | | |
Error Handling
| errno | meaning |
|---|---|
| 3000 | Token expired → re-login |
| 3003 | Permission denied → check = device |
| 30000 | Device response timeout → device offline |
| 0 (body.code) | Success |
Accounts (China domestic)
- Login URL:
https://api-app.dc-cn.cn.ecouser.net/api/users/user.do - org:
, country:ECOCNCN - Password: MD5 hex of plaintext