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, hay 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 identificable de manera inequívoca y direccionable en una red que un usuario puede percibir como totalmente funcional. La comunicación de red en Matter se origina y termina 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 ocupa de utilidades, como la actualización OTA del dispositivo.
Roles de los nodos
Un rol de nodo es un conjunto de comportamientos relacionados. Cada nodo puede tener uno o más roles. Entre los roles de nodos, se incluyen los siguientes:
- Comisionado: Es un nodo que realiza la comisión.
- Controlador: Es un nodo que puede controlar uno o más nodos. Entre los ejemplos, se 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 el rol de controlador.
- Controlee: Es un nodo que puede ser controlado por uno o más nodos. La mayoría de los tipos de dispositivos pueden ser controlados, excepto algunos que tienen el rol 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 elemento controlado.
- Proveedor OTA: Es un nodo que puede proporcionar actualizaciones de software OTA.
- Solicitante de OTA: Es un nodo que puede solicitar actualizaciones de software OTA.
Clústeres
Dentro de un extremo, un nodo tiene uno o más clústeres. Estos son otro paso en la jerarquía de dispositivos, ya que agrupan funciones específicas, como un clúster de encendido/apagado en un enchufe inteligente o un clúster de control de nivel en un extremo de luz regulable.
Un nodo también puede tener varios extremos, cada uno de los cuales crea una instancia de la misma funcionalidad. Por ejemplo, un accesorio de iluminación puede exponer el control independiente de luces individuales, o una regleta puede exponer el control de enchufes individuales.
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, cadenas o arrays.
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 son como verbos, como trabar puerta en un clúster de cerradura de puerta. 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 un registro de transiciones de estado anteriores. Mientras que los atributos representan los estados actuales, los eventos son un registro del pasado y, además, incluyen un contador que aumenta de forma monótona, 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 los atributos.
El extremo 0 está reservado para los clústeres de servicios públicos. Los clústeres de utilidad son clústeres específicos que encierran la funcionalidad de reparación 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 encendido/apagado o medición de temperatura.
Tipos de dispositivos
En total, ¿qué combinaciones de clústeres se deben incluir cuando un fabricante de dispositivos planea un dispositivo nuevo?
La especificación Matter requiere que el dispositivo implemente o extienda uno o más tipos de dispositivos. 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 Luz regulable, Llave de la puerta o Reproductor de video.
El documento principal de especificaciones de Matter no especifica los tipos de dispositivos, sino un documento complementario: la biblioteca de dispositivos. Del mismo modo, 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 implemente 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 de los 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 es sin estado y su responsabilidad es iniciar interacciones con un clúster de servidores remoto, por lo que realiza las siguientes acciones:
- Lee desde sus atributos remotos y escribe en ellos.
- lee 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 de líder/seguidor. Por el contrario, la relación es horizontal: cualquier clúster puede ser servidor o cliente. Por lo tanto, un nodo puede ser servidor y cliente en relación con diferentes clústeres y funciones.
Por ejemplo, podemos tener dos lámparas de mesa: Nodo A y Nodo B. Ambos nodos implementan un tipo de dispositivo On/Off Light. Este tipo de dispositivo incluye un clúster de servidor de encendido/apagado que controla sus respectivas salidas de luz físicas.
Sin embargo, al igual que 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 locales. Este tipo de dispositivo debe implementar un clúster de cliente de encendido/apagado para que pueda controlar los clústeres de servidores.
En este ejemplo, el clúster de clientes de encendido/apagado en el nodo A cambia los atributos del clúster de servidores de encendido/apagado en el nodo A y el nodo B, mientras que el clúster de clientes del nodo B solo cambia el clúster de servidores en el nodo B.
En la siguiente sección, detallaremos cómo interactúan los clústeres de clientes y servidores: el modelo de interacción.
Clúster de descriptores
Como su nombre lo indica, el servidor de clústeres de descriptores proporciona información de introspección. Describe el extremo enumerando lo siguiente:
- Clústeres de servidores
- Clústeres de clientes
- Tipos de dispositivos
- Extremos adicionales, conocidos como partes
Cada tipo de dispositivo requiere la implementación de clústeres de 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 que implementa esa instancia en particular del dispositivo, y mostrarle al usuario la IU correcta.
Clústeres de servidores
El atributo ServerList
enumera los servidores de 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 tipos de dispositivos compatibles con 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, excepto él mismo (extremo 0).
Por lo general, el PartsList
de otros extremos estará vacío. Por ejemplo, un Temperature Sensor requiere un clúster de servidor de medición de temperatura y nada más.
Otros tipos de dispositivos pueden estar compuestos en una estructura de árbol de más de una instancia de DeviceType. Por ejemplo, un tipo de dispositivo de reproductor de video puede estar compuesto por una TV, un reproductor de video, una bocina 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 efectos de esta introducción, todos los dispositivos contendrán un solo nodo. Se espera que la mayoría de los dispositivos físicos sigan este patrón. ↩