Local Home SDK 增添了一条本地执行方式路径来传递智能家居 intent,从而增强智能家居和 Google 助理之间的集成。
Local Home SDK 提供两项功能:本地执行和本地查询。
- 本地执行功能可通过本地执行方式路径发送
EXEC
intent(而不是发出云 API 调用)来执行命令。例如,“开灯”请求可以由本地执行处理。 - 本地查询可通过本地执行方式路径发送
QUERY
intent,从而处理与设备状态相关的查询。例如,本地查询会在不进行云端 API 调用的情况下执行“我的灯是否开着?”这一查询。
借助此 SDK,你可以使用包含智能家居业务逻辑的 TypeScript 或 JavaScript 来编写本地执行方式应用。Google Home 或 Google Nest 设备可以在设备上加载和运行你的应用。你的应用可以在局域网 (LAN) 中通过 Wi-Fi 与现有的智能设备直接通信,以利用现有协议执行用户的指令。
集成此 SDK 可以提升 Cloud-to-cloud 集成的性能,例如缩短延迟时间和提高可靠性。所有设备类型和设备特征都支持本地执行方式,但使用第二层用户身份验证的类型和特征除外。
了解工作原理
收到云执行方式的 SYNC
响应后,Local Home 平台会使用 mDNS、UDP 广播或 UPnP 扫描用户的局域网,以发现与 Google 助理相关联的智能设备。
平台会发送 IDENTIFY
intent,以将 IDENTIFY
响应中的设备 ID 与之前的 SYNC
响应返回的设备 ID 进行比较,从而确定设备是否可以在本地控制。如果检测到的设备是 hub 或网桥,平台会发送 REACHABLE_DEVICES
intent,并将 hub 视为用于本地通信的代理设备。
当接收到确认本地设备的响应时,平台会建立一条连接用户 Google Home 或 Google Nest 设备的本地执行方式路径,随后传递用于本地执行方式的用户命令。
当用户触发具有本地执行方式路径的 Cloud-to-cloud 集成时,Google 助理会将 EXECUTE
intent 或 QUERY
intent 发送到 Google Home 或 Google Nest 设备,而不是发送到云执行方式。然后,设备会运行本地执行方式应用来处理 intent。
在选择由哪个 Google Home 或 Google Nest 设备触发命令方面,Local Home 平台是不确定的。EXECUTE
和 QUERY
intent 可以传送到在同一 Home Graph 结构中定义为目标设备的任何 Google Home 或 Google Nest 设备。
本地执行方式应用
本地执行方式应用包含一个业务逻辑,用于处理由 Local Home 平台发送的 intent 并通过局域网访问智能设备。 无需修改硬件,即可集成本地执行方式。该应用通过 HTTP、TCP 或 UDP 等应用层协议向智能设备发送控制命令,以实现 Cloud-to-cloud 集成请求。如果本地执行方式路径失败,你的云执行方式将用作后备执行路径。
为了支持构建应用,Local Home SDK 提供了以下两个主要类:
DeviceManager
:提供使用 TCP、UDP 套接字或 HTTP 请求与智能设备通信的方法。App
:提供为 Google 在发现本地可控设备(IDENTIFY
、REACHABLE_DEVICES
)后发送的 intent 附加处理程序的方法。此类还会执行用户命令 (EXECUTE
),并回复用户对当前设备状态 (QUERY
) 的查询。
在开发期间,你可以通过在自己的托管服务器或本地开发机器上加载应用来构建和测试应用。在生产环境中,Google 会在用户的 Google Home 或 Google Nest 设备上的安全 JavaScript 沙盒环境中托管你的应用。
本地执行方式目前不支持 Report State API。Google 依靠你的云执行方式来处理这些请求。
应用生命周期
当 Local Home 平台发现与项目扫描配置匹配的新本地设备或存在与之前识别的设备相关的待处理 intent 要传递时,你的本地执行方式应用会按需加载。
Google Home 或 Google Nest 设备存在内存限制,你的本地执行方式应用可能会因系统内存紧张而随时终止。如果你的应用开始占用过多内存,或系统需要为其他应用腾出空间,就可能发生这种情况。仅当有要传递的新 intent 时和足够内存资源可供应用运行时,Local Home 平台才会重启你的应用。
当用户将账号取消关联或不再有设备支持与用户的 agentUserId
相关联的本地执行方式时,Local Home 平台会在空闲超时后卸载你的应用。
支持的设备
Local Home 平台在受支持的 Google Home 或 Google Nest 设备上执行本地执行方式应用。下表说明了受支持的设备,以及每款设备上使用的运行时。如需详细了解运行时要求,请参阅执行环境。
设备 | 类型 | 环境 |
---|---|---|
Google Home | 音响设备 | Chrome |
Google Home Mini | 音响设备 | Chrome |
Google Home Max | 音响设备 | Chrome |
Nest Mini | 音响设备 | Chrome |
Nest Hub | 显示屏 | Chrome |
Nest Hub Max | 显示屏 | Chrome |
Nest Wifi | 路由器 | Node.js |
Wifi 盒子 | Chrome |
执行环境
本地执行方式应用的执行环境取决于你的设备。Local Home 平台支持以下运行时环境:
- Chrome:本地执行方式应用在 Chrome 浏览器
window
环境中运行,该环境运行 Chrome M80 或更高版本,且支持 ECMAScript 版本 ES2018。 - Node.js:本地执行方式应用作为 Node.js 进程中的脚本运行,该进程运行 Node v10.x LTS 或更高版本,且支持 ECMAScript 版本 ES2018。
源代码结构
我们建议您使用 Local Home SDK 提供的捆绑器配置将依赖项捆绑到单个 JavaScript 文件,并将您的源代码打包为立即调用的函数表达式 (IIFE)。
实现路径
如需利用 Local Home SDK 实现智能家居集成,你需要执行以下任务:
1 | 设置扫描配置 | 使用必要的参数配置 Google Home Developer Console,以便 Google 助理发现可在本地控制的设备。 |
2 | 在云执行方式中更新 SYNC 响应 | 在你的云执行方式中,修改 SYNC 请求处理程序,以支持平台用于建立本地执行方式路径的
otherDeviceIds 字段。在该字段中,指定可在本地控制的设备的 ID。
|
3 | 实现本地执行方式应用 | 使用 Local Home SDK 创建一个 JavaScript 应用,用于处理 IDENTIFY intent、
EXECUTE intent 和
QUERY intent。对于 hub 或网桥代理设备,你还应处理 REACHABLE_DEVICES intent。
|
4 | 测试和调试应用 | 使用 Google Home Test Suite 测试您的集成(或自行认证)。 |
准备工作
- 熟悉有关如何创建 Cloud-to-cloud 集成的基础知识。
- 在 Google Home Developer Console 中,请确保您已拥有智能家居项目,并且已配置账号关联。
- 确保你在 Developer Console 和测试设备上的 Google 助理中登录的是同一 Google 账号。
- 你需要使用 Node.js 环境来编写应用。如需安装 Node.js 和 npm,建议使用 Node Version Manager。
- 若要使用最新版本的 Local Home SDK,你需要让测试设备加入 Cast 试用计划。