Entrega local

El SDK de Local Home mejora la integración de tu casa inteligente con el Asistente de Google, ya que agrega una ruta de entrega local para enrutar intents de casa inteligente.

El SDK de Local Home proporciona dos funciones: Ejecución local y Consulta local.

  • La ejecución local permite entregar comandos mediante el envío de intents EXEC a través de la ruta de entrega local, en lugar de realizar una llamada a la API de la nube. Por ejemplo, la ejecución local podría controlar la solicitud "Enciende la luz".
  • La consulta local permite controlar las consultas relacionadas con el estado del dispositivo mediante el envío de intents QUERY a través de la ruta de entrega local. Por ejemplo, la consulta local completaría la consulta "¿Está encendida la luz?" sin realizar una llamada a la API de la nube.

El SDK te permite escribir una app de entrega local, con TypeScript o JavaScript, que contenga la lógica empresarial de tu casa inteligente. Los dispositivos Google Home o Google Nest pueden cargar y ejecutar tu app en el dispositivo. Tu app se comunica directamente con tus dispositivos inteligentes existentes a través de Wi-Fi en una red de área local (LAN) para llevar a cabo los comandos del usuario a través de protocolos existentes.

La integración del SDK ofrece mejoras de rendimiento a tu integración de Cloud-to-cloud, incluida una latencia más baja y una confiabilidad más alta. La entrega local es compatible con todos los tipos de dispositivos y atributos, excepto aquellos que usan la verificación secundaria del usuario.

Comienza a compilar Prueba la muestra

Comprende el funcionamiento

Después de obtener una respuesta SYNC de tu entrega en la nube, la plataforma de Local Home analiza la red de área local del usuario con mDNS, transmisión UDP o UPnP para descubrir dispositivos inteligentes conectados al Asistente.

La plataforma envía un intent IDENTIFY para determinar si el dispositivo se puede controlar de forma local comparando el ID de dispositivo en la respuesta IDENTIFY con los que muestra la respuesta SYNC anterior. Si el dispositivo detectado es un concentrador o un puente, la plataforma envía un intent REACHABLE_DEVICES y trata al concentrador como el dispositivo proxy para comunicarse de forma local.

Cuando recibe una respuesta que confirma un dispositivo local, la plataforma establece una ruta de entrega local al dispositivo Google Home o Google Nest del usuario y, luego, enruta los comandos del usuario para la entrega local.

Cuando un usuario activa una integración de Cloud-to-cloud que tiene una ruta de entrega local, el Asistente envía el intent EXECUTE o QUERY al dispositivo Google Home o Google Nest en lugar de la entrega en la nube. Luego, el dispositivo ejecuta la app de entrega local para procesar el intent.

En esta imagen, se muestra el flujo de ejecución de la entrega local. La ruta de ejecución captura el intent de un usuario desde un teléfono con Asistente de Google. Luego, Google Cloud lo procesa y, luego, se ejecuta de forma local en el dispositivo Google Home, y el comando se envía directamente al concentrador del dispositivo o directamente al dispositivo. La nube para desarrolladores está disponible como resguardo en la nube.
Figura 1: Agrega una ruta de entrega local para tu Acción de casa inteligente.

La plataforma Local Home no es determinista a la hora de elegir qué dispositivo Google Home o Google Nest activará el comando. Los intents EXECUTE y QUERY pueden provenir de cualquier dispositivo Google Home o Google Nest definido en la misma estructura de Graph de Home que el dispositivo de destino.

App de entrega local

La app de entrega local contiene la lógica empresarial para procesar los intents que envía la plataforma de Local Home y acceder a tu dispositivo inteligente a través de la red de área local. No se espera que se realice ninguna modificación en el hardware para integrar la entrega local. La app completa las solicitudes de integración de Cloud-to-cloud enviando comandos de control al dispositivo inteligente a través de protocolos de capa de aplicación, como HTTP, TCP o UDP. En caso de que falle la ruta de entrega local, se usará la entrega en la nube como ruta de ejecución de resguardo.

