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.
About this skill
This skill provides a robust interface for AI agents to interact with Ecovacs and DEEBOT robot vacuums via the official Ecovacs IoT API. It abstracts complex API protocols into simple, executable Python commands, allowing agents to issue various directives. Key functionalities include starting, stopping, or pausing cleaning cycles, returning the robot to its charging dock, checking current battery levels and cleaning status, adjusting suction and water levels, managing cleaning schedules, monitoring consumable lifespans (like brushes and filters), and controlling auto-empty stations. The skill handles session management by storing authentication tokens locally, simplifying recurring interactions. Users can integrate their Ecovacs robots into broader AI-driven smart home automation systems, enabling hands-free control and custom routines. It covers a wide range of mainstream Ecovacs protocols, making it a comprehensive tool for programmatic robot vacuum management.
Best use case
The primary use case is to empower AI agents to directly control and monitor Ecovacs and DEEBOT robot vacuums, automating routine cleaning tasks and status checks. This is ideal for smart home enthusiasts, developers, or anyone looking to integrate their robot vacuum into custom automation workflows or voice-controlled environments without relying solely on the manufacturer's mobile app.
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.
The Ecovacs robot vacuum will execute the commanded action (e.g., start cleaning, return to dock), and the agent will report its status or the requested information.
Practical example
Example input
Can you check the battery level of my kitchen vacuum, then tell it to start a full house clean?
Example output
Checking battery for Kitchen Vacuum (did: your_device_id). Battery: 85%. Starting full house clean for Kitchen Vacuum.
When to use this skill
- When the user wants to start, stop, or pause a robot vacuum's cleaning cycle.
- When the user needs to check the robot's battery level or current cleaning status.
- When the user wants to manage cleaning schedules or adjust suction/water levels remotely.
- When the user needs to send the robot back to its charging dock or check consumable life.
When not to use this skill
- When controlling non-Ecovacs/DEEBOT robot vacuums.
- When physical presence or manual interaction with the robot is required.
- When the user prefers using the official Ecovacs app directly for all controls.
- When privacy concerns around sharing Ecovacs account credentials with an agent are paramount.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/skill-create-pip/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ecovacs-robot-control Compares
| Feature / Agent | ecovacs-robot-control | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | medium | N/A |
Frequently Asked Questions
What does this skill do?
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.
How difficult is it to install?
The installation complexity is rated as medium. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
Top AI Agents for Productivity
See the top AI agent skills for productivity, workflow automation, operational systems, documentation, and everyday task execution.
SKILL.md Source
# 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
```bash
# 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:
```python
# 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 |
|------|---------|----------------------|
| 开始全屋清扫 | `clean_V2` | `{act:"start", content:{type:"auto",count:1}}` |
| 区域清扫 | `clean_V2` | `{act:"start", content:{type:"spotArea",value:"mssid1,mssid2"}}` |
| 暂停/继续/停止 | `clean_V2` | `{act:"pause/resume/stop"}` |
| 回充 | `charge` | `{act:"go"}` |
| 查电量 | `getBattery` | `{}` |
| 查清扫状态 | `getCleanInfo_V2` | `{}` |
| 查本次面积时长 | `getStats` | `{}` |
| 查/设吸力 | `getSpeed`/`setSpeed` | `{speed:0}` (1000静音/0标准/1强劲/2超强) |
| 查/设水量 | `getWaterInfo`/`setWaterInfo` | `{amount:2}` (1低/2中/3高/4超高) |
| 查/设扫拖模式 | `getWorkMode`/`setWorkMode` | `{mode:0}` (0边扫边拖/1仅扫/2仅拖/3先扫后拖) |
| 查耗材 | `getLifeSpan` | `{type:"brush,sideBrush,heap,filter"}` |
| 手动集尘 | `setAutoEmpty` | `{act:"start"}` |
| 查地图列表 | `getCachedMapInfo` | `{}` |
| 查房间区域 | `getMapSet` | `{mid:"<map_id>",type:"ar"}` |
| 查预约 | `getSched_V2` | `{type:1}` |
---
## Error Handling
| errno | meaning |
|-------|---------|
| 3000 | Token expired → re-login |
| 3003 | Permission denied → check `toType` = device `class` |
| 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: `ECOCN`, country: `CN`
- Password: MD5 hex of plaintextRelated Skills
mijia-control
Control and monitor Xiaomi Mijia smart home devices. Use this skill when the user wants to: 1) Switch device status (on/off, brightness, etc.) 2) List available home devices 3) Run automation scenes 4) Check environmental statistics.
Pest Control Operations Agent
You are an expert pest control business operations advisor. Help operators with licensing, EPA/FIFRA compliance, pricing, route optimization, seasonal planning, technician management, and growth strategy.
Export Compliance & Trade Controls
Analyze products, destinations, and end-users against US export control regulations (EAR, ITAR, OFAC sanctions). Generate classification recommendations, license requirements, and compliance checklists.
control-ikea-lightbulb
Control IKEA/TP-Link Kasa smart bulbs (set on/off, brightness, and color). Use when you want to programmatically control a local smart bulb by IP on the LAN.
intiface-control
Control 750+ BLE intimate devices (Lovense, Kiiroo, We-Vibe, Satisfyer, etc.) from natural language via Intiface Central and buttplug-mcp. Works on macOS, Windows, and Linux. No protocol reverse-engineering required.
Robotic Control Skill (OpenClaw)
## Overview
agent-control
Manage OpenClaw isolated agents from chat with short commands. Use when the user asks to create/list/switch/bind/delete agents, route channels to a specific agent, or set an agent identity without manually typing full CLI syntax.
desktop-control-custom
Advanced desktop automation with mouse, keyboard, and screen control
multi-robot
多机器人协同控制 Skill。让 AI Agent 具备感知反馈、动态适配、并行调度多种机器人的能力。支持机械臂、四足机器人等任意 HTTP API 机器人。
plexctl — Plex Media Server Control
> Standalone CLI for controlling Plex Media Server and clients via the Plex API
PinchTab Browser Control 🖱️
让 AI 通过 PinchTab 控制浏览器的 Skill。
slack-controller
Control Slack via Browser Automation to send messages, manage huddles, screen share, set status, and react as the logged-in user.