← Back to Skills Marketplace
ecovacs-ai

ecovacs-skills-pet-control

by ecovacs · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
47
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install ecovacs-skills-pet-control
Description
Control Ecovacs FAMIBOT (pet) robots via the Open Platform Access Key (AK) and the gateway endpoint POST /robot/skill/pet/cmd, by sending a business cmd plus...
README (SKILL.md)

Ecovacs Pet (FAMIBOT) Control

What you need

You provide Notes
AK (Access Key) Get one from the Ecovacs Open Platform “Service Overview” (CN: https://open.ecovacs.cn/, INTL: https://open.ecovacs.com/) and put it in your env or pass to set-ak. Do not hand the skill a username/password to log in on your behalf.
Device nickname fragment Used to fuzzy-match nick or name returned by the device list.

Three-step flow

  1. Configure AK (export ECOVACS_AK=... or python3 scripts/ecovacs.py set-ak \x3Cak>)
  2. List devices: python3 scripts/ecovacs.py devices
  3. Control: Use POST /robot/skill/pet/cmd or the script's cmd / display subcommands; cmd must be in the gateway allowlist, otherwise the gateway returns command not enabled.

Run from the repository root: python3 scripts/ecovacs.py .... You may set ECOVACS_PORTAL_URL to a custom gateway base URL; when unset, the default is the CN Open Platform domain.


Usage constraints

  • Only cmd (string) + data (object) are supported; for invalid parameters, trust the error message returned by the cloud.
  • cmd not in the allowlist is rejected; to expose more cmd values, ask a maintainer (or configure PET_CMD_ALLOWLIST).

Response field notes and common set* inputs (externalized)

For field explanations and common set* inputs, see references/schema.md.

Capabilities currently exposed

Name-level only; data is validated by the cloud; actual availability depends on the allowlist check.

Queries

Description cmd
Pet state / emotion / achievements / persona / gender / location & weather / initialization getPetState, getEmotion, getAchievement, getPerson, getPetGender, getLocationInfo, getInitiateState
Microphone / camera / volume / eye brightness / language / wake idle timeout getMicro, getCamera, getVolume, getEyesLight, getLanguage, getWakeTimeout
Latest diary entry getLatestDiary

Deebot-style cmd (battery, work status, consumables, etc.) are not enabled by default; ask a maintainer to enable them if required.

Settings

Description cmd
Microphone / camera / volume / eye brightness / language / wake idle timeout / wake word / gender / initialization setMicro, setCamera, setVolume, setEyesLight, setLanguage, setWakeTimeout, setNickname, setPetGender, setInitiateState

Note: setEyesLight currently returns parameter error (20011) on some hardware, and setCamera may time out (errno=500) on some hardware. Both are not enabled by default; if needed, ask a maintainer to temporarily add them to PET_CMD_ALLOWLIST and verify on a real device.

Control

Description cmd
Display / action sequences (persona, motion sequences, etc.) display
Play sound (high-level wrapper, no raw file) playSound

Before sending any display motion/persona action through scripts/ecovacs.py display ..., the script checks getCamera. If enable != 1, it wakes the pet through the skill gateway with setCamera {"enable":1}, waits until getCamera.enable=1, switches work mode back to standard with setWorkMode {"mode":"standard"}, and only then sends the action. Set ECOVACS_SKIP_WAKE_CHECK=1 only for debugging when you intentionally want to bypass this guard.

Not enabled by default (OTA, Wi-Fi, persona maintenance, data wipe, etc.): adjust the allowlist before invoking.


Script examples

SCRIPT="./scripts/ecovacs.py"

python3 "$SCRIPT" cmd \x3Cnickname-fragment> getPetState '{}'
python3 "$SCRIPT" cmd \x3Cnickname-fragment> getCamera '{}'
python3 "$SCRIPT" cmd \x3Cnickname-fragment> setWakeTimeout '{"timeout":180}'

# Actions go through display; data is the business object
python3 "$SCRIPT" display \x3Cnickname-fragment> personality 127
python3 "$SCRIPT" display \x3Cnickname-fragment> sequence '{"actions":[{"type":"nod_head","angle":"20","moveTimeMs":"800","count":"1","delay":"0","ctrlpoint":""}]}'

# Sound: prefer playSound (server picks a random file and fills moveTimeMs; raw voice file is not exposed)
python3 "$SCRIPT" cmd \x3Cnickname-fragment> playSound '{"category":"happy","count":10}'

HTTP calls (no Python available)

Default gateways: CN https://open.ecovacs.cn, INTL https://open.ecovacs.com (override with ECOVACS_PORTAL_URL if needed).

Device list

curl -sS "${BASE_URL}/robot/skill/deviceList?ak=YOUR_AK"

Pet control

curl -sS -X POST "${BASE_URL}/robot/skill/pet/cmd" -H 'Content-Type: application/json' \
  -d "{\"ak\":\"${AK}\",\"nickName\":\"nickname-fragment\",\"cmd\":\"getPetState\",\"data\":{}}"

The field name must be nickName exactly as above (uppercase N).

Compatibility path: POST /robot/skill/ctl + ctl is still accepted for pet devices and is also subject to the cmd allowlist.


Recommended verification order

Use the script and HTTP examples earlier in this document (get* first, then set* / display) to confirm nickName resolution and allowlist behavior before relying on higher-risk writes.


Errors and troubleshooting (summary)

Case What to do
Outer code != 0 Read msg (invalid AK, device not found, not FAMIBOT, command not enabled)
command not enabled Add the cmd to PET_CMD_ALLOWLIST or ask a maintainer to enable it
setCamera / setWorkMode blocked before a display action Automatic wake-up could not fully run; enable both in the gateway allowlist or wake the pet manually
Token errors like 4504 Check / rotate the AK
3003 Verify nickname matches the right device and that the model supports the capability

More detailed troubleshooting (including "why was this judged not-pet") lives in references/troubleshooting.md.


Doc map

File Audience Content
This SKILL.md Agent / user AK, device list, pet/cmd usage, public capability name-level notes
references/api.md User Gateway URLs and request body fields
references/schema.md User Common response fields, set* input names and compatibility rules
references/troubleshooting.md User Common error branches and resolution paths

Convention: capability boundaries are defined by the gateway allowlist.

Usage Guidance
Before installing, make sure you trust the Ecovacs gateway you configure, protect the AK, verify device nicknames before issuing commands, and avoid enabling broad or destructive commands in PET_CMD_ALLOWLIST unless explicitly needed.
Capability Analysis
Type: OpenClaw Skill Name: ecovacs-skills-pet-control Version: 1.0.0 The skill bundle provides tools to control Ecovacs FAMIBOT robots, including camera, microphone, and physical motion. While the logic in `scripts/ecovacs.py` is aligned with the stated purpose, it exhibits high-risk behaviors such as storing the Access Key (AK) in a local plaintext file (`~/.ecovacs_session.json`) and automatically enabling the device's camera (`setCamera`) as a side effect of motion commands. Per the analysis criteria, these risky capabilities (network/file access and hardware control) are classified as suspicious despite the lack of clear malicious intent.
Capability Assessment
Purpose & Capability
The documented purpose, API calls, and helper script align around Ecovacs FAMIBOT discovery, status queries, settings, sounds, and display actions. Some capabilities affect camera/microphone-related state and physical robot behavior, which is expected but sensitive.
Instruction Scope
The skill documents a cmd/data gateway interface and emphasizes an allowlist. Users should avoid widening PET_CMD_ALLOWLIST unless they intentionally want the additional command surface.
Install Mechanism
There is no package install or remote installer shown, and the helper uses Python standard libraries. Registry metadata does not declare the AK credential/env usage even though the docs disclose it.
Credentials
Network calls to the Ecovacs Open Platform are proportional to the purpose. A custom ECOVACS_PORTAL_URL is supported, so users should only set it to a trusted gateway because the AK is sent there.
Persistence & Privilege
The helper can persist the AK in a local home-directory file. This is disclosed and bounded, but users should protect or remove that file if the machine is shared.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ecovacs-skills-pet-control
  3. After installation, invoke the skill by name or use /ecovacs-skills-pet-control
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of Ecovacs Pet (FAMIBOT) control for the Open Platform. - Rename and refocus the skill for FAMIBOT/pet robots, using POST /robot/skill/pet/cmd APIs. - Document device discovery, the pet command allowlist, supported queries/settings, and basic troubleshooting. - Add user guides for access key setup, device matching, HTTP and script-based control. - Add new reference docs: `schema.md` (fields/cmds) and `troubleshooting.md` (error handling); remove internal agent documentation.
Metadata
Slug ecovacs-skills-pet-control
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is ecovacs-skills-pet-control?

Control Ecovacs FAMIBOT (pet) robots via the Open Platform Access Key (AK) and the gateway endpoint POST /robot/skill/pet/cmd, by sending a business cmd plus... It is an AI Agent Skill for Claude Code / OpenClaw, with 47 downloads so far.

How do I install ecovacs-skills-pet-control?

Run "/install ecovacs-skills-pet-control" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is ecovacs-skills-pet-control free?

Yes, ecovacs-skills-pet-control is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does ecovacs-skills-pet-control support?

ecovacs-skills-pet-control is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created ecovacs-skills-pet-control?

It is built and maintained by ecovacs (@ecovacs-ai); the current version is v1.0.0.

💬 Comments