Modelo de datos del dispositivo

Los dispositivos en Matter tienen un modelo de datos (DM) bien definido, que es un modelado jerárquico de las funciones de un dispositivo. En el nivel superior de esta jerarquía, existe un Dispositivo.

Dispositivos y extremos

Todos los dispositivos, incluidos los smartphones y los asistentes de la casa, se componen de nodos1. Un nodo es un recurso de identificación único y direccionable en una red que un usuario puede percibir como todo funcionalmente. La comunicación de red en Matter se origina y finaliza en un nodo.

Los nodos son una colección de Extremos. Cada extremo incluye un conjunto de atributos. Por ejemplo, un extremo puede relacionarse con una funcionalidad de iluminación, mientras que otro se relaciona con la detección de movimiento y otro se relaciona con las utilidades, como la OTA del dispositivo.

Jerarquía de dispositivos, nodos y extremos
Figura 1: Dispositivos, nodos y extremos

Roles de nodo

Un rol de nodo es un conjunto de comportamientos relacionados. Cada nodo puede tener una o más funciones. Los roles de nodo incluyen lo siguiente:

  • Comisionado: Es un nodo que realiza la puesta en servicio.
  • Controlador: Es un nodo que puede controlar uno o más nodos. Los ejemplos incluyen Google Home app (GHA), Google Assistant y Google Nest Hub (2nd gen). Algunos tipos de dispositivos, como el interruptor de luz de encendido/apagado, tienen la función de controlador.
  • Controlado: Es un nodo que uno o más nodos pueden controlar. La mayoría de los tipos de dispositivos pueden ser un controle, excepto algunos tipos de dispositivos que tienen la función de controlador, como el interruptor de luz de encendido/apagado. El interruptor de luz de encendido/apagado solo puede ser un controlador. No puede ser un controle.
  • Proveedor inalámbrico: Es un nodo que puede proporcionar actualizaciones de software inalámbricas.
  • Solicitante inalámbrico: Es un nodo que puede solicitar actualizaciones de software de OTA.

Clústeres

Dentro de un extremo, un nodo tiene uno o más clústeres. Estos son otro paso en la jerarquía del dispositivo, ya que agrupan funcionalidades específicas, como un clúster de encendido/apagado en un tomacorriente inteligente o un clúster de control de nivel en un extremo de luz atenuable.

Un nodo también puede tener varios extremos, cada uno de los cuales crea una instancia con la misma funcionalidad. Por ejemplo, una lámpara puede exponer el control independiente de luces individuales, o un multitomas podría exponer el control de enchufes individuales.

Atributos

En el último nivel, veremos los atributos, que son los estados que mantiene el nodo, como el atributo de nivel actual de un clúster de control de nivel. Los atributos pueden definirse como diferentes tipos de datos, como uint8, cadenas o arrays.

Jerarquía de nodos, extremos, atributos y comandos
Figura 2: Nodos, extremos, atributos y comandos

Comandos

Además de los atributos, los clústeres también tienen comandos, que son acciones que se pueden realizar. Son el equivalente en el DM de Matter de una llamada de procedimiento remoto. Los comandos se parecen a los verbos, como trabar la puerta de un clúster de la cerradura de la puerta. Los comandos pueden generar respuestas y resultados; en Matter, esas respuestas también se definen como comandos, que van en la dirección inversa.

Eventos

Por último, los clústeres también pueden tener eventos, que se pueden considerar como un registro de las transiciones de estado anteriores. Mientras que los atributos representan los estados actuales, los eventos son un diario del pasado e incluyen un contador que aumenta de forma monótona, una marca de tiempo y una prioridad. Permiten capturar transiciones de estado y modelar datos que no se logran fácilmente con los atributos.

Dispositivo de muestra completo
Figura 3: Una muestra de la jerarquía del modelo de interacción de dispositivos Matter

El Endpoint 0 está reservado para los clústeres de utilidades. Los clústeres de utilidades son clústeres específicos que abarcan la funcionalidad de mantenimiento en un extremo, como el descubrimiento, la asignación de direcciones, el diagnóstico y la actualización de software. Por otro lado, los clústeres de aplicaciones admiten acciones principales, como el encendido/apagado o la medición de temperatura.

Tipos de dispositivo

En conjunto, ¿qué combinaciones de clústeres deben incluirse cuando el fabricante del dispositivo planifica un dispositivo nuevo?

La especificación Matter requiere que el dispositivo implemente o extienda uno o más Tipos de dispositivo. Un tipo de dispositivo es una colección de clústeres obligatorios y opcionales que definen los atributos de nivel superior de un dispositivo físico, como la luz regulable, la cerradura o el reproductor de video.

