讲师中心 微信公众号
AI工具推荐 视频效率加速

Nest SDM

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 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 设备。

配置

前提条件

  1. Device Access Console — 在 https://console.nest.google.com/device-access 注册(一次性费用 $5)
  2. GCP 项目 — 在 https://console.cloud.google.com 创建,并启用 SDM API
  3. OAuth 客户端 — 类型为 Web 应用程序,重定向 URI 设为 https://www.google.com
  4. SDM 权限范围(scope) — 在 OAuth 同意屏幕中添加 https://www.googleapis.com/auth/sdm.service

首次授权

  1. 构建授权 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
  1. 在浏览器中打开该链接,并使用设备所有者的 Google 账户登录
  2. 启用全部设备权限,点击“下一步”,然后继续完成授权流程
  3. 从重定向 URL 中复制 code= 参数值
  4. 换取访问令牌:
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"
  1. 将获取到的令牌保存至配置文件(参见下方“配置”章节)

配置

创建 ~/.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": , "coolCelsius": }
ThermostatEco.SetMode {"mode": "MANUAL_ECO|OFF"}
Fan.SetTimer {"timerMode": "ON", "duration": "s"}

摄像头命令

命令 参数
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              # 持续轮询(守护进程模式)

配置步骤

  1. 带 Pub/Sub 权限范围的 OAuth 授权 — 使用 your-email@example.com 执行 OAuth 流程,权限范围需包含 pubsub 和 cloud-platform;将令牌保存至 .nest-pubsub-tokens.json。
  2. 创建主题 — 运行 nest-events create-topic(将创建 projects/YOUR_GCP_PROJECT/topics/nest-sdm-events)
  3. 授予发布权限 — 运行 nest-events grant-permissions(向 sdm-publisher@googlegroups.com 授予角色)
  4. 创建订阅 — 运行 nest-events create-subscription
  5. 在 Device Access Console 中启用 Pub/Sub — 访问 https://console.nest.google.com/device-access → 启用 Pub/Sub → 输入主题 ID
  6. 触发初始事件 — 执行一次 nest devices(任意 API 调用即可触发)
  7. 启动监听器 — 运行 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工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

0

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn