Introduction
# 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