Los Tipos de dispositivo no se especifican en el documento principal de la especificación Matter, sino en un documento adjunto: la biblioteca de dispositivos. De manera similar, todos los clústeres de aplicaciones se definen en la Biblioteca de clústeres de aplicaciones. Puedes encontrar estos tres documentos en el sitio web para miembros de Connectivity Standards Alliance (Alliance).

Cada extremo que implementa un tipo de dispositivo debe implementar los clústeres obligatorios que definen ese tipo de dispositivo. Además de los clústeres obligatorios, el extremo puede implementar clústeres adicionales, incluidos uno o más clústeres opcionales del tipo de dispositivo, o incluso clústeres que no forman parte del tipo de dispositivo.

Clientes y servidores

Los clústeres pueden ser un clúster de cliente o un clúster de servidor. Mientras que un servidor es con estado y contiene atributos, eventos y comandos, un cliente no tiene estado y su responsabilidad es iniciar interacciones con un clúster de servidor remoto para realizar las siguientes acciones:

  • lee y escribe en sus atributos remotos.
  • lecturas de sus eventos remotos.
  • invocación de sus comandos remotos.

Si bien la DM es jerárquica dentro de un nodo, la relación entre los nodos no lo es. Los nodos en Matter no tienen relaciones verticales de controlador/periférico ni líder/seguidor. Por el contrario, la relación es horizontal: cualquier clúster puede ser Server o Client. Por lo tanto, un nodo puede ser servidor y cliente con respecto a diferentes clústeres y funcionalidades.

Por ejemplo, es posible que tengamos dos lámparas de mesa: Nodo A y Nodo B. Ambos nodos implementan un tipo de dispositivo con luz de encendido/apagado. Este tipo de dispositivo incluye un clúster de servidor de encendido/apagado que controla sus respectivas salidas de luz física.

Sin embargo, al igual que lo hacen las lámparas de mesa típicas, nuestros dispositivos físicos también incluirán un interruptor de luz de encendido/apagado para sus interruptores de encendido y apagado locales. Este tipo de dispositivo debe implementar un clúster de activación o desactivación de cliente para poder controlar los clústeres de servidores.

Lámparas que implementan la luz de encendido/apagado y el interruptor de luz
Figura 4: Clústeres de cliente y servidor

En este ejemplo, el clúster de cliente de encendido/apagado en el nodo A cambia los atributos del clúster de servidor de encendido y apagado en el nodo A y el nodo B, mientras que el clúster de cliente del nodo B solo cambia el clúster de servidor en el nodo B.

En la siguiente sección, detallaremos cómo interactúan los clústeres de cliente y de servidor: el modelo de interacción.

Clúster de descriptores

Como su nombre lo indica, el servidor del clúster de descriptores proporciona información de introspección. Describe el extremo y enumera los siguientes elementos:

  • clústeres de servidores.
  • Clústeres de clientes
  • Tipos de dispositivos.
  • en los extremos adicionales, conocidos como partes.

Cada tipo de dispositivo requiere la implementación de clústeres descriptores. El tipo de dispositivo raíz se define en el extremo 0. La lectura de su clúster de descriptores le proporcionará al cliente la visibilidad para recorrer el árbol completo de extremos disponibles y realizar las operaciones aplicables.

El comisionado o el dispositivo de control, como un teléfono o un concentrador, pueden usar la información que se encuentra en el clúster de descriptores para modelar el Dispositivo (luz, interruptor, bomba, termostato) y las funciones específicas implementadas por esa instancia particular del Dispositivo, con lo que se muestra la IU correcta al usuario.

Clústeres de servidores

El atributo ServerList enumera los servidores del clúster en el extremo.

Clústeres de clientes

El atributo ClientList enumera los clientes del clúster en el extremo.

Lista de tipos de dispositivos

El atributo DeviceTypeList es una lista de los tipos de dispositivos que admite el extremo, junto con sus respectivas revisiones. Debe contener al menos un tipo de dispositivo.

Lista de piezas

PartsList contiene la lista de extremos que se usan para implementar este tipo de dispositivo.

El PartsList del extremo 0 (nodo raíz) contiene todos los extremos del dispositivo, además de él mismo (extremo 0).

El PartsList de otros extremos generalmente estará vacío. Por ejemplo, un sensor de temperatura exige un clúster de servidor de medición de temperatura y nada más.

Otros tipos de dispositivo pueden estar compuestos por una estructura de árbol de más de una instancia de tipo de dispositivo. Por ejemplo, un tipo de dispositivo reproductor de video puede constar de TV, reproductor de video, bocina y diferentes tipos de dispositivo de app de contenido, cada uno en un extremo diferente.


  1. La especificación Matter determina que un dispositivo puede tener varios nodos. Por ejemplo, los smartphones pueden tener varias apps, y cada app es un nodo diferente. A los fines de este manual, todos los dispositivos contendrán un solo nodo. Se espera que la mayoría de los dispositivos físicos sigan este patrón.