openclaw/skills/cielo-ac/SKILL.md
Control Mr Cool / Cielo Home minisplit AC units. Use when asked about AC, air conditioning, minisplit, heating, cooling, room temperature, thermostat (for minisplits specifically), turning heat on/off, setting temperature on a minisplit, fan speed, or swing position.
npx skillsauth add Dbochman/dotfiles cielo-acInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Control Mr Cool minisplit AC units via the Cielo Home API. The cielo CLI is on PATH (wrapper at ~/.openclaw/bin/cielo).
| Name | MAC | Location | |------|-----|----------| | Basement | B48A0ACEC6CC | Basement | | Living Room | B48A0ACEC8B4 | Living room | | Dylan's Office | B48A0AC4612D | Office | | Bedroom | B48A0ACEC639 | Bedroom |
Device names are fuzzy-matched — use any substring. "bedroom" matches Bedroom, "office" matches Dylan's Office, "living" matches Living Room, etc.
cielo status
Returns device name, online status, power, mode, temperature setpoint, fan speed, swing position, room temperature, and humidity for each unit.
cielo status -d bedroom
cielo devices
cielo on -d bedroom
cielo off -d "living room"
To reliably turn on a unit and set its temperature, use separate commands — do NOT use set --power on as it updates the API state but often fails to send the IR signal to the physical unit:
cielo on -d bedroom
cielo temp 72 -d bedroom
cielo temp 72 -d bedroom
If the unit is off, this will turn it on automatically.
cielo mode heat -d bedroom
cielo mode cool -d office
Valid modes: cool, heat, auto, dry, fan
cielo fan high -d bedroom
Valid speeds: auto, low, medium, high
cielo swing auto -d bedroom
Valid positions: auto, auto/stop, adjust, pos1, pos2, pos3, pos4, pos5, pos6
cielo set -d bedroom --temp 68 --mode heat --fan low --swing auto
All flags are optional — only include what you want to change. Available flags: --temp, --mode, --fan, --swing, --power
WARNING: set --power on is unreliable — it updates the cloud state but often does not send the IR signal. Use the explicit on command instead, then set for other parameters.
cielo status --json
cielo status -d bedroom --json
cielo devices --json
Tokens expire approximately every hour. A LaunchAgent (com.openclaw.cielo-refresh) runs every 30 minutes. It first uses the stored refresh token, then falls back to CDP capture in an isolated PinchTab tab when the API refresh is unavailable.
The LaunchAgent at ~/Library/LaunchAgents/com.openclaw.cielo-refresh.plist uses the dedicated PinchTab cielo profile at ~/.pinchtab/profiles/cielo/. Browser fallback starts or reuses a managed headless instance, opens an isolated Cielo tab, captures a fresh token through Chrome DevTools Protocol, verifies it, and cleans up only the tab and instance it created. It refuses to navigate a visible PinchTab instance. Logs are at ~/.openclaw/logs/cielo-refresh.log.
If the persistent browser session expires, reCAPTCHA prevents a fully headless login. Wait until the Mac Mini is not being used for viewing, keep the Cielo LaunchAgent unloaded, and perform a one-time visible login:
INSTANCE_ID=$(pinchtab instance start --profile cielo --mode headed \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pinchtab instance navigate "$INSTANCE_ID" "https://home.cielowigle.com/"
# Sign in manually in the visible browser and solve reCAPTCHA.
pinchtab instance stop "$INSTANCE_ID"
~/.openclaw/workspace/scripts/cielo-refresh.sh
The final command restarts the profile headlessly, captures and verifies a token, then stops its temporary browser instance. Do not enable repeated headless credential login after a CAPTCHA failure; it will not solve the challenge and may trigger rate limiting.
When an agent coordinates the visible login, it must start grab-cielo-tokens.py --passive before the form is submitted. Set CIELO_CAPTURE_TIMEOUT_SECONDS=600 to keep that listener armed while the user completes reCAPTCHA. The login response contains the new refresh token; a capture started only after login can recover an access token but misses that refresh token.
cielo setup
Then paste the accessToken and sessionId from browser DevTools.
These are minisplit AC units, not the Nest thermostats. When the user asks about:
The Nest thermostats control central HVAC. The Cielo minisplits are supplemental heating/cooling in specific rooms.
status first to show the user current state before making changesset command with --temp will automatically turn the unit on if it's offset --power on is unreliable — use explicit on command then temp/mode/etc. separatelyon -d <name> → temp <F> -d <name> → mode <mode> -d <name>tools
Use exact configured Reolink cameras through the local Home Hub for availability and power status, fresh stills, visual commentary, protected Dylan/Julia/household sharing, and reversible spotlight control. Supports trusted owner tasks and explicitly scoped proactive automations; not for Nest or Ring cameras, arbitrary recipients, recordings, account changes, or raw camera APIs.
data-ai
Privately manage Dylan and Julia's household plant inventory and care history by physical location, bed, and exact Flower Cam view. Use for confirmed plant onboarding from camera conversations, camera- or bed-filtered inventory, record corrections, individual or whole-bed care, and private filtered exports. Pair with reolink-camera when an owner asks about plants visible in Flower Cam images.
testing
Inspect and control the physically secured Reachy Mini at Crosstown through ClawBody. Use for requests to check Reachy, look around, express an emotion, play any official emotion or dance preset, speak proactively, mute or unmute its microphone, stop movement, or describe what its camera sees.
tools
Handle Reachy/iMessage handoffs, selective durable memory, forgetting, and diagnostics; automatic context comes from the gateway plugin.