支持设备发现

当 Google 将本地可控制的设备匹配你的云执行方式的 SYNC 响应所返回的设备,就会建立本地执行方式路径。

如需使 Google 能够在本地网络中发现你的设备并建立本地执行方式路径,你需要在 Actions 控制台中添加发现信息。 你还需要更新云执行方式的 SYNC 响应,让 Google 了解本地可控制的设备。

设置扫描配置信息

如需指定发现信息,请按以下步骤操作:

  1. Google Home Developer Console 中前往您的 Cloud-to-cloud 集成:

    前往 Play 管理中心

  2. 在屏幕左侧,依次选择项目 > 云到云,然后为相应集成选择修改。在设置和配置页面中,滚动到本地履单,然后将该设置切换为开启。在每个测试网址字段中输入以下网址,插入您的项目 ID,然后点击 Save

    https://<project-id>.web.app/local-home/index.html

  3. 点击 Device discovery 下的 + Add scan configuration,添加新的扫描配置。

  4. 从下拉菜单中选择扫描协议类型,然后输入要供 Google 扫描的值。

根据你想让 Google 扫描你的设备所使用的协议,下表显示了你可以添加的属性:

mDNS
属性 说明 示例值
服务名称 必填。设备发布的服务名称,格式为 service.domain _http._tcp.local
名称

必填。唯一服务示例的过滤条件,格式为 instance.service.domain

平台会将此值视为正则表达式并返回所有匹配的设备。
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
属性 说明 示例值
服务类型 必填。UPnP 服务的完全限定标识符,格式为 domain:service:type:version schemas-upnp-org:service:SwitchPower:1
OUI

可选。组织唯一标识符

用于标识设备制造商的 24 位值。 通常情况下,设备 MAC 地址的前三个八位字节。
1A:2B:3C
UDP
属性 说明 示例值
发现地址 必需。UDP 广播的目标 IP 地址。 255.255.255.255
广播端口 必需。UDP 广播的目标端口。 5555
监听端口 必需。UDP 发现响应的侦听端口。 5556
发现数据包

必填。要在 UDP 广播中发送的载荷。

格式为十六进制编码的字节字符串。
48454C4C4F

在云执行方式中更新 SYNC 响应

SYNC intent 会向 Google 助理报告用户控制哪些设备及其功能。

为了支持本地执行方式,Local Home 平台会检查来自智能家居 Action 的云执行方式的 SYNC 响应,并尝试将 otherDeviceIds 字段中的设备 ID 与 IDENTIFY 处理程序返回的验证 ID 相匹配。没有 otherDeviceIds 字段的设备条目会从本地执行方式中排除。

SYNC 响应的 otherDeviceIds 字段中,你需要为可在本地控制的智能家居设备设置设备 ID。该字段会显示在响应的 device 级别。Google 可以在具有指定 ID 的任何设备上建立本地执行方式路径。

使用 customData 字段指定 Google 连接到独立设备所需的任何其他数据,或使用集线器定位终端设备(例如端口号和其他特定于协议的信息)。

示例

以下代码段展示了如何创建 SYNC 处理程序。

独立/Hub
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [{
      "id": "123",
      "type": "action.devices.types.OUTLET",
      "traits": [
        "action.devices.traits.OnOff"
      ],
      "name": {
        "name": "Night light"
      },
      "willReportState": false,
      "otherDeviceIds": [{
        "deviceId": "local-device-id"
      }],
      "customData": {
        "port": 5555,
        "authToken": "..."
      }
    }]
  }
}