SDK Local Home расширяет возможности интеграции вашей системы умного дома с Google Assistant, добавляя локальный путь обработки запросов к системе умного дома .
Пакет 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, чтобы обнаружить интеллектуальные устройства, подключенные к Google Assistant.
Платформа отправляет намерение IDENTIFY , чтобы определить, можно ли управлять устройством локально, сравнивая идентификатор устройства в ответе IDENTIFY с идентификаторами, возвращенными в предыдущем ответе SYNC . Если обнаруженное устройство является концентратором или мостом, платформа отправляет намерение REACHABLE_DEVICES и рассматривает концентратор как прокси-устройство для локальной связи.
Получив ответ, подтверждающий наличие локального устройства, платформа устанавливает локальный путь выполнения команд к устройству Google Home или Google Nest пользователя и впоследствии направляет команды пользователя для локального выполнения.
Когда пользователь запускает интеграцию Cloud-to-cloud , имеющую локальный путь выполнения, Ассистент отправляет намерение EXECUTE или QUERY на устройство Google Home или Google Nest, а не в облачное приложение для выполнения. Затем устройство запускает локальное приложение для обработки намерения.

Платформа 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 для обработки отчетов не поддерживается для локального выполнения запросов. Google использует вашу облачную систему обработки запросов для их обработки.
Жизненный цикл приложения
Ваше приложение для локального выполнения заказов загружается по запросу, когда платформа Local Home обнаруживает новые локальные устройства, соответствующие конфигурации сканирования проекта, или устройства с ожидающими подтверждения намерениями доставки, связанными с ранее идентифицированным устройством.
Устройства Google Home или Google Nest имеют ограниченный объем памяти, и ваше локальное приложение для выполнения заказов может быть завершено в любой момент из-за нехватки памяти в системе. Это может произойти, если ваше приложение начнет потреблять слишком много памяти или если системе потребуется освободить место для другого приложения. Платформа Local Home перезапускает ваше приложение только тогда, когда появляются новые намерения для выполнения и достаточно ресурсов памяти для работы приложения.
Платформа Local Home выгружает ваше приложение после истечения времени ожидания бездействия, если пользователь отключает свою учетную запись или если больше нет устройств, поддерживающих локальное выполнение, связанных с agentUserId пользователя.
Поддерживаемые устройства
Платформа Local Home запускает ваше локальное приложение для выполнения заказов на поддерживаемых устройствах Google Home или Google Nest. В следующей таблице описаны поддерживаемые устройства и используемая на каждом устройстве среда выполнения. Для получения дополнительной информации о требованиях к среде выполнения см. раздел «Среда выполнения» .
| Устройство | Тип | Среда |
|---|---|---|
| Google Домой | Спикер | Хром |
| Google Home Mini | Спикер | Хром |
| Google Home Max | Спикер | Хром |
| Nest Mini | Спикер | Хром |
| Nest Hub | Отображать | Хром |
| Nest Hub Max | Отображать | Хром |
| Nest Wifi | Маршрутизатор | Node.js |
| Точка | Хром |
Среда выполнения
Среда выполнения вашего локального приложения для обработки заказов зависит от вашего устройства . Платформа Local Home поддерживает следующие среды выполнения:
- Chrome : Ваше локальное приложение для выполнения заказов запускается в контексте
windowбраузера Chrome, работающего под управлением Chrome M80 или более поздней версии с поддержкой ECMAScript версии ES2018 . - Node.js : Ваше локальное приложение для выполнения заказов запускается как скрипт в процессе Node.js, работающем под управлением Node v10.x LTS или более поздней версии с поддержкой ECMAScript версии ES2018 .
Структура исходного кода
Мы рекомендуем объединить ваши зависимости в один JavaScript-файл, используя конфигурации сборщика, предоставляемые SDK локального домашнего каталога, и упаковать ваш исходный код в виде немедленно вызываемого функционального выражения (IIFE) .
Путь реализации
Для использования Local Home SDK для интеграции с системой умного дома необходимо выполнить следующие действия:
| 1 | Настройте параметры сканирования. | Настройте Google Home Developer Console указав необходимые параметры, чтобы Google Ассистент мог обнаруживать устройства, которыми можно управлять локально. |
| 2 | Обновите ответ SYNC в вашем облачном сервисе выполнения заказов. | В облачной системе выполнения запросов измените обработчик запросов SYNC , чтобы он поддерживал поле otherDeviceIds , которое платформа использует для установления локального пути выполнения. В этом поле укажите идентификаторы устройств, которыми можно управлять локально. |
| 3 | Внедрить локальное приложение для выполнения заказов. | Используйте SDK Local Home для создания JavaScript-приложения, обрабатывающего интенты IDENTIFY , EXECUTE и QUERY . Для устройств-концентраторов или мостов-прокси следует также обрабатывать интент REACHABLE_DEVICES . |
| 4 | Протестируйте и отладьте свое приложение. | Проверьте свою интеграцию (или пройдите самосертификацию ), используя набор тестов Google Home Test Suite . |
Прежде чем начать
- Ознакомьтесь с основами создания интеграции Cloud-to-cloud .
- В Google Home Developer Console убедитесь, что у вас есть существующий проект умного дома и что настроена привязка учетной записи .
- Убедитесь, что вы вошли в систему с одной и той же учетной записью Google как в Developer Console , так и в Google Ассистенте на тестовом устройстве.
- Для написания приложения вам потребуется среда Node.js. Для установки Node.js и npm рекомендуется использовать Node Version Manager .
- Для работы с последней версией Local Home SDK вам потребуется зарегистрировать ваши тестовые устройства в программе предварительного просмотра Cast .