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

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

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

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": "..."
      }
    }]
  }
}