本地执行方式

Local Home SDK 增添了一条本地执行方式路径来传递智能家居 intent,从而增强智能家居和 Google 助理之间的集成。

Local Home SDK 提供两项功能:本地执行和本地查询。

  • 本地执行能够通过本地执行方式路径发送 EXEC intent 来执行命令,而无需调用 Cloud 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 助理的手机中捕获用户意图,然后由 Google Cloud 处理用户意图,接着在 Google Home 设备上本地执行,并将命令直接发送到设备中心或直接发送到设备。开发者云以云后备形式提供。
图 1:为智能家居 Action 添加本地执行方式路径。

在选择由哪个 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 需要传递且有足够的内存资源可供应用运行时,本地 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 平台支持以下运行时环境:

源代码结构

我们建议您使用 Local Home SDK 提供的打包器配置将依赖项打包到单个 JavaScript 文件中,并将源代码打包为立即调用的函数表达式 (IIFE)。

实现路径

如需利用 Local Home SDK 实现智能家居集成,你需要执行以下任务:

1 设置扫描配置 使用必要的参数配置 Google Home Developer Console,以便 Google 助理发现可在本地控制的设备。
2 在云执行方式中更新 SYNC 响应 在你的云执行方式中,修改 SYNC 请求处理程序,以支持平台用于建立本地执行方式路径的 otherDeviceIds 字段。在该字段中,指定可在本地控制的设备的 ID。
3 实现本地执行方式应用 使用 Local Home SDK 创建一个 JavaScript 应用,用于处理 IDENTIFYintent、 EXECUTE intent 和 QUERY intent。对于 hub 或网桥代理设备,你还应处理 REACHABLE_DEVICES intent。
4 测试和调试应用 使用 Google Home Test Suite 测试您的集成(或自行认证)。

准备工作