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 la casa inteligente, o ser un dispositivo Cloud-to-cloud en el ecosistema de Google Home. Algunos tipos de dispositivos pueden incorporar funcionalidad de ambos. Consulta Tipos de dispositivos compatibles con Android 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 rasgos estándar de Matter. Las APIs de Home admiten el conjunto estándar de clústeres de Matter, tal como se define en la especificación de Matter actual.
En el ecosistema de Google Home, la funcionalidad de los dispositivos se agrupa por características de la casa inteligente, que se representan en las APIs de Home como características de la casa inteligente de Google. Las APIs de Home admiten el conjunto de rasgos de casa inteligente definidos 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, consulta Modelo de datos en Android.
Idioma
Las APIs de Home para Android 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 en comparación con una API de suscripciones 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 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á realmente en primer plano o no. - Si trabajas con la API de Automation, leer sobre los compiladores de Kotlin con seguridad de tipos es útil para comprender cómo funciona el DSL de Automation.
Identificadores de entidades
Cada entidad en las APIs para la casa 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 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 de 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 |