Локальный путь выполнения устанавливается, когда Google сопоставляет локально управляемое устройство с устройством, возвращенным в ответе SYNC
от вашего облачного выполнения.
Чтобы Google мог обнаружить ваше устройство в локальной сети и установить локальный путь выполнения, вам необходимо добавить информацию об обнаружении в консоли действий. Вам также необходимо обновить ответ SYNC
от вашего облачного выполнения, чтобы сообщить Google о локально управляемом устройстве.
Настройте информацию о конфигурации сканирования
Чтобы указать информацию для обнаружения, выполните следующие действия:
Перейдите к интеграции Cloud-to-cloud в Google Home Developer Console :
Откройте «Проект» > «Облако-облако» в левой части экрана, затем выберите «Изменить» для интеграции. На странице «Настройка и конфигурация» прокрутите до пункта «Локальное выполнение» и включите этот параметр. Введите следующий URL-адрес в каждое поле тестового URL-адреса, вставьте идентификатор своего проекта и нажмите «Сохранить» :
https://<project-id>.web.app/local-home/index.html
Нажмите + Добавить конфигурацию сканирования в разделе «Обнаружение устройств», чтобы добавить новую конфигурацию сканирования.
Выберите тип протокола сопоставления сканирования из раскрывающегося списка и введите значения, которые Google будет сканировать.
В следующих таблицах показаны атрибуты, которые вы можете добавить в зависимости от протоколов, которые вы хотите, чтобы Google использовал для сканирования вашего устройства:
Атрибут | Описание | Пример значения |
---|---|---|
Имя службы | Необходимый. Имя службы, публикуемое устройством в формате service . domain . | _http._tcp.local |
Имя | Необходимый. Отфильтруйте уникальный экземпляр службы в формате | my-device-[0-9]{4}\._http\._tcp\.local |
Атрибут | Описание | Пример значения |
---|---|---|
Тип услуги | Необходимый. Полный идентификатор службы 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": "..." } }] } }