Местное исполнение

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

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

  • Локальное выполнение позволяет выполнять команды, отправляя намерения EXEC по локальному пути выполнения вместо вызова облачного API. Например, запрос «Включить свет» может быть обработан с помощью локального выполнения.
  • Local Query позволяет обрабатывать запросы о состоянии устройства, отправляя запросы QUERY по локальному пути выполнения. Например, Local Query выполнит запрос «Включен ли мой свет?» без вызова облачного 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 пользователя.

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

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

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

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

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

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

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

Устройство Тип Среда
Google Домой Спикер Хром
Google Home Mini Спикер Хром
Google Home Макс Спикер Хром
Гнездо Мини Спикер Хром
Nest Hub Отображать Хром
Nest Hub Max Отображать Хром
Nest Wi-Fi Маршрутизатор Node.js
Точка Хром

Среда исполнения

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

  • Chrome : Ваше локальное приложение для выполнения заказов выполняется в контексте window браузера Chrome под управлением Chrome 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 .

Прежде чем начать