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