Las APIs de Google Home para Android proporcionan una plataforma 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 datos no relacionados con dispositivos asociados con la estructura y las habitaciones de un usuario.
Las APIs de Home definen las siguientes entidades con las que un usuario puede interactuar:
- 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 atributos, se ajustan a los tipos, emiten eventos y responden a los 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 la casa inteligente, o ser un dispositivo Cloud-to-cloud en el ecosistema de Google Home. Algunos tipos de dispositivos pueden incorporar funciones de ambos. Consulta Tipos de dispositivos compatibles para obtener más información.
En Matter, la funcionalidad del dispositivo se agrupa por clústeres, que se representan en las APIs de Home como atributos estándar de Matter. Las APIs de Home admiten el conjunto estándar de clústeres de Matter como se define en la especificación actual de Matter.
En el ecosistema de Google Home, la funcionalidad de los dispositivos se agrupa según los atributos de la casa inteligente, que se representan en las APIs de Home como atributos de la casa inteligente de Google. Las APIs de Home admiten el conjunto de atributos de casa inteligente como se define en el programa Cloud-to-cloud.
También están disponibles otros atributos, como los clústeres específicos del fabricante y los atributos de la plataforma. Para obtener más información, consulta Modelo de datos.
Idioma
Las APIs de Home están escritas en Kotlin y proporcionan una interfaz idiomática de Kotlin que usa Flow para administrar el estado y la suscripción. Esto proporciona varias ventajas sobre una API de suscripción estándar.
Si aún no lo hiciste, te recomendamos que te familiarices con la documentación de Kotlin sobre corrutinas, flujo y Jetpack Compose:
- Desarrolla apps para Android con Kotlin
- Aprende a usar 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.
- El estado y Jetpack Compose, específicamente la función
collectAsStateWithLifecycle()
. Esta función administra automáticamente la suscripción y la cancelación de la suscripción a los flujos según si la IU que muestra ese estado está en primer plano o no. - Si trabajas con la API de Automation, es útil leer sobre los compiladores de acceso seguro a tipos de Kotlin para comprender cómo funciona el DSL de Automation.
Identificadores de entidades
Cada entidad de las APIs 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 usar para almacenar en caché objetos o verificar la igualdad, ya que los metadatos de una entidad pueden cambiar.
Consulta la interfaz de HasId
para saber qué entidades tienen un ID.
Asignación de terminología
Las entidades de las APIs de Home 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 |