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

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

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

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

Начать сборку Попробуйте образец

Поймите, как это работает

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

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

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

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

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

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

Местное приложение для выполнения заказов

Приложение локального выполнения содержит бизнес-логику для обработки намерений, отправленных платформой Local Home, и доступа к вашему интеллектуальному устройству через локальную сеть. Никакая модификация вашего оборудования не предполагает интеграции местного исполнения. Приложение выполняет запросы действий умного дома, отправляя команды управления на интеллектуальное устройство через протоколы уровня приложения, включая 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 Настройка конфигурации сканирования Настройте консоль «Действия», указав необходимые параметры, чтобы Помощник мог обнаруживать локально управляемые устройства.
2 Обновите ответ SYNC в вашем облачном хранилище. При выполнении в облаке измените обработчик запросов SYNC , чтобы он поддерживал otherDeviceIds , которое платформа использует для установления локального пути выполнения. В этом поле укажите идентификаторы устройств, которыми можно управлять локально.
3 Внедрите приложение для местного выполнения заказов Используйте Local Home SDK, чтобы создать приложение JavaScript для обработки намерений IDENTIFY , EXECUTE и QUERY . Для прокси-устройств концентратора или моста вам также следует обработать намерение REACHABLE_DEVICES .
4 Тестируйте и отлаживайте свое приложение Проверьте свою интеграцию (или пройдите самостоятельную сертификацию ) с помощью Google Home Test Suite .

Прежде чем вы начнете