Local Home SDK 增添了一条本地执行方式路径来传递智能家居 intent,从而增强智能家居和 Google 助理之间的集成。
借助此 SDK,你可以使用包含智能家居业务逻辑的 TypeScript 或 JavaScript 来编写本地执行方式应用。Google Home 或 Google Nest 设备可以在设备上加载和运行你的应用。你的应用可以在局域网 (LAN) 中通过 Wi-Fi 与现有的智能设备直接通信,以利用现有协议执行用户的指令。
集成此 SDK 可以提升智能家居 Action 的性能,例如缩短延迟时间和提高可靠性。“本地执行方式”现为 支持所有设备类型和设备特征,但使用 次要用户 验证。
了解工作原理
收到云执行方式的 SYNC
响应后,Local Home 平台会使用 mDNS、UDP 广播或 UPnP 扫描用户的局域网,以发现与 Google 助理相关联的智能设备。
平台会发送 IDENTIFY
intent,以将 IDENTIFY
响应中的设备 ID 与之前的 SYNC
响应返回的设备 ID 进行比较,从而确定设备是否可以在本地控制。如果检测到的设备是 hub 或网桥,平台会发送 REACHABLE_DEVICES
intent,并将 hub 视为用于本地通信的代理设备。
当接收到确认本地设备的响应时,平台会建立一条连接用户 Google Home 或 Google Nest 设备的本地执行方式路径,随后传递用于本地执行方式的用户命令。
当用户触发具有本地执行方式路径的智能家居 Action 时,
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 等应用层协议向智能设备发送控制命令,以实现智能家居 Action 请求。如果本地执行方式路径失败,你的云执行方式将用作后备执行路径。
为了支持构建应用,Local Home SDK 提供了以下两个主要类:
DeviceManager
:提供使用 TCP、UDP 套接字或 HTTP 请求与智能设备通信的方法。App
: 提供为 Google 发送的 intent 附加处理程序的方法 在发现本地可控制的设备(IDENTIFY
、REACHABLE_DEVICES
)。此类还会执行用户命令 (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 |
执行环境
本地执行方式应用的执行环境取决于您的 device。Local Home 平台支持以下行为: 运行时环境:
- Chrome:您的本地执行方式应用是在 Chrome 上下文中执行的
运行 Chrome 的
window
浏览器 M80 支持 ECMAScript 版本 ES2018。 - Node.js:本地执行方式应用作为 Node.js 中的脚本执行 运行 Node v10.x 的进程 LTS 支持 ECMAScript 版本 ES2018。
源代码结构
我们建议您使用 捆绑器配置 并将源代码打包为 立即调用的函数表达式 (IIFE)。
实现路径
如需利用 Local Home SDK 实现智能家居集成,你需要执行以下任务:
1 | 设置扫描 配置 | 使用必要的参数配置 Actions 控制台,以便 Google 助理发现可在本地控制的设备。 |
2 | 将 云执行方式中的 SYNC 响应 | 在你的云执行方式中,修改 SYNC 请求处理程序,以支持平台用于建立本地执行方式路径的
otherDeviceIds 字段。在该字段中,指定可在本地控制的设备的 ID。
|
3 | 实施 本地执行方式应用 | 使用 Local Home SDK 创建一个 JavaScript 应用,用于处理 IDENTIFY intent、
EXECUTE intent 和
QUERY intent。对于 hub 或网桥代理设备,你还应处理 REACHABLE_DEVICES intent。
|
4 | 测试和调试应用 | 使用以下各项测试您的集成(或进行自行认证): Google Home 测试套件。 |