# Send Nest SDM to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nest-sdm",
    "name": "Nest SDM",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/tag-assistant/nest-sdm",
    "canonicalUrl": "https://clawhub.ai/tag-assistant/nest-sdm",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/nest-sdm",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nest-sdm",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "nest-events.sh",
      "nest-sdm.sh"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "nest-sdm",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T01:47:06.984Z",
      "expiresAt": "2026-05-13T01:47:06.984Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nest-sdm",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nest-sdm",
        "contentDisposition": "attachment; filename=\"nest-sdm-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "nest-sdm"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nest-sdm"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nest-sdm",
    "downloadUrl": "https://openagent3.xyz/downloads/nest-sdm",
    "agentUrl": "https://openagent3.xyz/skills/nest-sdm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nest-sdm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nest-sdm/agent.md"
  }
}
```
## Documentation

### Nest SDM Skill

Control and monitor Google Nest devices via the Smart Device Management REST API.

### Prerequisites

Device Access Console — Register at https://console.nest.google.com/device-access ($5 one-time fee)
GCP Project — Create at https://console.cloud.google.com with SDM API enabled
OAuth Client — Web application type with https://www.google.com as redirect URI
SDM scope — Add https://www.googleapis.com/auth/sdm.service to OAuth consent screen

### First-time Authorization

Build the authorization URL:

https://nestservices.google.com/partnerconnections/<PROJECT_ID>/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=<CLIENT_ID>&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

Open in browser, sign in as the device owner Google account
Enable ALL device permissions, click Next, then Continue through consent
Copy the code= parameter from the redirect URL
Exchange for tokens:

curl -s -X POST https://oauth2.googleapis.com/token \\
  -d "client_id=<CLIENT_ID>" \\
  -d "client_secret=<CLIENT_SECRET>" \\
  -d "code=<AUTH_CODE>" \\
  -d "grant_type=authorization_code" \\
  -d "redirect_uri=https://www.google.com"

Save tokens to the config file (see Configuration below)

### Configuration

Create ~/.openclaw/workspace/.nest-sdm-tokens.json:

{
  "client_id": "<your-client-id>",
  "client_secret": "<your-client-secret>",
  "project_id": "<device-access-project-id>",
  "refresh_token": "<your-refresh-token>",
  "token_type": "Bearer",
  "scope": "https://www.googleapis.com/auth/sdm.service"
}

Secure it: chmod 600 ~/.openclaw/workspace/.nest-sdm-tokens.json

### CLI Usage

# Alias for convenience
alias nest="<skill-dir>/nest-sdm.sh"

### Device Discovery

nest devices                    # List all devices (JSON)
nest structures                 # List structures/rooms

### Thermostat

nest thermostat                 # Current status (temp, humidity, mode, setpoints)
nest set-cool <°F>              # Set to COOL mode at temperature
nest set-heat <°F>              # Set to HEAT mode at temperature
nest set-range <low°F> <high°F> # Set HEATCOOL range
nest set-mode <MODE>            # HEAT | COOL | HEATCOOL | OFF
nest set-eco <MODE>             # MANUAL_ECO | OFF
nest fan-on [duration_seconds]  # Turn fan on (default: 900s / 15min)
nest fan-off                    # Turn fan off

### Doorbell & Cameras

nest doorbell                   # Doorbell info & capabilities
nest display                    # Kitchen display info
nest camera-stream <DEVICE_ID>  # Generate WebRTC live stream (returns SDP answer)
nest camera-image <EVENT_ID>    # Get event snapshot URL

### Raw API

nest api GET devices                              # Raw device list
nest api GET devices/<DEVICE_ID>                  # Single device
nest api POST devices/<DEVICE_ID>:executeCommand '{"command":"...","params":{...}}'

### Supported Devices

TypeTraitsControlTHERMOSTATTemperature, Humidity, Mode, Eco, Fan, HVAC, Setpoint, ConnectivityFull read/writeDOORBELLLiveStream, CameraImage, Person, Motion, Chime, EventImage, ClipPreviewRead + streamDISPLAYLiveStream, CameraImage, Person, Sound, Motion, EventImageRead + stream

### Thermostat Commands

CommandParamsThermostatMode.SetMode{"mode": "HEAT|COOL|HEATCOOL|OFF"}ThermostatTemperatureSetpoint.SetHeat{"heatCelsius": <float>}ThermostatTemperatureSetpoint.SetCool{"coolCelsius": <float>}ThermostatTemperatureSetpoint.SetRange{"heatCelsius": <float>, "coolCelsius": <float>}ThermostatEco.SetMode{"mode": "MANUAL_ECO|OFF"}Fan.SetTimer{"timerMode": "ON", "duration": "<seconds>s"}

### Camera Commands

CommandParamsCameraLiveStream.GenerateWebRtcStream{"offerSdp": "<SDP offer>"}CameraLiveStream.StopWebRtcStream{"mediaSessionId": "<id>"}CameraLiveStream.ExtendWebRtcStream{"mediaSessionId": "<id>"}CameraEventImage.GenerateImage{"eventId": "<event-id>"}

### Pub/Sub Real-Time Events

Get instant alerts for doorbell presses, motion, person detection, and device state changes.

### CLI: nest-events

nest-events setup-check         # Verify Pub/Sub config is ready
nest-events create-topic        # Create GCP Pub/Sub topic
nest-events grant-permissions   # Grant SDM publisher role
nest-events create-subscription # Create pull subscription
nest-events poll                # Pull events once
nest-events listen              # Poll continuously (daemon)

### Setup Steps

OAuth with Pub/Sub scope — Run OAuth flow as your-email@example.com with pubsub + cloud-platform scopes. Save tokens to .nest-pubsub-tokens.json.
Create topic — nest-events create-topic (creates projects/YOUR_GCP_PROJECT/topics/nest-sdm-events)
Grant permissions — nest-events grant-permissions (adds sdm-publisher@googlegroups.com)
Create subscription — nest-events create-subscription
Enable in Device Access Console — https://console.nest.google.com/device-access → Enable Pub/Sub → Enter topic ID
Trigger initial events — nest devices (one-time API call)
Start listener — nest-events listen

### Event Types Supported

EventAlertDoorbellChime.Chime🔔 DOORBELL — Someone rang!CameraPerson.Person👤 Person detected at deviceCameraMotion.Motion🏃 Motion at deviceCameraSound.Sound🔊 Sound at deviceThermostatHvac status change❄️/🔥 HVAC now COOLING/HEATINGThermostatTemperatureSetpoint🌡️ Setpoint changedTemperature trait🌡️ Ambient temperature change

### Configuration

Environment Variables:

VariableDescriptionDefaultNEST_PUBSUB_TOKENSPath to Pub/Sub OAuth tokens~/.openclaw/workspace/.nest-pubsub-tokens.jsonTELEGRAM_BOT_TOKENBot token for alertsfrom ~/.zshenvTELEGRAM_CHAT_IDUser/chat ID for alertsfrom ~/.zshenvPOLL_INTERVALSeconds between polls10GCP_PROJECTGCP project IDYOUR_GCP_PROJECTPUBSUB_TOPICTopic namenest-sdm-eventsPUBSUB_SUBSCRIPTIONSubscription namenest-sdm-events-sub

### Event Logs

Raw events are logged to data/nest-events/events-YYYY-MM-DD.jsonl.

### Alert Dedup

Same event type won't re-alert within 60 seconds to prevent alert fatigue.

### Important Notes

Token expiry: If the GCP app is in "testing" mode, refresh tokens expire in 7 days. Publish the app to avoid re-auth.
Temperature: API uses Celsius internally. The CLI handles F↔C conversion.
Setpoint constraints: HEATCOOL range must have at least 1.5°C (2.7°F) gap between heat and cool setpoints.
Camera streams: WebRTC only (no RTSP). Requires SDP offer/answer exchange.
Rate limits: 10 queries/min per device, 10 commands/min per device.
Events: Use nest-events listen for real-time alerts. Requires Pub/Sub setup (see above).
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: tag-assistant
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-06T01:47:06.984Z
- Expires at: 2026-05-13T01:47:06.984Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/nest-sdm)
- [Send to Agent page](https://openagent3.xyz/skills/nest-sdm/agent)
- [JSON manifest](https://openagent3.xyz/skills/nest-sdm/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/nest-sdm/agent.md)
- [Download page](https://openagent3.xyz/downloads/nest-sdm)