Google Home / Nest CLI
Control Google Nest devices via the Smart Device Management (SDM) API using curl + jq.
Setup (Required)
- •
Create a Google Cloud Project
- •Go to https://console.cloud.google.com
- •Create a new project
- •
Enable the SDM API
- •APIs & Services → Library
- •Search "Smart Device Management"
- •Enable it
- •
Create OAuth Credentials
- •APIs & Services → Credentials
- •Create OAuth 2.0 Client ID
- •Download the JSON file
- •Extract
client_idandclient_secret
- •
Register Your Devices
- •Visit https://nests.google.com/frame/register-user
- •Accept the terms
- •
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