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 fabricantes externos), independientemente de la tecnología subyacente de la casa inteligente (como Matter o Cloud-to-cloud), y proporciona una plataforma de API común para crear experiencias del usuario para 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, algunos son una extensión de los tipos de dispositivos Matter y otros se derivan de Cloud-to-cloud.

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

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

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

Traits

Las versiones de Swift de los atributos se generan para su uso 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 atributo tiene métodos para verificar si admite un atributo o comando específico. Esto es útil cuando se determina si se puede realizar la lectura del estado o 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 atributos y tipos de dispositivos, importa el módulo GoogleHomeTypes a tu aplicación:

import GoogleHomeTypes

Además, puedes usar typealias para los nombres de los tipos de atributos y 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

Los atributos también se pueden usar con automatizaciones, pero pueden ser limitados, y algunos solo están disponibles para las automatizaciones. Para obtener una lista, consulta Compatibilidad con atributos de la API de Automation en iOS.

Composición del tipo de dispositivo

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

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 rasgos Matter, creados con extensiones específicas del fabricante Matter. Estos atributos cierran la brecha para un atributo 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 atributos de una o ambas fuentes, Matter o Cloud-to-cloud.

Por ejemplo, FanDeviceType se compone de ambos y tiene tres características:

  • El atributo Matter IdentifyTrait proporciona todas las funciones de IdentifyTrait Matter.
  • El atributo Matter FanControlTrait proporciona todas las funciones de FanControlTrait Matter.
  • El atributo Google ExtendedFanControlTrait proporciona todas las funciones de FanSpeedTrait de Google smart home que no cubre el atributo Matter de FanControlTrait.

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