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

Локальный путь выполнения заказа устанавливается, когда 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 хочет использовать для сканирования вашего устройства:

мДНС
Атрибут Описание Пример значения
Название услуги Обязательно. Имя службы, опубликованное устройством в формате 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
УДП
Атрибут Описание Пример значения
Адрес открытия Обязательно. 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": "..."
      }
    }]
  }
}