Местное выполнение заказов

Local Home SDK улучшает интеграцию умного дома с Google Ассистентом, добавляя локальный путь выполнения для маршрутизации намерений умного дома.

Local Home SDK предоставляет две возможности: локальное выполнение и локальный запрос.

  • Локальное выполнение позволяет выполнять команды, отправляя интенты EXEC по локальному пути выполнения, а не вызывая Cloud API. Например, запрос "Включи свет" может быть обработан локально.
  • Локальный запрос позволяет обрабатывать запросы о состоянии устройства, отправляя интенты QUERY по локальному пути выполнения. Например, Local Query может выполнить запрос "Включен ли свет?" без вызова Cloud API.

SDK позволяет написать приложение для локального выполнения на TypeScript или JavaScript, которое содержит бизнес-логику умного дома. Устройства Google Home или устройства Google Nest могут загружать и запускать ваше приложение на устройстве. Приложение напрямую взаимодействует с умными устройствами по Wi-Fi в локальной вычислительной сети (LAN), чтобы выполнять команды пользователя по существующим протоколам.

Интеграция SDK повышает эффективность интеграции Cloud-to-cloud, в том числе снижает задержку и повышает надежность. Локальное выполнение поддерживается для всех типов и характеристик устройств, кроме тех, которые используют дополнительную верификацию пользователя.

Начать разработку Попробовать пример

Как это работает

После получения ответа SYNC от облачного выполнения платформа Local Home сканирует локальную вычислительную сеть пользователя с помощью mDNS, UDP-трансляции или UPnP, чтобы обнаружить умные устройства, подключенные к Ассистенту.

Платформа отправляет намерение IDENTIFY, чтобы определить, можно ли управлять устройством локально. Для этого она сравнивает идентификатор устройства в ответе IDENTIFY с идентификаторами, возвращенными в предыдущем ответе SYNC. Если обнаруженное устройство является хабом или мостом, платформа отправляет намерение REACHABLE_DEVICES и использует хаб как прокси-устройство для локального обмена данными.

Получив ответ, подтверждающий наличие локального устройства, платформа устанавливает локальный путь выполнения к устройству Google Home или устройству Google Nest пользователя, а затем направляет команды пользователя для локального выполнения.

Когда пользователь запускает интеграцию Cloud-to-cloud с локальным путем выполнения, Ассистент отправляет намерение EXECUTE или QUERY на устройство Google Home или устройство Google Nest, а не в облако. Затем устройство запускает приложение для локального выполнения, чтобы обработать намерение.

На этом рисунке показан поток выполнения для локального выполнения. Путь выполнения фиксирует намерение пользователя с телефона с Google Ассистентом, затем намерение пользователя обрабатывается Google Cloud, затем оно выполняется локально на устройстве Google Home, и команда выдается непосредственно в концентратор устройства или непосредственно на устройство. Облако разработчика доступно в качестве резервного.
Рисунок 1. Добавление локального пути выполнения для действия умного дома.

Платформа Local Home выбирает устройство Google Home или устройство Google Nest для выполнения команды недетерминированно. Намерения EXECUTE и QUERY могут поступать от любого устройства Google Home или Google Nest, определенного в той же структуре Home Graph, что и целевое устройство.

Приложение для выполнения заказов в регионе

Приложение для локального выполнения содержит бизнес-логику для обработки интентов, отправленных платформой Local Home, и доступа к вашему умному устройству через локальную вычислительную сеть. Для интеграции местного выполнения заказов не требуется модификация оборудования. Приложение выполняет запросы на интеграцию Cloud-to-cloud, отправляя команды управления на умное устройство через протоколы прикладного уровня, включая HTTP, TCP или UDP. Если локальное выполнение не удастся, будет использовано облачное.

Для поддержки создания приложения Local Home SDK предоставляет два основных класса:

  • DeviceManager предоставляет методы для взаимодействия с умными устройствами с помощью TCP, сокетов UDP или HTTP-запросов.
  • App. Предоставляет методы для подключения обработчиков намерений, которые Google отправляет после обнаружения устройств с локальным управлением (IDENTIFY, REACHABLE_DEVICES). Этот класс также выполняет команды пользователя (EXECUTE) и отвечает на запросы пользователя о текущем состоянии устройства (QUERY).

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

Report State API в настоящее время не поддерживается для локального выполнения. Для обработки этих запросов Google использует ваше облачное выполнение.

Жизненный цикл приложения

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

Устройства Google Home и устройства Google Nest имеют ограниченный объем памяти, поэтому приложение для локального выполнения может быть закрыто в любой момент из-за нехватки памяти. Это может произойти, если приложение начинает потреблять слишком много памяти или системе нужно освободить место для другого приложения. Платформа Local Home перезапускает приложение, только когда появляются новые интенты и достаточно ресурсов памяти для его работы.

Платформа Local Home выгружает приложение после тайм-аута бездействия, когда пользователь отменяет связь со своим аккаунтом или когда больше нет устройств, поддерживающих локальное выполнение, связанных с agentUserId пользователя.

Поддерживаемые устройства

Платформа Local Home выполняет ваше приложение для локального выполнения на поддерживаемых устройствах Google Home или устройствах Google Nest. В таблице ниже перечислены поддерживаемые устройства и среда выполнения, используемая на каждом из них. Подробнее о требованиях к среде выполнения…

Устройство Тип Среда
Google Home Озвучивающий Chrome
Google Home Mini Озвучивающий Chrome
Google Home Max Озвучивающий Chrome
Nest Mini Озвучивающий Chrome
Nest Hub Экран Chrome
Nest Hub Max Экран Chrome
Nest Wifi Маршрутизатор Node.js
Точка Chrome

Среда выполнения

Среда выполнения для приложения локального выполнения зависит от вашего устройства. Платформа Local Home поддерживает следующие среды выполнения:

  • Chrome Приложение для локального выполнения запускается в контексте браузера Chrome window версии M80 или более поздней с поддержкой ECMAScript версии ES2018.
  • Node.js Приложение для локального выполнения запускается как скрипт в процессе Node.js, работающем в Node v10.x LTS или более поздней версии с поддержкой ECMAScript версии ES2018.

Структура исходного кода

Рекомендуем объединить зависимости в один файл JavaScript, используя конфигурации сборщика, которые предоставляет Local Home SDK, и упаковать исходный код в виде немедленно вызываемой функции (IIFE).

Путь реализации

Чтобы использовать Local Home SDK для интеграции умного дома, вам необходимо выполнить следующие задачи:

1 Настройте конфигурацию сканирования Настройте Google Home Developer Console с параметрами, необходимыми для того, чтобы Ассистент мог находить устройства, которыми можно управлять локально.
2 Обновите ответ SYNC в облачном выполнении В облачном выполнении измените обработчик запросов SYNC, чтобы он поддерживал поле otherDeviceIds, которое платформа использует для создания локального пути выполнения. В этом поле укажите идентификаторы устройств, которыми можно управлять локально.
3 Реализуйте приложение для выполнения заказов на местах Используйте Local Home SDK, чтобы создать приложение JavaScript для обработки намерений IDENTIFY, EXECUTE и QUERY. Для прокси-устройств, таких как хабы и мосты, также нужно обрабатывать намерение REACHABLE_DEVICES.
4 Тестирование и отладка приложения Протестируйте интеграцию (или пройдите самостоятельную сертификацию) с помощью набора тестов Google Home.

Подготовка