Local Home SDK расширяет интеграцию вашего умного дома с Google Assistant, добавляя локальный путь выполнения для маршрутизации намерений умного дома .
Local Home SDK предоставляет две возможности: локальное выполнение и локальный запрос.
- Локальное выполнение предоставляет возможность выполнять команды, отправляя намерения
EXEC
по локальному пути выполнения вместо выполнения вызова облачного API. Например, запрос «Включи свет» может быть обработан локальным выполнением. - Локальный запрос предоставляет возможность обрабатывать запросы о состоянии устройства, отправляя намерения
QUERY
по локальному пути выполнения. Например, локальный запрос выполнит запрос «Горит ли у меня свет?» без вызова облачного API.
SDK позволяет вам написать локальное приложение для выполнения заказов, используя TypeScript или JavaScript, которое содержит бизнес-логику вашего умного дома. Устройства Google Home или Google Nest могут загружать и запускать ваше приложение на устройстве. Ваше приложение напрямую взаимодействует с существующими интеллектуальными устройствами через Wi-Fi в локальной сети (LAN) для выполнения пользовательских команд по существующим протоколам.
Интеграция SDK обеспечивает повышение производительности вашей интеграции Cloud-to-cloud , включая снижение задержек и повышение надежности. Локальное выполнение поддерживается для всех типов устройств и характеристик устройств, за исключением тех, которые используют вторичную проверку пользователя .
Начать сборку Попробуйте образец
Поймите, как это работает
Получив ответ SYNC
от вашего облачного выполнения, платформа Local Home сканирует локальную сеть пользователя с помощью mDNS, широковещательной передачи UDP или UPnP, чтобы обнаружить интеллектуальные устройства, подключенные к 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 Домашний Мини | Спикер | Хром |
Google Домашний Макс | Спикер | Хром |
Гнездо Мини | Спикер | Хром |
Гнездо Хаб | Отображать | Хром |
Гнездо Хаб Макс | Отображать | Хром |
Гнездо 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 Test Suite . |
Прежде чем начать
- Ознакомьтесь с основами создания интеграции Cloud-to-cloud .
- В Google Home Developer Console убедитесь, что у вас есть существующий проект умного дома и настроена привязка учетных записей .
- Убедитесь, что вы вошли в одну и ту же учетную запись Google в Developer Console и в Ассистенте на тестовом устройстве.
- Для написания приложения вам понадобится среда Node.js. Для установки Node.js и npm рекомендуется использовать Node Version Manager .
- Для работы с последней версией Local Home SDK вам необходимо зарегистрировать тестовые устройства в программе Cast Preview .