Поддержка обнаружения устройств

Локальный путь выполнения устанавливается, когда Google сопоставляет локально управляемое устройство с устройством, возвращенным в ответе SYNC от вашего облачного выполнения.

Чтобы Google мог обнаружить ваше устройство в локальной сети и установить локальный путь выполнения, вам необходимо добавить информацию об обнаружении в консоли действий. Вам также необходимо обновить ответ SYNC от вашего облачного выполнения, чтобы сообщить Google о локально управляемом устройстве.

Настройте информацию о конфигурации сканирования

Чтобы указать информацию для обнаружения, выполните следующие действия:

  1. Перейдите к интеграции Cloud-to-cloud в Google Home Developer Console :

    Перейдите в консоль разработчика .

  2. Откройте «Проект» > «Облако-облако» в левой части экрана, затем выберите «Изменить» для интеграции. На странице «Настройка и конфигурация» прокрутите до пункта «Локальное выполнение» и включите этот параметр. Введите следующий URL-адрес в каждое поле тестового URL-адреса, вставьте идентификатор своего проекта и нажмите «Сохранить» :

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

  3. Нажмите + Добавить конфигурацию сканирования в разделе «Обнаружение устройств», чтобы добавить новую конфигурацию сканирования.

  4. Выберите тип протокола сопоставления сканирования из раскрывающегося списка и введите значения, которые Google будет сканировать.

В следующих таблицах показаны атрибуты, которые вы можете добавить в зависимости от протоколов, которые вы хотите, чтобы Google использовал для сканирования вашего устройства:

mDNS
Атрибут Описание Пример значения
Имя службы Необходимый. Имя службы, публикуемое устройством в формате service . domain . _http._tcp.local
Имя

Необходимый. Отфильтруйте уникальный экземпляр службы в формате instance . service . domain .

Платформа рассматривает это значение как регулярное выражение и возвращает все соответствующие устройства.
my-device-[0-9]{4}\._http\._tcp\.local
УПнП
Атрибут Описание Пример значения
Тип услуги Необходимый. Полный идентификатор службы UPnP в формате domain :service: type : version . schemas-upnp-org:service:SwitchPower:1
ОУИ

Необязательный. Организационный уникальный идентификатор .

24-битное значение, идентифицирующее производителя устройства. Обычно это первые три октета MAC-адреса устройства.
1A:2B:3C
UDP
Атрибут Описание Пример значения
Адрес обнаружения Необходимый. IP-адрес назначения для широковещательной передачи UDP. 255.255.255.255
Вещательный порт Необходимый. Порт назначения для широковещательной передачи UDP. 5555
Прослушиваемый порт Необходимый. Порт прослушивания для ответа на обнаружение UDP. 5556
Пакет обнаружения

Необходимый. Полезная нагрузка для отправки в широковещательном сообщении UDP.

Форматируется как строка байтов в шестнадцатеричной кодировке.
48454C4C4F

Обновить ответ SYNC при выполнении облака

Намерение SYNC сообщает Ассистенту, какими устройствами управляет пользователь и их возможностями.

Для поддержки локального выполнения платформа Local Home проверяет ответ SYNC от облачного выполнения действия вашего умного дома и пытается сопоставить идентификаторы устройств в otherDeviceIds с идентификатором проверки, возвращаемым обработчиком IDENTIFY . Записи устройств без otherDeviceIds исключаются из локального выполнения.

В otherDeviceIds ответа SYNC вам необходимо установить идентификаторы устройств умного дома, которыми можно управлять локально. Поле появляется в ответе на уровне device . Google может установить локальный путь выполнения на любом устройстве с указанным идентификатором.

Используйте поле customData чтобы указать любые дополнительные данные, необходимые Google для подключения к автономному устройству или для определения конечных устройств с помощью концентратора (например, номер порта и другую информацию, специфичную для протокола).

Пример

В следующем фрагменте показано, как можно создать обработчик SYNC .

Автономный/Хаб
{
  "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": "..."
      }
    }]
  }
}