Google Home/Nest
by @mitchellbernstein
Control Google Nest thermostats, cameras, and doorbells via Google Smart Device Management API using curl and jq commands.
clawhub install google-homeπ About This Skill
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
# 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
# List devices
google-home-cli devicesGet thermostat info
google-home-cli thermostat "Living Room" --infoSet temperature (heat/cool/auto)
google-home-cli thermostat "Living Room" --temp 72Query camera
google-home-cli camera "Front Door" --status
Device Commands
Thermostats
google-home-cli thermostat β show current temp/humidity--temp β set target temperature--mode heat|cool|auto β set HVAC mode--fan on|auto β control fanCameras & Doorbells
google-home-cli camera β get stream/status--snapshot β download current image--stream β start live stream URLSpeakers & Displays
google-home-cli speaker β device info--volume 0-100 β set volume--stop β stop playbackEnvironment Variables
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
# 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:
# Make it available globally
ln -sf /Users/mitchellbernstein/clawd/skills/google-home/scripts/nest /usr/local/bin/nestList devices
nest listGet thermostat status
nest status "enterprises/PROJECT_ID/devices/DEVICE_ID"Set temperature (Celsius)
nest temp "enterprises/PROJECT_ID/devices/DEVICE_ID" 22Set mode
nest mode "enterprises/PROJECT_ID/devices/DEVICE_ID" HEAT
Configuration
Create ~/.config/google-home/config.json:
{
"project_id": "your-google-cloud-project-id",
"access_token": "your-oauth-access-token"
}
Notes
enterprises/PROJECT_ID/devices/DEVICE_IDπ‘ Examples
# List devices
google-home-cli devicesGet thermostat info
google-home-cli thermostat "Living Room" --infoSet temperature (heat/cool/auto)
google-home-cli thermostat "Living Room" --temp 72Query camera
google-home-cli camera "Front Door" --status
βοΈ Configuration
Create ~/.config/google-home/config.json:
{
"project_id": "your-google-cloud-project-id",
"access_token": "your-oauth-access-token"
}
π Tips & Best Practices
enterprises/PROJECT_ID/devices/DEVICE_ID