返回顶部
n

nest-sdmNest SDM控制

Control Nest thermostat, doorbell, and cameras via the Google Smart Device Management (SDM) API.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
684
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

nest-sdm

Nest SDM 技能

通过智能设备管理REST API控制和监控Google Nest设备。

设置

前提条件

  1. 1. 设备访问控制台 — 在 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范围 — 在OAuth同意屏幕中添加 https://www.googleapis.com/auth/sdm.service

首次授权

  1. 1. 构建授权URL:

https://nestservices.google.com/partnerconnections/ID>/auth?redirecturi=https://www.google.com&accesstype=offline&prompt=consent&clientid=ID>&responsetype=code&scope=https://www.googleapis.com/auth/sdm.service

  1. 2. 在浏览器中打开,使用设备所有者的Google账号登录
  2. 启用所有设备权限,点击下一步,然后继续同意
  3. 从重定向URL中复制 code= 参数
  4. 交换令牌:
bash curl -s -X POST https://oauth2.googleapis.com/token \ -d clientid=ID> \ -d clientsecret=SECRET> \ -d code= \ -d granttype=authorizationcode \ -d redirect_uri=https://www.google.com
  1. 6. 将令牌保存到配置文件中(参见下面的配置)

配置

创建 ~/.openclaw/workspace/.nest-sdm-tokens.json:
json
{
client_id: <您的客户端ID>,
client_secret: <您的客户端密钥>,
project_id: <设备访问项目ID>,
refresh_token: <您的刷新令牌>,
token_type: Bearer,
scope: https://www.googleapis.com/auth/sdm.service
}

设置安全权限:chmod 600 ~/.openclaw/workspace/.nest-sdm-tokens.json

CLI使用

bash

便捷别名


alias nest=<技能目录>/nest-sdm.sh

设备发现

bash nest devices # 列出所有设备(JSON格式) nest structures # 列出结构/房间

恒温器

bash nest thermostat # 当前状态(温度、湿度、模式、设定点) nest set-cool <华氏度> # 设置为制冷模式并设定温度 nest set-heat <华氏度> # 设置为制热模式并设定温度 nest set-range <低温°F> <高温°F> # 设置制热制冷范围 nest set-mode <模式> # HEAT | COOL | HEATCOOL | OFF nest set-eco <模式> # MANUAL_ECO | OFF nest fan-on [持续时间秒] # 开启风扇(默认:900秒/15分钟) nest fan-off # 关闭风扇

门铃与摄像头

bash nest doorbell # 门铃信息与功能 nest display # 厨房显示屏信息 nest camera-stream <设备ID> # 生成WebRTC实时流(返回SDP应答) nest camera-image <事件ID> # 获取事件快照URL

原始API

bash nest api GET devices # 原始设备列表 nest api GET devices/<设备ID> # 单个设备 nest api POST devices/<设备ID>:executeCommand {command:...,params:{...}}

支持的设备

类型特征控制
恒温器温度、湿度、模式、节能、风扇、暖通空调、设定点、连接状态完全读写
门铃
实时流、摄像头图像、人员、移动、铃声、事件图像、剪辑预览 | 读取+流 | | 显示屏 | 实时流、摄像头图像、人员、声音、移动、事件图像 | 读取+流 |

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: <SDP提议>}
CameraLiveStream.StopWebRtcStream
{mediaSessionId: } |

| CameraLiveStream.ExtendWebRtcStream | {mediaSessionId: } | | CameraEventImage.GenerateImage | {eventId: <事件ID>} |

Pub/Sub实时事件

获取门铃按铃、移动、人员检测和设备状态变化的即时提醒。

CLI:nest-events

bash
nest-events setup-check # 验证Pub/Sub配置是否就绪
nest-events create-topic # 创建GCP Pub/Sub主题
nest-events grant-permissions # 授予SDM发布者角色
nest-events create-subscription # 创建拉取订阅
nest-events poll # 拉取一次事件
nest-events listen # 持续轮询(守护进程)

设置步骤

  1. 1. 带Pub/Sub范围的OAuth — 以your-email@example.com运行OAuth流程,包含pubsub + cloud-platform范围。将令牌保存到.nest-pubsub-tokens.json。
  2. 创建主题 — nest-events create-topic(创建projects/YOURGCPPROJECT/topics/nest-sdm-events)
  3. 授予权限 — nest-events grant-permissions(添加sdm-publisher@googlegroups.com)
  4. 创建订阅 — nest-events create-subscription
  5. 在设备访问控制台中启用 — https://console.nest.google.com/device-access → 启用Pub/Sub → 输入主题ID
  6. 触发初始事件 — nest devices(一次性API调用)
  7. 启动监听器 — nest-events listen

支持的事件类型

事件提醒
DoorbellChime.Chime🔔 门铃 — 有人按铃!
CameraPerson.Person
👤 在设备检测到人员 | | CameraMotion.Motion | 🏃 设备检测到移动 | | CameraSound.Sound | 🔊 设备检测到声音 | | ThermostatHvac 状态变化 | ❄️/🔥 暖通空调现在制冷/制热 | | ThermostatTemperatureSetpoint | 🌡️ 设定点已更改 | | Temperature 特征 | 🌡️ 环境温度变化 |

配置

环境变量:

变量描述默认值
NESTPUBSUBTOKENSPub/Sub OAuth令牌路径~/.openclaw/workspace/.nest-pubsub-tokens.json
TELEGRAMBOTTOKEN
提醒的机器人令牌 | 来自 ~/.zshenv |
| TELEGRAMCHATID | 提醒的用户/聊天ID | 来自 ~/.zshenv |
| POLL_INTERVAL | 轮询间隔秒数 | 10 |
| GCPPROJECT | GCP项目ID | YOURGCP_PROJECT |
| PUBSUB_TOPIC | 主题名称 | nest-sdm-events |
| PUBSUB_SUBSCRIPTION | 订阅名称 | nest-sdm-events-sub |

事件日志

原始事件记录到 data/nest-events/events-YYYY-MM-DD.jsonl。

提醒去重

相同事件类型在60秒内不会重复提醒,以防止提醒疲劳。

重要说明

  • - 令牌过期: 如果GCP应用处于测试模式,刷新令牌将在7天后过期。发布应用以避免重新认证。
  • 温度: API内部使用摄氏度。CLI处理华氏度↔摄氏度转换。
-

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 nest-sdm-1776420092 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 nest-sdm-1776420092 技能

通过命令行安装

skillhub install nest-sdm-1776420092

下载

⬇ 下载 nest-sdm v1.0.0(免费)

文件大小: 15.7 KB | 发布时间: 2026-4-17 19:28

v1.0.0 最新 2026-4-17 19:28
Initial publish

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large