Добро пожаловать в Центр разработчиков Google Home, новое место, где можно научиться разрабатывать действия для умного дома. Примечание. Вы продолжите создавать действия в консоли действий.

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

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

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

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

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

  1. Откройте свой проект умного дома в консоли Actions.
  2. На левой панели навигации нажмите Действия .
  3. В разделе Настройка локального домашнего SDK (необязательно) > Добавить конфигурацию сканирования устройства щелкните Новая конфигурация сканирования .
  4. Выберите в раскрывающемся списке соответствующий тип протокола сканирования и введите значения для сканирования Google.

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

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