Control Google Nest devices (thermostats, cameras, doorbells) via the Google Smart Device Management API using curl and jq.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add sundial-org/awesome-openclaw-skills --skill google-home --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Google Home?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sundial-org-google-home)More formats (shields.io, HTML) on the badges page.
---
name: google-home
description: Control Google Nest devices (thermostats, cameras, doorbells) via the Google Smart Device Management API using curl and jq.
metadata: {"clawdbot":{"emoji":"🏠","requires":{"bins":["curl","jq"]}}
---
# Google Home / Nest CLI
Control Google Nest devices via the Smart Device Management (SDM) API using curl + jq.
## Setup (Required)
1. **Create a Google Cloud Project**
- Go to https://console.cloud.google.com
- Create a new project
2. **Enable the SDM API**
- APIs & Services → Library
- Search "Smart Device Management"
- Enable it
3. **Create OAuth Credentials**
- APIs & Services → Credentials
- Create OAuth 2.0 Client ID
- Download the JSON file
- Extract `client_id` and `client_secret`
4. **Register Your Devices**
- Visit https://nests.google.com/frame/register-user
- Accept the terms
5. **Get Access Token**
```bash
# Replace with your values
curl -s \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "refresh_token=YOUR_REFRESH_TOKEN" \
-d "grant_type=refresh_token" \
https://www.googleapis.com/oauth2/v4/token
```
## Quick Start
```bash
# List devices
google-home-cli devices
# Get thermostat info
google-home-cli thermostat "Living Room" --info
# Set temperature (heat/cool/auto)
google-home-cli thermostat "Living Room" --temp 72
# Query camera
google-home-cli camera "Front Door" --status
```
## Device Commands
### Thermostats
- `google-home-cli thermostat <name>` — show current temp/humidity
- `--temp <degrees>` — set target temperature
- `--mode heat|cool|auto` — set HVAC mode
- `--fan on|auto` — control fan
### Cameras & Doorbells
- `google-home-cli camera <name>` — get stream/status
- `--snapshot` — download current image
- `--stream` — start live stream URL
### Speakers & Displays
- `google-home-cli speaker <name>` — device info
- `--volume 0-100` — set volume
- `--stop` — stop playback
## Environment Variables
```bash
export GOOGLE_HOME_CLIENT_ID="your-client-id"
export GOOGLE_HOME_CLIENT_SECRET="your-client-secret"
export GOOGLE_HOME_ACCESS_TOKEN="your-access-token"
```
## Alternative: Direct API Calls
```bash
# List all devices
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://smartdevicemanagement.googleapis.com/v1/enterprises/YOUR_PROJECT_ID/devices"
# Get device traits
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://smartdevicemanagement.googleapis.com/v1/enterprises/YOUR_PROJECT_ID/devices/YOUR_DEVICE_ID"
```
## Helper Script
A `nest` CLI helper is included at `scripts/nest`:
```bash
# Make it available globally
ln -sf /Users/mitchellbernstein/clawd/skills/google-home/scripts/nest /usr/local/bin/nest
# List devices
nest list
# Get thermostat status
nest status "enterprises/PROJECT_ID/devices/DEVICE_ID"
# Set temperature (Celsius)
nest temp "enterprises/PROJECT_ID/devices/DEVICE_ID" 22
# Set mode
nest mode "enterprises/PROJECT_ID/devices/DEVICE_ID" HEAT
```
## Configuration
Create `~/.config/google-home/config.json`:
```json
{
"project_id": "your-google-cloud-project-id",
"access_token": "your-oauth-access-token"
}
```
## Notes
- Tokens expire; refresh them periodically
- Device names use full path: `enterprises/PROJECT_ID/devices/DEVICE_ID`
- Temperature is in Celsius (convert from Fahrenheit if needed)
- Camera streams require additional permissions
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!