Las APIs de Google Home para Android proporcionan una superficie de API unificada para permitir que los desarrolladores interactúen con el estado de las entidades en la casa de un usuario. Estas entidades pueden describir dispositivos y la información que no es de dispositivos asociada con la estructura y las habitaciones de un usuario.
Las APIs de Home definen las siguientes entidades con las que puede interactuar un usuario:
- Las estructuras representan una casa que contiene habitaciones y dispositivos.
- Las habitaciones forman parte de una estructura y contienen dispositivos.
- Los dispositivos implementan atributos que contienen características, se ajustan a tipos, emiten eventos y responden a comandos.
- Las automatizaciones forman parte de una estructura y usan metadatos y dispositivos de la casa para automatizar tareas en ella.
En la figura 1, se ilustra esta arquitectura:
Los tipos de dispositivos de la API de Home pueden estar respaldados por Matter, un estándar abierto para el hogar inteligente, o ser un dispositivo Cloud-to-cloud en el ecosistema de Google Home. Algunos tipos de dispositivos pueden incorporar funcionalidades de ambos. Consulte Tipos de dispositivos compatibles en Android para obtener más información.
En Matter, la funcionalidad del dispositivo se agrupa por clústeres, que se representan en las API de Home como rasgos estándar de Matter. Las API de inicio admiten el conjunto estándar de clústeres Matter tal como se define en la especificación Matter actual.
En el ecosistema de Google Home, la funcionalidad de los dispositivos se agrupa por características de casa inteligente, que se representan en las APIs de Home como características de casa inteligente de Google. Las API de Home admiten el conjunto de características de hogar inteligente tal como se define en el programa Cloud-to-cloud.
También están disponibles otros rasgos, como los clústeres específicos del fabricante y los rasgos de la plataforma. Para obtener más información, consulte Modelo de datos en Android.
Ecosistema
El ecosistema de Google Home proporciona una base optimizada para crear, administrar, proteger e integrar experiencias de casa inteligente. En la figura 2, se muestra cómo funcionan todos los componentes en conjunto.
El ecosistema incluye el Google Automation Engine que almacena y ejecuta automations que proporcionan una forma de automatizar tareas y configuraciones de dispositivos en un hogar.
Las API de Home utilizan OAuth 2.0 para otorgar acceso a los dispositivos en la estructura. OAuth permite a un usuario otorgar permisos a una aplicación o servicio sin tener que revelar sus credenciales de inicio de sesión.
El Google Home Developer Console se usa para administrar todas las etapas de un proyecto de las APIs para la casa, desde la verificación de la marca hasta el desarrollo, las pruebas y la certificación, y, finalmente, el lanzamiento. Optimiza el proceso de desarrollo al tiempo que proporciona herramientas robustas y distribución a través del ecosistema de Google Home.
Idioma
Las API de Home para Android están escritas en Kotlin y proporcionan una interfaz idiomática de Kotlin que utiliza Flow para gestionar el estado y la suscripción. Esto ofrece una serie de ventajas con respecto a una API de suscripción estándar.
Recomendamos familiarizarse con la documentación de Kotlin sobre corrutinas, flujo y Jetpack Compose, si aún no lo ha hecho:
- Desarrolla aplicaciones Android con Kotlin
- Aprende Kotlin para Android
- Corrutinas de Kotlin en Android. Estos codelabs específicos pueden ser útiles:
- Flujos de Kotlin en Android y más específicamente, StateFlow.
- Estado y Jetpack Compose, específicamente la función
collectAsStateWithLifecycle(). Esta función gestiona automáticamente las suscripciones y cancelaciones de suscripción a los flujos en función de si la interfaz de usuario que muestra ese estado está realmente en primer plano o no. - Si está trabajando con la API de automatización, leer sobre constructores de seguridad de tipos de Kotlin es útil para comprender cómo funciona el DSL de automatización.
Identificadores de entidad
Cada entidad en las API de Home tiene un ID que representa su identificador principal. Este ID es un identificador único y estable que nunca cambiará durante la vida útil de la entidad. Este ID se puede utilizar para almacenar en caché objetos o comprobar la igualdad, ya que los metadatos de una entidad pueden cambiar.
Consulte la interfaz HasId para saber qué entidades tienen un ID.
Mapeo de terminología
Las entidades en las API de inicio se asignan a los conceptos Matter y Cloud-to-cloud de la siguiente manera:
| APIs de Home | Matter | Cloud-to-cloud |
|---|---|---|
| Rasgo | Clúster | Rasgo |
| Atributo | Atributo | Atributo, Estado |
| Comando | Comando | Comando |
| Evento | Evento | Respuesta de seguimiento, notificación |