Modelo de datos en Android

Las APIs de Home para Android presentan todos los dispositivos del ecosistema de Google Home en un modelo de datos unificado. Este modelo de datos abarca todos los tipos de dispositivos (de Google Nest o de fabricantes externos), independientemente de la tecnología subyacente de la casa inteligente (como Matter o Cloud-to-cloud), y proporciona una superficie de API común para crear experiencias del usuario para los desarrolladores de smart home y de apps para dispositivos móviles.

Tipos de dispositivos

Los tipos de dispositivos que se presentan en las APIs de Home son una unificación de los modelos de datos Matter y Cloud-to-cloud. Algunos se derivan directamente de Matter, otros son una extensión de los tipos de dispositivos de Matter y otros se derivan de Cloud-to-cloud.

Los tipos de dispositivos contienen rasgos que se usan para controlar y administrar dispositivos. Al igual que los tipos de dispositivos, los rasgos se derivan de los clústeres Matter y los rasgos Cloud-to-cloud, y se presentan en un formato común similar al de los clústeres Matter. En las APIs para la casa, los rasgos derivados de Matter se denominan rasgos, no clústeres.

Por lo tanto, los tipos y las características de dispositivos en las APIs de Home están diseñados para ser Matter primero. Un tipo o rasgo de dispositivo Matter tiene prioridad sobre un dispositivo analógico Cloud-to-cloud.

Consulta Tipos de dispositivos compatibles en Android para ver una lista de los tipos de dispositivos y sus características.

Rasgos

Las versiones de Kotlin de los rasgos se generan para su uso en las APIs de Home y contienen funciones adicionales específicas de las APIs de Home (no se encuentran en Matter ni en Cloud-to-cloud). Por ejemplo, cada rasgo tiene métodos para verificar si admite un atributo o comando específico. Esto es útil para determinar si se puede leer el estado o realizar ciertas acciones en el dispositivo de un usuario, ya que no se espera que todos los dispositivos de un tipo de dispositivo tengan las mismas funciones.

Cada rasgo se encuentra en su propio espacio de nombres y debe importarse de forma individual para su uso.

Por ejemplo, para usar el rasgo Matter On/Off y el tipo de dispositivo On/Off Plug-in Unit, importa los siguientes paquetes a tu aplicación:

import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice

Para un tipo de dispositivo de cochera (de la casa inteligente de Google), incluye una combinación de Matter y rasgos de Google:

import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice

Android Studio tiene la función de autocompletar y, a menudo, controlará los nombres completos de los paquetes por ti cuando agregues líneas import a los archivos fuente de tu proyecto. Sin embargo, los nombres de los paquetes no son coherentes en todos los tipos y rasgos de dispositivos. Consulta la referencia para verificar el nombre de paquete correcto para cada DeviceType o Trait.

Los rasgos también se admiten para su uso con las automatizaciones, pero pueden ser limitados, y algunos rasgos solo están disponibles para las automatizaciones. Para obtener una lista, consulta Compatibilidad con los rasgos de la API de Automation en Android.

Composición del tipo de dispositivo

Las APIs de Home admiten la mayoría de los clústeres de aplicaciones Matter como rasgos en el modelo de datos. Los rasgos que no corresponden al control o los estados de los dispositivos, y que no ofrecen ninguna utilidad para los usuarios finales, como Binding y Groups, no se exponen a través de las APIs de Home.

Por lo general, los rasgos derivados de los rasgos de la casa inteligente de Cloud-to-cloud tienen el mismo nombre entre Cloud-to-cloud y las APIs de Home, como en el ejemplo de OpenClose. Otros se representan como extensiones de rasgos de Matter, creadas con extensiones específicas del fabricante de Matter. Estos rasgos cierran la brecha para un rasgo de smart home en el que la funcionalidad se divide entre el SDK de Matter y el ecosistema de Google Home. Un ejemplo específico de esto son los tipos de dispositivos Google* que provienen de Cloud-to-cloud, pero que aún no tienen análogos de Matter.

Los tipos de dispositivos se componen de características de una o ambas fuentes, Matter o Cloud-to-cloud.

Por ejemplo, el tipo de dispositivo Ventilador se compone de ambos y presenta tres rasgos:

  • El rasgo Identify Matter proporciona toda la funcionalidad de Matter Identify.
  • El rasgo FanControl Matter proporciona toda la funcionalidad del rasgo Matter FanControl.
  • El rasgo ExtendedFanControl de Google proporciona toda la funcionalidad del rasgo smart home FanSpeed de Google que no se incluye en el rasgo FanControl Matter.

Este tipo de composición de rasgos proporciona un modelo flexible para la funcionalidad completa del tipo de dispositivo, ya que abstrae los modelos de datos smart home subyacentes.