Starling Home Hub (Nest/Google Home)
by @michaeljmoody
Controls Nest and Google Home smart home devices via the Starling Home Hub's local REST API. Supports thermostats, cameras, Nest Protects, Nest Γ Yale locks, temperature sensors, home/away control, and Nest weather service. Use this skill when managing Nest/Google Home devices through Starling Home Hub β reading device status, setting temperatures, getting camera snapshots, locking/unlocking doors, checking smoke/CO alerts, and toggling home/away mode.
clawhub install starling-home-hubπ About This Skill
name: starling-home-hub description: Controls Nest and Google Home smart home devices via the Starling Home Hub's local REST API. Supports thermostats, cameras, Nest Protects, Nest Γ Yale locks, temperature sensors, home/away control, and Nest weather service. Use this skill when managing Nest/Google Home devices through Starling Home Hub β reading device status, setting temperatures, getting camera snapshots, locking/unlocking doors, checking smoke/CO alerts, and toggling home/away mode. homepage: https://starlinghome.io env: - name: STARLING_HUB_IP required: true secret: false description: Local IP address of your Starling Home Hub (e.g. 192.168.1.151) - name: STARLING_API_KEY required: true secret: true description: API key from the Starling Home Hub app (Developer Connect section)
Starling Home Hub (Nest/Google Home)
> Community skill β not affiliated with or endorsed by Starling LLC, Google, Nest, or Apple. Nest is a trademark of Google LLC. Starling Home Hub is a product of Starling LLC. This skill requires a Starling Home Hub with firmware 8.0+ and the Developer Connect API enabled.
Overview
Control Nest smart home devices through the Starling Home Hub Developer Connect (SDC) local REST API using the starling.sh script.
Required Environment Variables
| Variable | Required | Secret | Description |
|----------|----------|--------|-------------|
| STARLING_HUB_IP | Yes | No | Local IP address of your Starling Home Hub (e.g. 192.168.1.151) |
| STARLING_API_KEY | Yes | Yes | API key created in the Starling Home Hub app (Developer Connect section) |
Setup
Set these environment variables (never hardcode keys in scripts):
export STARLING_HUB_IP="192.168.1.xxx"
export STARLING_API_KEY="your-api-key" # From Starling Home Hub app
The script is at: scripts/starling.sh
Options: --http (downgrade to HTTP β not recommended), --raw (skip jq formatting)
HTTPS is the default. The script uses port 3443 unless --http is specified.
Security
API Key Management
STARLING_API_KEY env var β never pass keys via --key (visible in ps output).env file with restricted permissions: chmod 600 .envLeast Privilege
TLS Certificate Verification
curl -k (skip cert verification) because Starling Home Hub uses a self-signed certificatestarling.sh --cacert /path/to/hub-cert.pem status--cacert is provided, -k is not used and full certificate verification appliesAPI Key in URL
?key=...) β this is the API's design, not a skill choiceNetwork Security
Snapshot Handling
chmod 600 (owner-only) automaticallyBest Practices
Always Check Status First
Before making device calls, verify the hub is ready:scripts/starling.sh status
Confirm apiReady: true and connectedToNest: true before proceeding.Respect Rate Limits
These limits are enforced by the Nest cloud:Idempotent Operations
Safe to retry without side effects:Not idempotent: stream-start (creates a new stream each time)
Error Handling
The script provides actionable error messages:Common Workflows
List All Devices
scripts/starling.sh devices
Read Device Properties
scripts/starling.sh device # All properties
scripts/starling.sh get # Single property
Set Device Properties
scripts/starling.sh set key=value [key=value...]
Camera Snapshots
scripts/starling.sh snapshot --output photo.jpg --width 1280
Camera Streaming (WebRTC)
scripts/starling.sh stream-start
scripts/starling.sh stream-extend # Every 60s
scripts/starling.sh stream-stop
Common Tasks
Set thermostat to 22Β°C:
scripts/starling.sh set targetTemperature=22
Set HVAC mode:
scripts/starling.sh set hvacMode=heat
Check for motion on camera:
scripts/starling.sh get motionDetected
Lock/unlock a door:
scripts/starling.sh set targetState=locked
Get camera snapshot:
scripts/starling.sh snapshot --output front-door.jpg
Check smoke/CO status:
scripts/starling.sh get smokeDetected
scripts/starling.sh get coDetected
Set home/away:
scripts/starling.sh set homeState=away
API Reference
See references/api-reference.md for full device property details, writable properties, error codes, and endpoint documentation.
βοΈ Configuration
Set these environment variables (never hardcode keys in scripts):
export STARLING_HUB_IP="192.168.1.xxx"
export STARLING_API_KEY="your-api-key" # From Starling Home Hub app
The script is at: scripts/starling.sh
Options: --http (downgrade to HTTP β not recommended), --raw (skip jq formatting)
HTTPS is the default. The script uses port 3443 unless --http is specified.
π Tips & Best Practices
Always Check Status First
Before making device calls, verify the hub is ready:scripts/starling.sh status
Confirm apiReady: true and connectedToNest: true before proceeding.Respect Rate Limits
These limits are enforced by the Nest cloud:Idempotent Operations
Safe to retry without side effects:Not idempotent: stream-start (creates a new stream each time)