通过 Google 智能设备管理(SDM)API 控制 Nest 恒温器、门铃和摄像头。
SDM Speech. 通过智能设备管理 REST API. 控制并监控 Google Nest 设备.
功能概述
SDM Speech. 通过智能设备管理 REST API. 控制并监控 Google Nest 设备.是一项面向实际任务的技能,主要用于Setup.;Prerequists.;
核心要点
- Device Access Console - Register at https://console.nest.google.com/device-ac。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Nest SDM 技能
通过 Smart Device Management(SDM)REST API 控制和监控 Google Nest 设备。
配置
前提条件
- Device Access Console — 在 https://console.nest.google.com/device-access 注册(一次性费用 $5)
- GCP 项目 — 在 https://console.cloud.google.com 创建,并启用 SDM API
- OAuth 客户端 — 类型为 Web 应用程序,重定向 URI 设为
https://www.google.com - SDM 权限范围(scope) — 在 OAuth 同意屏幕中添加
https://www.googleapis.com/auth/sdm.service
首次授权
- 构建授权 URL:
https://nestservices.google.com/partnerconnections//auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id= &response_type=code&scope=https://www.googleapis.com/auth/sdm.service
- 在浏览器中打开该链接,并使用设备所有者的 Google 账户登录
- 启用全部设备权限,点击“下一步”,然后继续完成授权流程
- 从重定向 URL 中复制
code=参数值 - 换取访问令牌:
curl -s -X POST https://oauth2.googleapis.com/token -d "client_id=" -d "client_secret= " -d "code= " -d "grant_type=authorization_code" -d "redirect_uri=https://www.google.com"
- 将获取到的令牌保存至配置文件(参见下方“配置”章节)
配置
创建 ~/.openclaw/workspace/.nest-sdm-tokens.json:
{
"client_id": "",
"client_secret": "",
"project_id": "",
"refresh_token": "",
"token_type": "Bearer",
"scope": "https://www.googleapis.com/auth/sdm.service"
}
设置安全权限:chmod 600 ~/.openclaw/workspace/.nest-sdm-tokens.json
CLI 使用方法
# 为方便使用,可设置别名 alias nest="/nest-sdm.sh"
设备发现
nest devices # 列出所有设备(JSON 格式) nest structures # 列出结构/房间
恒温器(Thermostat)
nest thermostat # 当前状态(温度、湿度、模式、设定值) nest set-cool <°F> # 切换至 COOL 模式并设定目标温度 nest set-heat <°F> # 切换至 HEAT 模式并设定目标温度 nest set-range# 设定 HEATCOOL 模式下的温度区间 nest set-mode # 可选:HEAT | COOL | HEATCOOL | OFF nest set-eco # 可选:MANUAL_ECO | OFF nest fan-on [duration_seconds] # 开启风扇(默认时长:900 秒 / 15 分钟) nest fan-off # 关闭风扇
门铃(Doorbell)与摄像头(Cameras)
nest doorbell # 门铃信息及支持能力 nest display # 厨房显示屏信息 nest camera-stream# 生成 WebRTC 实时视频流(返回 SDP answer) nest camera-image # 获取事件快照 URL
原始 API 调用
nest api GET devices # 原始设备列表 nest api GET devices/# 单个设备详情 nest api POST devices/ :executeCommand '{"command":"...","params":{...}}'
支持的设备类型
| 类型 | 特性(Traits) | 控制能力 |
|---|---|---|
| THERMOSTAT | Temperature、Humidity、Mode、Eco、Fan、HVAC、Setpoint、Connectivity | 完全读写支持 |
| DOORBELL | LiveStream、CameraImage、Person、Motion、Chime、EventImage、ClipPreview | 仅读取 + 流媒体支持 |
| DISPLAY | LiveStream、CameraImage、Person、Sound、Motion、EventImage | 仅读取 + 流媒体支持 |
SDM API 命令参考
恒温器命令
| 命令 | 参数 |
|---|---|
ThermostatMode.SetMode |
{"mode": "HEAT|COOL|HEATCOOL|OFF"} |
ThermostatTemperatureSetpoint.SetHeat |
{"heatCelsius": |
ThermostatTemperatureSetpoint.SetCool |
{"coolCelsius": |
ThermostatTemperatureSetpoint.SetRange |
{"heatCelsius": |
ThermostatEco.SetMode |
{"mode": "MANUAL_ECO|OFF"} |
Fan.SetTimer |
{"timerMode": "ON", "duration": " |
摄像头命令
| 命令 | 参数 |
|---|---|
CameraLiveStream.GenerateWebRtcStream |
{"offerSdp": " |
CameraLiveStream.StopWebRtcStream |
{"mediaSessionId": " |
CameraLiveStream.ExtendWebRtcStream |
{"mediaSessionId": " |
CameraEventImage.GenerateImage |
{"eventId": " |
Pub/Sub 实时事件
实时接收门铃触发、移动侦测、人物识别以及设备状态变更等事件通知。
CLI 工具:nest-events
nest-events setup-check # 验证 Pub/Sub 配置是否就绪 nest-events create-topic # 创建 GCP Pub/Sub 主题 nest-events grant-permissions # 授予 SDM 发布者角色 nest-events create-subscription # 创建拉取订阅(pull subscription) nest-events poll # 一次性拉取事件 nest-events listen # 持续轮询(守护进程模式)
配置步骤
- 带 Pub/Sub 权限范围的 OAuth 授权 — 使用 your-email@example.com 执行 OAuth 流程,权限范围需包含
pubsub和cloud-platform;将令牌保存至.nest-pubsub-tokens.json。 - 创建主题 — 运行
nest-events create-topic(将创建projects/YOUR_GCP_PROJECT/topics/nest-sdm-events) - 授予发布权限 — 运行
nest-events grant-permissions(向sdm-publisher@googlegroups.com授予角色) - 创建订阅 — 运行
nest-events create-subscription - 在 Device Access Console 中启用 Pub/Sub — 访问 https://console.nest.google.com/device-access → 启用 Pub/Sub → 输入主题 ID
- 触发初始事件 — 执行一次
nest devices(任意 API 调用即可触发) - 启动监听器 — 运行
nest-events listen
支持的事件类型
| 事件 | 提醒内容 |
|---|---|
DoorbellChime.Chime |
🔔 DOORBELL — 有人按门铃! |
CameraPerson.Person |
👤 设备处检测到人物 |
CameraMotion.Motion |
🏃 设备处检测到运动 |
CameraSound.Sound |
🔊 设备处检测到声音 |
ThermostatHvac 状态变更 |
❄️/🔥 HVAC 当前处于制冷/制热状态 |
ThermostatTemperatureSetpoint |
🌡️ 设定温度已更改 |
Temperature 特性 |
🌡️ 环境温度发生变化 |
配置
环境变量:
| 变量 | 说明 | 默认值 |
|---|---|---|
NEST_PUBSUB_TOKENS |
Pub/Sub OAuth 令牌文件路径 | ~/.openclaw/workspace/.nest-pubsub-tokens.json |
TELEGRAM_BOT_TOKEN |
用于发送告警消息的 Bot Token | 取自 ~/.zshenv |
TELEGRAM_CHAT_ID |
用于接收告警消息的用户/群组 ID | 取自 ~/.zshenv |
POLL_INTERVAL |
两次轮询之间的间隔(秒) | 10 |
GCP_PROJECT |
GCP 项目 ID | YOUR_GCP_PROJECT |
PUBSUB_TOPIC |
主题名称 | nest-sdm-events |
PUBSUB_SUBSCRIPTION |
订阅名称 | nest-sdm-events-sub |
事件日志
原始事件将记录至 data/nest-events/events-YYYY-MM-DD.jsonl。
告警去重
相同类型的事件在 60 秒内不会重复触发告警,以避免告警疲劳。
重要注意事项
- 令牌过期:若 GCP 应用处于“测试”模式,刷新令牌(refresh token)将在 7 天后过期;请发布应用以避免重复授权。
- 温度单位:API 内部使用摄氏度(Celsius),CLI 已自动处理华氏(°F)↔ 摄氏(°C)转换。
- 设定值约束:HEATCOOL 模式下,加热与制冷设定值之间至少需保持 1.5°C(2.7°F)的温差。
- 摄像头流媒体:仅支持 WebRTC(不支持 RTSP),需完成 SDP Offer/Answer 协商流程。
- 调用频率限制:每个设备每分钟最多 10 次查询、最多 10 条命令。
- 事件通知:请使用
nest-events listen获取实时告警;该功能依赖 Pub/Sub 配置(详见上文)。
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习