Los dispositivos en Matter tienen un modelo de datos (DM) bien definido, que es un modelo jerárquico de las funciones de un dispositivo. En el nivel superior de esta jerarquía, hay un Dispositivo.
Dispositivos y extremos
Todos los dispositivos, incluidos los smartphones y los asistentes domésticos, se componen de nodos1. Un nodo es un recurso único identificable y direccionable en una red que un usuario puede percibir como funcional en su totalidad. La comunicación de red en Matter se origina y finaliza en un nodo.
Los nodos son una colección de Endpoints. Cada extremo contiene un conjunto de atributos. Por ejemplo, un extremo podría relacionarse con una funcionalidad de iluminación, mientras que otro se relaciona con detección de movimiento y otra con utilidades, como la inalámbrica del dispositivo.

Funciones de nodo
Un rol de nodo es un conjunto de comportamientos relacionados. Cada nodo puede tener una o más funciones. Se incluyen las siguientes funciones de nodo:
- Comisionador: Un nodo que realiza la puesta en marcha.
- Controlador: 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 y apagado, tienen la función de controlador.
- Controlado: Un nodo que puede controlarse mediante uno o más nodos. La mayoría de los tipos de dispositivos pueden ser Controlee, excepto algunos que tienen la función de controlador, como el interruptor de luz de encendido y apagado. El interruptor de encendido y apagado solo puede ser un controlador. No puede ser un destinatario.
- Proveedor inalámbrico: Es un nodo que puede proporcionar actualizaciones de software inalámbricas.
- Solicitador inalámbrico: un nodo que puede solicitar actualizaciones de software inalámbricas.
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 de encendido/apagado en un tomacorriente inteligente o un clúster de control de nivel en un extremo de luz regulable.
Un nodo también puede tener varios extremos, y cada uno crea una instancia de la misma funcionalidad. Por ejemplo, una lámpara puede exponer el control independiente de luces individuales o un enchufe múltiple.
Atributos
En el último nivel, encontraremos 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, también tienen comandos, que son acciones que se pueden realizar. Son el equivalente en el MD de Matter de una llamada de procedimiento remoto. Los comandos son similares a verb, como puertas en un clúster Bloqueo de puerta. Los comandos pueden generar respuestas y resultados. En Matter, esas respuestas también se definen como comandos y van en la dirección inversa.
Events
Por último, los clústeres también pueden tener eventos, que se pueden considerar como un registro de transiciones de estado pasadas. Mientras que los atributos representan los estados actuales, los eventos son un diario del pasado e incluyen un contador que aumenta monótonamente, una marca de tiempo y una prioridad. Habilitan la captura de transiciones de estado y un modelado de datos que no se logra con los atributos.

El extremo 0 está reservado para clústeres de utilidad. Los clústeres de utilidad son clústeres específicos que incluyen una 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 aplicación admiten acciones principales, como activar y desactivar, o medición de temperatura.
Tipos de dispositivos
En conjunto, ¿qué combinaciones de clústeres se deben incluir 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 un conjunto 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 regulable, bloqueo de puerta o reproductor de video.
Si bien los extremos tienen un requisito débil para implementar una funcionalidad cohesiva, 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 atenuador de color o un sensor de luz.
Los tipos de dispositivos no se especifican en el documento principal de 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 de los miembros de la CSA.
Clientes y servidores
Los clústeres pueden ser clústeres de cliente o de servidor. Si bien un servidor es con estado y posee atributos, eventos y comandos, el cliente tiene un estado y su responsabilidad es iniciar interacciones con un clúster de servidor remoto para que realice lo siguiente:
- reads y writes para 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 ellos no. Los nodos en Matter no tienen relaciones de controlador/periférico vertical/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ísica.
Pero, como lo hacen las lámparas de mesa típicas, nuestros dispositivos físicos también incluirán un tipo de dispositivo interruptor de luz de encendido/apagado para sus interruptores de encendido/apagado local. Este tipo de dispositivo debe implementar un clúster de cliente activado/desactivado para que pueda controlar los clústeres del servidor.

En esta muestra, 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 cliente del nodo B solo cambia el clúster del 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 del descriptor
Como su nombre lo indica, el servidor de clústeres del descriptor proporciona información de introspección. En él, se describe el extremo que enumera su:
- 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 descriptor le proporcionará al cliente la visibilidad para recorrer el árbol completo de extremos disponibles y realizar operaciones aplicables.
El comisionador o el dispositivo de control, como un teléfono o un concentrador, puede usar la información que se encuentra en el clúster del descriptor para modelar el Dispositivo (luz, interruptor, bomba, termostato) y las funciones específicas que implementa esa instancia en particular del Dispositivo, y mostrarle la IU correcta al usuario.
Clústeres de servidores
El atributo ServerList
enumera los servidores de clústeres en el extremo.
Clústeres de clientes
El atributo ClientList
enumera los clientes de 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 tener al menos un tipo de dispositivo.
Lista de piezas
PartsList
contiene la lista de extremos que se usa para implementar este tipo de dispositivo.
El PartsList
del extremo 0 (nodo raíz) contiene todos los extremos del dispositivo, excepto el mismo (extremo 0).
El resto de los extremos de PartsList
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 de más de una instancia de tipo de dispositivo. Por ejemplo, un tipo de dispositivo para reproductores de video puede constar de TV, reproductores de video, bocinas 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. 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. ↩