Aqara Agent
aqara-agent is an official AI Agent skill built on Aqara Home. It supports natural-language login/session setup, home-space management, device inquiry, devic...
Like a lobster shell, security has layers — review code before you run it.
License
SKILL.md
Aqara Smart Home AI Agent Skill
Basics
- Aqara Open Host (default):
agent.aqara.com(override viaAQARA_OPEN_HOST) - Skill root:
skills/aqara-agent/(in-repo skill) - Python wrapper for the Aqara Open API:
scripts/aqara_open_api.py- calls the API surface directly.
Core workflow
High-level order: deps -> sign-in -> pick home -> intent -> follow references/*.md and summarize.
Ground truth: no fabricated smart-home data
Large models may hallucinate plausible homes, rooms, devices, states, or counts. For this skill, that is explicitly forbidden:
- Sources of truth only: Homes, rooms, device names/IDs (for internal use), capabilities, live attributes (temperature, brightness, switch state, online/offline, etc.), lists, counts, logs, and control outcomes must come only from executed skill scripts and real Aqara API responses - or from user-supplied input the skill is designed to accept (e.g. pasted
aqara_api_key). If the corresponding inquiry or control flow has not been run successfully, do not present any of that information as factual. - Never invent or "plausible-fill": Example or demo-style device/home lists; guessed room layouts; assumed device counts; synthetic attribute values; fabricated success after errors, timeouts, skipped steps, or missing auth; JSON or prose that mimics API output without a real response.
- When data is missing: State clearly that it could not be retrieved (and why, e.g. not signed in, API error), then follow auth/retry/
references/- never substitute imagined content to make the answer feel complete.
Align with usage and core workflow above; implement in order:
-
Environment
- Set environment host first (single-switch for test/prod):
export AQARA_OPEN_HOST=agent.aqara.com- Install dependencies before use:
cd skills/aqara-agent pip install -r scripts/requirements.txt -
Auth - Before any feature, verify Aqara account auth and ensure
user_account.jsonis readable/writable (project rules may require reading it first). Followreferences/aqara-account-manage.mdfor switch-home vs re-login, token save, and Step 1: Login Guidance. Locale strings anddefault_login_urllive inassets/login_reply_prompt.json- match the user's language; fallback toenwhen unknown (fallback_locale/default_localein that file). Login is satisfied by the single-line URL; showingassets/login_qr.pngis optional when the file exists and the client can render images.qr_fallback_lineand the full order are in that reference.user_account.jsonshape:{ "aqara_api_key": "", "updated_at": "", "home_id": "", "home_name": "" } -
Home management
- After
aqara_api_keyis saved, automatically followreferences/home-space-manage.mdto fetch the home list and finalize selection: run that doc's step 0 immediately; if there is a single home, write it; if multiple, ask the user to pick by index/name. Do not end with only "please reply with a home name" without running the fetch. - When the agent/terminal runs scripts:
save_user_account.py(write token) andaqara_open_api.py homes(fetch homes) must be two separate runs - do not chain with&&in one shell line; seereferences/aqara-account-manage.mdstep 2 andreferences/home-space-manage.mdstep 0. - Switching homes: by default only re-fetch the home list and let the user choose (see
references/home-space-manage.md); do not default to re-login. Only if the user clearly asks to re-login/rotate the token, or the API indicates an expired/unauthorized token, followreferences/aqara-account-manage.mdfor login.
- After
-
Intent
- Space / device query / device control / scene. For multiple intents query first, then control, following clause order in the utterance.
Intent Capability Reference Space List all homes; list rooms in a home references/home-space-manage.mdDevice query Filter by home/room; device details (incl. current attributes) references/devices-inquiry.mdDevice control Control hardware in the home references/devices-control.mdScene List and execute scenes references/scene-manage.md -
Route to the matching
references/doc, execute, and summarize.- Summarize from real outcomes only; never fabricate success or any homes, rooms, devices, attributes, counts, or states that are not grounded in actual script/API output (see Ground truth: no fabricated smart-home data above).
Illustrative CLI JSON (for agents only; do not paste raw blocks to users)
REST response shape (illustrative) — aqara_open_api.py prints JSON returned by the Open Platform; field names match the live endpoint (example skeleton only):
{
"code": 0,
"message": "",
"data": {}
}
On bad params or JSON parse errors (illustrative) —
{
"ok": false,
"error": "..."
}
Error handling
| Situation | Action |
|---|---|
| Device not found | Say no match for "X"; optionally list a few candidate names |
| Capability not supported | State the unsupported action/attribute; do not pretend success |
| Home/room not found | Say no hit; suggest checking the home or re-fetching space/device lists per references/ |
| Multiple devices match | List matches; ask the user to pick room or full name (one question at a time) |
Not signed in / no aqara_api_key | Guide login and saving aqara_api_key, then continue with home fetch. Scripts raise MissingAqaraApiKeyError from load_api_key() when the saved key is empty; route to references/aqara-account-manage.md |
| No home selected | Clarify proactively; point to space-management flow. CLI: missing home_id triggers homes/query; one home auto-writes user_account.json; multiple homes exit with home_selection_required (see references/home-space-manage.md) |
Invalid aqara_api_key or auth failure | Ask to re-login or refresh the token (no sensitive leakage). On home switch, only treat as auth failure if the home list call fails with an auth-class error - do not require login just because the user said "switch home". If the platform returns unauthorized or insufficient permissions (or equivalent), always follow references/aqara-account-manage.md to re-login and save the token; never fake query/control success |
| Control path unavailable | Say the device was located but the command could not be sent |
| Other | Short, understandable summary + retry or check references/; do not expose internal URLs or full request headers |
| Indeterminate | Use references/ and script output; if it's a skill bug, file an issue in the skill repo |
| Risk of empty/missing API output | Do not invent homes, rooms, devices, or readings to fill the gap; re-run the correct flow or explain the failure - see Ground truth: no fabricated smart-home data |
Notes
- Do not expose raw IDs in user-facing replies (device id, position id, home_id, ...).
- Default query before control for multiple intents in one utterance.
- After adding/moving devices or rooms, if matching fails, re-fetch space and device lists via
references/home-space-manage.mdandreferences/devices-inquiry.md, then retry. - User-visible replies: conclusion first, then detail; one key clarification question at a time.
- Session gate first: if not signed in, the "conclusion" should guide setup - not pretend devices were controlled.
- When
scripts/*.pymust run, execute automatically; details follow mandatory script execution policy (if defined elsewhere). - After switching account or home, update
user_account.jsonand re-run the relevant steps inaqara-account-manage.md. - Do not echo tokens or full headers; treat
user_account.jsonand caches as sensitive. - Device name matching is often fuzzy; ask the user to confirm when multiple hits exist.
- In user-visible replies, do not print shell commands, script paths, raw stdout (incl. debug JSON), or
references/filenames; the agent runs scripts; summarize in plain language. - When control APIs return success, keep the closing brief (result + essentials only); do not add hedging like "if some lights didn't turn on, tell me" - troubleshoot only when the user reports an issue.
- Anti-hallucination: Treat Ground truth: no fabricated smart-home data as binding for every turn; any user-visible home/room/device/state detail must trace to a real run of this skill's tooling, not to model imagination or general knowledge of "typical" smart homes.
- Never invent homes, rooms, devices, scenes, or states: only report data from executed scripts/API responses.
Out of scope
The skill does not support:
- Video / cameras - live view, playback
- Door locks - unlock, lock/unlock smart locks (security-sensitive)
- Automations (home automation) - listing, creating, editing, enabling, disabling, or manually triggering; use the Aqara Home app.
- Energy - power usage / billing
- Weather - forecasts
If asked for an unsupported capability, say clearly that the skill cannot do it and suggest the Aqara Home app.
Files
15 totalComments
Loading comments…
