Dispositivos en Matter have a well-defined data model (DM), which is a hierarchical modeling of a Device's features. At the top level of this hierarchy there is a Device.
Dispositivos y extremos
Todos los dispositivos, incluidos smartphones y asistentes en el hogar, están compuestos por nodos1. Un nodo es un recurso único identificable y direccionable en una red que un usuario puede percibir en su totalidad. La comunicación de red en Matter se origina y termina en un nodo.
Los nodos son una colección de Endpoints. Cada extremo incluye un conjunto de atributos. Por ejemplo, un extremo podría relacionarse con una funcionalidad de iluminación, mientras que otro se relaciona con la detección de movimiento y otra con utilidades, como la actualización inalámbrica de dispositivo.

Clústeres
En un Extremo, un nodo tiene uno o más Clústeres. Estos son otro paso en la jerarquía de dispositivos, ya que agrupan funcionalidades específicas, como un clúster activado/desactivado en un enchufe 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 de la misma funcionalidad. Por ejemplo, una instalación de luz puede exponer el control independiente de luces individuales, o bien un multitomas podría exponer el control de los tomacorrientes individuales.
Atributos
En el último nivel, encontrará los atributos, que son estados que mantiene el nodo, como el atributo nivel actual de un clúster de control de nivel. Los atributos se pueden definir como diferentes tipos de datos, como uint8, strings o arreglos.

Comandos
Además de los atributos, los clústeres también tienen comandos, que son acciones que se pueden realizar. Son el equivalente al MD de Matter de una llamada de procedimiento remoto. Los comandos son similares a un verbo, como lock puertas en un clúster de Door Lock. Los comandos pueden generar respuestas y resultados; en Matter, esas respuestas también se definen como comandos, en la dirección inversa.
Eventos
Por último, los clústeres también pueden tener Eventos, que se pueden considerar como un registro de transiciones de estado pasados. Mientras que los atributos representan los estados actuales, los eventos son un diario del pasado, que incluyen un contador que aumenta monótonamente, una marca de tiempo y una prioridad. Permiten capturar transiciones de estado, así como el modelado de datos que no se logra fácilmente con atributos.

El Endpoint 0 está reservado para los Clústeres de utilidad. Los clústeres de utilidad son clústeres específicos que incluyen 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 activar y desactivar, o medir la temperatura.
Tipos de dispositivos
En conjunto, ¿qué combinaciones de clústeres deben incluirse cuando un fabricante de dispositivos planifica un dispositivo nuevo? Si bien se puede usar cualquier combinación de clústeres, la práctica general es implementar y extender algunos tipos de dispositivos. Un tipo de dispositivo es una colección de clústeres obligatorios y opcionales en uno o más extremos que definen los atributos de nivel superior de un dispositivo físico, como Atenuación de luz, Cerradura de puerta o Reproductor de video.
Si bien los extremos tienen un requisito débil que establece que deben implementar una funcionalidad coherente, los tipos de dispositivos son un requisito importante. Si un nodo implementa un tipo de dispositivo, debe incluir un conjunto de clústeres en uno o más extremos para definir un comportamiento distinto y cohesivo, como un interruptor de atenuación de color o un sensor de luz.
Los tipos de dispositivos no se especifican en el documento principal de la especificación Matter, sino en un documento complementario: la biblioteca de dispositivos. De manera similar, todos los clústeres de aplicaciones se definen en la biblioteca de clústeres de aplicaciones. Estos tres documentos se pueden encontrar en el sitio web de los miembros de la CSA.
Clientes y servidores
Los clústeres pueden ser un Clúster de cliente o un Clúster de servidor. Mientras un servidor tiene estado y contiene atributos, eventos y comandos, un cliente tiene un estado sin estado y su responsabilidad es iniciar interacciones con un clúster de servidor remoto. Para ello, realiza lo siguiente:
- reads y writes en sus Atributos remotos.
- reads de sus eventos remotos.
- invocación de sus comandos remotos.
Si bien el DM es jerárquico 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 de 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 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ísicas.
Sin embargo, como 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 locales de encendido y apagado. Este tipo de dispositivo debe implementar un clúster de cliente de On/Off para que pueda controlar los clústeres del servidor.

En este ejemplo, el clúster de cliente de activación/desactivación del nodo A cambia los atributos del clúster de servidor de encendido/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 descriptor
Como su nombre lo indica, el servidor de clústeres de Descriptor proporciona información de introspección. Describe el extremo que enumera lo siguiente:
- Clústeres de servidores.
- Clústeres de clientes.
- Tipos de dispositivos.
- Extremos adicionales, conocidos como piezas.
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 del clúster de descriptores le proporcionará al cliente la visibilidad para recorrer el árbol completo de Endpoints disponible y realizar operaciones aplicables.
El Comisionado o el Dispositivo de Control, como un teléfono o un concentrador, puede usar la información que se encuentra en el Clúster de Descriptor para modelar el Dispositivo (luz, interruptor, bomba y termostato) y funciones específicas implementadas por esa instancia particular del Dispositivo, y mostrar la IU correcta al usuario.
Clústeres del servidor
El atributo ServerList
enumera los servidores de clústeres 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 tipos de dispositivos compatibles con el extremo, junto con sus respectivas revisiones. Debe contener al menos un tipo de dispositivo.
Lista de repuestos
PartsList
contiene la lista de extremos que se usó para implementar este tipo de dispositivo.
El PartsList
del extremo 0 (nodo raíz) contiene todos los extremos del dispositivo, además de él (extremo 0).
El PartsList
de los demás extremos suele 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 dispositivos pueden estar compuestos por una estructura de árbol compuesta por más de una instancia de tipo de dispositivo. Por ejemplo, un tipo de dispositivo para reproductor de video puede estar compuesto por TV, reproductor de video, altavoces y diferentes tipos de dispositivos de apps de contenido, cada uno en un extremo diferente.
-
La especificación Matter determina que un dispositivo puede tener varios nodos. Por ejemplo, los smartphones pueden tener varias apps, cada una de las cuales es un nodo diferente. Para 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. ↩