Para admitir la compilación de la app, el SDK de Local Home proporciona estas dos clases principales:

  • DeviceManager: Proporciona métodos para comunicarse con dispositivos inteligentes a través de sockets TCP, UDP o solicitudes HTTP.
  • App: proporciona métodos para adjuntar controladores para los intents que envía Google después de descubrir dispositivos que se pueden controlar de forma local (IDENTIFY, REACHABLE_DEVICES). Esta clase también ejecuta los comandos del usuario (EXECUTE) y responde las consultas del usuario sobre el estado actual del dispositivo (QUERY).

Durante el desarrollo, puedes compilar y probar la app cargándola en tu propio servidor de alojamiento o máquina de desarrollo local. En producción, Google aloja tu app en un entorno de zona de pruebas de JavaScript seguro en el dispositivo Google Home o Google Nest del usuario.

Por el momento, la API de Report State no es compatible con la entrega local. Google se basa en tu entrega en la nube para procesar estas solicitudes.

Ciclo de vida de la aplicación

Tu app de entrega local se carga a pedido cuando la plataforma de Local Home detecta dispositivos locales nuevos que coinciden con la configuración de análisis del proyecto o tiene intents pendientes para entregar relacionados con un dispositivo identificado anteriormente.

Los dispositivos Google Home o Google Nest tienen limitaciones de memoria, y es posible que tu app de entrega local se cancele en cualquier momento debido a la presión de memoria en el sistema. Esto puede suceder si tu app comienza a consumir demasiada memoria o si el sistema necesita hacer espacio para otra app. La plataforma de Local Home reinicia tu app solo cuando hay intents nuevos para entregar y recursos de memoria suficientes para que se ejecute.

La plataforma de Local Home descarga tu app después de un tiempo de espera de inactividad cuando el usuario desvincula su cuenta o ya no hay dispositivos que admitan la entrega local asociada con el agentUserId del usuario.

Dispositivos compatibles

La plataforma Local Home ejecuta tu app de entrega local en dispositivos Google Home o Google Nest compatibles. En la siguiente tabla, se describen los dispositivos compatibles y el tiempo de ejecución que se usa en cada dispositivo. Para obtener más información sobre los requisitos del entorno de ejecución, consulta Entorno de ejecución.

Dispositivo Tipo Entorno
Google Home Bocina Chrome
Google Home Mini Bocina Chrome
Google Home Max Bocina Chrome
Nest Mini Bocina Chrome
Nest Hub Display Chrome
Nest Hub Max Display Chrome
Nest Wifi Router Node.js
Punto Chrome

Entorno de ejecución

El entorno de ejecución de tu app de entrega local depende de tu dispositivo. La plataforma Local Home admite los siguientes entornos de ejecución:

  • Chrome: Tu app de entrega local se ejecuta en el contexto de un navegador Chrome window que ejecuta Chrome M80 o versiones posteriores con compatibilidad con ECMAScript versión ES2018.
  • Node.js: Tu app de entrega local se ejecuta como una secuencia de comandos dentro de un proceso de Node.js que ejecuta Node v10.x LTS o versiones posteriores con compatibilidad con ECMAScript versión ES2018.

Estructura del código fuente

Te recomendamos que combines tus dependencias en un solo archivo JavaScript con las configuraciones del empaquetador que proporciona el SDK de Local Home y empaquetes tu código fuente como una expresión de función invocada de inmediato (IIFE).

Ruta de implementación

Para usar el SDK de Local Home en tu integración de casa inteligente, debes realizar estas tareas:

1 Configura la configuración de análisis Configura Google Home Developer Console con los parámetros necesarios para que el Asistente descubra dispositivos que se puedan controlar de forma local.
2 Actualiza la respuesta de SYNC en tu entrega en la nube En tu entrega en la nube, modifica el controlador de solicitudes SYNC para admitir el campo otherDeviceIds que usa la plataforma para establecer una ruta de entrega local. En ese campo, especifica los IDs de los dispositivos que se pueden controlar de forma local.
3 Implementa la app de entrega local Usa el SDK de Local Home para crear una app de JavaScript que controlen los intents IDENTIFY, EXECUTE y QUERY. En el caso de los dispositivos proxy de concentrador o puente, también debes controlar el intent REACHABLE_DEVICES.
4 Cómo probar y depurar tu app Prueba tu integración (o autocertifícate) con el paquete de pruebas de Google Home.

Antes de comenzar