openclaw/skills/nest-thermostat/SKILL.md
Control Nest thermostats, check home climate status, view temperature history, check outdoor weather, and capture camera snapshots. Use when asked about home temperature, thermostat settings, heating, cooling, room climate, temperature history/trends, outdoor weather, or camera/what does the kitchen look like.
npx skillsauth add Dbochman/dotfiles nest-thermostatInstall 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 Google Nest thermostats and cameras via the nest CLI. All credentials are managed via 1Password.
nest status
Returns outdoor weather conditions plus room name, current temperature, setpoint, mode, HVAC status, and humidity for each thermostat.
nest weather
nest set <room> <temp>
Example: nest set bedroom 72
nest mode <room> <HEAT|OFF>
Example: nest mode solarium off
nest eco <room> on
nest eco <room> off
nest camera snap [room] [output_path]
Examples:
nest camera snap — Kitchen camera, saves to ~/.openclaw/workspace/camera-snap.jpgnest camera snap kitchen /tmp/snap.jpg — Kitchen camera, custom output pathThe output path is printed to stdout. The image can be viewed by the agent (Claude is multimodal). Note: Camera must be online and streaming enabled. Takes ~5-10 seconds.
nest snapshot
Records current state of all thermostats + outdoor weather to ~/.openclaw/nest-history/YYYY-MM-DD.jsonl. This runs automatically every 30 minutes via cron.
nest history [hours] [room]
Examples:
nest history — last 24 hours, all roomsnest history 48 — last 48 hours, all roomsnest history 24 bedroom — last 24 hours, bedroom onlyShows indoor/outdoor min/max/avg temperature, humidity, setpoints, HVAC heating percentage, and indoor-outdoor delta.
nest raw
There are two homes. Rooms are prefixed with home name in the Nest API.
Room names are fuzzy-matched — use any substring. "crosstown" matches the Crosstown thermostat, "solar" matches Philly Solarium, etc.
Disambiguation: When the user says "living room" without context, it's ambiguous — ask which home. Use "philly living" for Cabin or "crosstown" for Crosstown. Unique rooms (solarium, cat room) are unambiguous.
nest status first to show the user current state before making changes~/.openclaw/nest-history/nest history when the user asks about temperature trends, overnight temperatures, or how long the heat was runningNEST_LOCATIONS in ~/.openclaw/nest-location.confnest weather and nest status show weather for each structure (Philly + 19Crosstown){"Philly": {...}, "19Crosstown": {...}} — old single-location snapshots still render fineaiortc and Pillow Python packages.nest camera snap and then view the imageThe Google OAuth refresh token has been revoked. Common causes:
Re-auth flow:
clientID, client_secret, project_idhttps://nestservices.google.com/partnerconnections/<PROJECT_ID>/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=<CLIENT_ID>&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
code= parameter from the redirect URLcurl -s -X POST "https://www.googleapis.com/oauth2/v4/token" \
-d "client_id=<CLIENT_ID>" \
-d "client_secret=<CLIENT_SECRET>" \
-d "code=<AUTH_CODE>" \
-d "grant_type=authorization_code" \
-d "redirect_uri=https://www.google.com"
refresh_token in 1Passwordrm -rf ~/.cache/nest-sdm/mkdir -p ~/.cache/nest-sdm
echo -n '<REFRESH_TOKEN>' > ~/.cache/nest-sdm/refresh_token
echo -n '<CLIENT_ID>' > ~/.cache/nest-sdm/clientid
echo -n '<CLIENT_SECRET>' > ~/.cache/nest-sdm/client_secret
echo -n '<PROJECT_ID>' > ~/.cache/nest-sdm/project_id
The OAuth consent screen is blocking auth. Check:
Mac Mini 1Password requires biometric unlock which can't be triggered over SSH. Workaround: write credentials directly to ~/.cache/nest-sdm/ cache files (see re-auth flow above). The nest CLI reads from cache first before hitting 1Password.
development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".