starling-home-hub

🏠 本地优先的 Nest 全屋智控中枢

基于 Starling Home Hub 本地 REST API 的 Nest/Google Home 设备控制方案,支持温控器、摄像头、门锁等全屋智能管理,数据完全本地处理保障隐私安全。

收藏
2.9k
安装
1k
版本
v1.0.2
CLS 安全性认证2026-06-04
点击查看完整报告 >

使用说明

核心用法

starling-home-hub 是一个通过 Starling Home Hub 的 Developer Connect (SDC) 本地 REST API 控制 Nest 和 Google Home 智能设备的命令行工具。用户需配置 STARLING_HUB_IPSTARLING_API_KEY 两个环境变量,通过 scripts/starling.sh 脚本执行设备管理操作。核心功能包括:读取设备状态(statusdevicesget)、设置设备属性(set)、获取摄像头快照(snapshot)以及 WebRTC 视频流管理(stream-startstream-extendstream-stop)。支持的设备类型涵盖温控器、摄像头、Nest Protect 烟雾/CO 报警器、Nest × Yale 智能门锁、温度传感器及 home/away 模式切换。

显著优点

本地优先架构:所有通信均在本地网络完成,无云端数据传输,从根本上避免隐私泄露风险。完善的输入验证validate_id 函数严格限制 ID 和属性名字符集,有效防御注入攻击。健壮的工程实践:采用 set -euo pipefail 实现 Bash 错误处理,curl 配置超时控制防止请求挂起。安全文档详尽:SKILL.md 包含完整的安全指南,涵盖 API key 管理、最小权限原则、TLS 证书验证、网络隔离等关键主题。灵活的 TLS 策略:默认 HTTPS 加密,同时提供 --cacert 选项支持证书固定,平衡易用性与安全性。零外部依赖:仅依赖系统标准工具 curl 和 jq,供应链攻击面极小。

潜在缺点与局限性

API 设计限制:Starling Developer Connect API 强制要求 API key 作为 URL 查询参数传递,可能出现在访问日志中(虽因本地网络限制风险可控)。自签名证书妥协:默认使用 curl -k 跳过证书验证以适应 Starling Home Hub 的自签名证书,虽提供 --cacert 替代方案,但默认配置存在 MITM 风险。硬件门槛:必须购买 Starling Home Hub 硬件(约 $100+)并升级至固件 8.0+,且需启用 Developer Connect API。速率限制约束:Nest 云端对 POST 操作限制为每秒一次、摄像头快照每 10 秒一次,高频自动化场景受限。非官方性质:明确标注为社区 skill,与 Starling LLC、Google、Nest 无关联,未来 API 变更可能带来兼容风险。

适合的目标群体

智能家居重度用户:已投资 Nest/Google Home 生态,希望突破官方 App 限制实现高级自动化。隐私敏感型用户:拒绝将家庭设备数据上传云端,坚持本地控制的极客群体。开发者与系统集成商:需要将 Nest 设备集成到 Home Assistant、Node-RED 等开源平台的工程师。家庭自动化爱好者:熟悉命令行操作,具备 Bash 脚本编写能力,愿意配置环境变量和调试网络的技术用户。

使用风险

网络配置风险:若错误地将 3080/3443 端口转发至公网,API key 和设备将完全暴露。密钥管理风险:通过 --key 参数传递 API key 会在进程列表中可见,违反最小暴露原则。证书验证风险:默认跳过 TLS 证书验证,在不可信网络环境中易受中间人攻击。固件依赖风险:功能依赖 Starling Home Hub 固件版本,升级可能引入破坏性变更。操作不可逆风险stream-start 等非幂等操作重复执行会产生副作用,需确保自动化逻辑正确。

安全解读

核心用法

Starling Home Hub 技能是一个本地智能家居控制工具,通过 starling.sh 脚本与 Starling Home Hub 硬件设备的 Developer Connect API 通信,实现对 Nest/Google Home 生态设备的统一管理。

典型使用场景:

  • 查询设备状态:scripts/starling.sh devices 列出所有设备
  • 读取属性:scripts/starling.sh get <device-id> <property>
  • 设置属性:scripts/starling.sh set <device-id> key=value
  • 摄像头快照:scripts/starling.sh snapshot <camera-id> --output photo.jpg
  • 实时流媒体:通过 WebRTC 协议启动/维护/停止视频流

支持设备类型:

  • Nest Thermostat(温控器、温度传感器)
  • Nest Cam/Doorbell(摄像头、门铃)
  • Nest Protect(烟雾/一氧化碳报警器)
  • Nest × Yale Lock(智能门锁)
  • Home/Away 状态控制
  • Nest 天气服务

环境变量配置:
必须设置 STARLING_HUB_IP(Hub 本地 IP)和 STARLING_API_KEY(应用内生成的 API 密钥),支持 HTTPS 默认端口 3443 和 HTTP 降级端口 3080。

显著优点

1. 纯本地架构:所有通信限定在本地网络,无云端依赖,数据不出境
2. 凭证管理规范:强制使用环境变量传递 API 密钥,禁止命令行参数硬编码,错误输出中密钥永不暴露

3. 输入验证严格:设备 ID 和属性名通过正则表达式 ^[a-zA-Z0-9._:-]+$ 校验,防止注入攻击

4. 权限最小化支持:Starling Hub 应用支持创建只读/读写分级的 API 密钥

5. 快照安全处理:自动设置 chmod 600 权限,防止敏感图像泄露

6. 零依赖设计:纯 Bash 脚本实现,无第三方库依赖,降低供应链攻击面

潜在缺点与局限性

1. 证书验证绕过:默认使用 curl -k 跳过自签名证书验证,存在 MITM 攻击理论风险(可通过 --cacert 手动固定证书缓解)
2. URL 参数传钥:Starling API 设计限制,密钥需作为 URL 查询参数传递,可能出现在访问日志中(但仅限本地网络,无代理/CDN)

3. 速率限制约束:Nest 云端对 POST 操作限流 1次/秒、快照限流 1次/10秒,高频自动化场景受限

4. T3 来源可信度:社区个人开发者维护,缺乏企业级安全审计流程

5. 网络环境敏感:需在受信任局域网运行,公共 WiFi 或不隔离网络中风险升高

适合人群

  • 已拥有 Starling Home Hub 硬件的 Nest/Google Home 用户
  • 注重隐私、偏好本地控制而非云服务的智能家居爱好者
  • 具备基础 Linux/Bash 知识,能配置环境变量和理解网络安全的用户
  • 需要将 Nest 设备集成到自定义自动化工作流(Home Assistant、自研脚本等)的技术用户

常规风险

| 风险类型 | 等级 | 说明 |
|---------|------|------|
| 中间人攻击 | 中 | 证书绕过 `-k` 参数在不可信网络中可被利用,建议 `--cacert` 固定证书 |
| API 密钥泄露 | 低 | 环境变量管理规范,但 URL 参数设计导致可能出现在本地日志 |
| 设备误操作 | 低 | 无二次确认机制,脚本直接执行 set 操作 |
| 供应链风险 | 低 | T3 社区来源,建议人工审查后使用 |
| 网络暴露风险 | 中 | 严禁将 Hub 端口 3080/3443 暴露至公网 |

关键安全建议: 始终使用 HTTPS(默认),禁止 --http 降级;创建最小权限 API 密钥;定期轮换密钥;不在版本控制中存储 .env 文件。

starling-home-hub 内容

references文件夹
scripts文件夹
手动下载zip · 7.7 kB
api-reference.mdtext/markdown
请选择文件