SkillHub

google-home

v1.0.0

Control Google Nest devices (thermostats, cameras, doorbells) via the Google Smart Device Management API using curl and jq.

Sourced from ClawHub, Authored by mitchellbernstein

Installation

Please help me install the skill `google-home` from SkillHub official store. npx skills add mitchellbernstein/google-home

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
  2. Go to https://console.cloud.google.com
  3. Create a new project

  4. Enable the SDM API

  5. APIs & Services → Library
  6. Search "Smart Device Management"
  7. Enable it

  8. Create OAuth Credentials

  9. APIs & Services → Credentials
  10. Create OAuth 2.0 Client ID
  11. Download the JSON file
  12. Extract client_id and client_secret

  13. Register Your Devices

  14. Visit https://nests.google.com/frame/register-user
  15. Accept the terms

  16. 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

# 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

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/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:

{
  "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