Modelo de datos en iOS

Las APIs de Home para iOS 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 de casa inteligente subyacente (como Matter o Cloud-to-cloud), y proporciona una plataforma de API común para crear experiencias del usuario para desarrolladores de apps para dispositivos móviles y de smart home.

Tipos de dispositivos

Los tipos de dispositivos que se presentan en las APIs de Home son una unificación de los modelos de datos de 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 de Matter y los rasgos de Cloud-to-cloud, y se presentan en un formato común similar al de los clústeres de Matter. En las APIs de Home, los atributos derivados de Matter se denominan atributos, no clústeres.

Por lo tanto, los tipos de dispositivos y los atributos de las APIs de Home están diseñados para ser Matter primero. Un tipo o rasgo de dispositivo Matter tiene prioridad sobre un análogo Cloud-to-cloud.

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

Rasgos

Se generan versiones de Swift de los rasgos para usarlos en las APIs de Home y contienen funciones adicionales específicas de las APIs de Home (que no se encuentran en Matter ni Cloud-to-cloud). Por ejemplo, cada rasgo tiene métodos para verificar si un rasgo 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 tengan las mismas funciones.

Para importar rasgos y tipos de dispositivos, importa el módulo GoogleHomeTypes a tu aplicación:

import GoogleHomeTypes

Además, puedes usar typealias para los nombres de rasgos y tipos de dispositivos para acortar el código y evitar la repetición de espacios de nombres:

import GoogleHomeTypes

typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType

La mayoría de los atributos son compatibles con las automatizaciones, y algunos solo están disponibles para las automatizaciones. Para obtener más detalles, consulta Compatibilidad con los atributos de la API de Automation en Android.

Composición por tipo de dispositivo

Las APIs de Home admiten la mayoría de los clústeres de aplicaciones de Matter como atributos en el modelo de datos. Los clústeres de configuración de bajo nivel que no ofrecen utilidad directa para los usuarios finales, como Binding, no se exponen directamente a través de las APIs de Home. Consulta las APIs de Structure para obtener más información sobre los grupos de dispositivos.

Los atributos derivados de los atributos de casa inteligente de Cloud-to-cloud suelen tener el mismo nombre entre Cloud-to-cloud y las APIs de Home, como en el ejemplo de OpenCloseTrait. Otros se representan como extensiones de los atributos de Matter, creados 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 FanDeviceType se compone de ambos y presenta tres rasgos:

  • El rasgo Matter de IdentifyTrait proporciona todas las funciones de Matter de IdentifyTrait.
  • El rasgo Matter de FanControlTrait proporciona todas las funciones de Matter de FanControlTrait.
  • El atributo ExtendedFanControlTrait de Google proporciona toda la funcionalidad del smart home FanSpeedTrait de Google que no abarca el atributo FanControlTrait Matter.

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

Grupos de dispositivos

Un grupo de dispositivos representa una colección de dispositivos definida por el usuario dentro de una sola estructura. La membresía del grupo se conserva en los servicios de Google y es visible para otros miembros de la estructura y otras apps con acceso a la estructura.

Los grupos de dispositivos se representan con la entidad DeviceGroup, que es distinta de HomeDevice. Cada HomeDevice enumera los grupos a los que pertenece a través de su GroupMembershipTrait, de modo que tu app pueda inspeccionar las membresías de los grupos y, además, iterar directamente en los dispositivos de los miembros de un grupo. Además, DeviceGroup cumple con el protocolo HasParts para exponer los tipos de dispositivos que admiten sus dispositivos miembros cuando se orienta al grupo en su totalidad.

Consulta las APIs de Structure y Controla un grupo de dispositivos para obtener más información sobre los grupos de dispositivos.