Les appareils dans Matter disposent d'un modèle de données (DM) bien défini, qui est une modélisation hiérarchique des fonctionnalités d'un appareil. Au niveau supérieur de cette hiérarchie se trouve un Device (Appareil).
Appareils et points de terminaison
Tous les appareils, y compris les smartphones et les assistants à domicile, sont composés de nœuds1. Un nœud est une ressource unique identifiable et adressable dans un réseau qu'un utilisateur peut percevoir comme un tout fonctionnel. La communication réseau dans Matter commence et s'arrête au niveau d'un nœud.
Les nœuds sont un ensemble de points de terminaison. Chaque point de terminaison contient un ensemble de fonctionnalités. Par exemple, un point de terminaison peut concerner une fonctionnalité d'éclairage, tandis qu'un autre concerne la détection de mouvement et un autre les utilitaires tels que la mise à jour OTA de l'appareil.
Rôles de nœud
Un rôle de nœud est un ensemble de comportements associés. Chaque nœud peut avoir un ou plusieurs rôles. Les rôles de nœud incluent les suivants:
- Commissioner (Élément de mise en service) : nœud qui effectue la mise en service.
- Contrôleur: nœud pouvant contrôler un ou plusieurs nœuds. Par exemple, Google Home app (GHA), Google Assistant et Google Nest Hub (2nd gen). Certains types d'appareils, tels que le contacteur marche/arrêt, ont le rôle de contrôleur.
- Nœud contrôlé: nœud pouvant être contrôlé par un ou plusieurs nœuds. La plupart des types d'appareils peuvent être des appareils contrôlés, à l'exception de certains types d'appareils qui ont le rôle de contrôleur, comme le contacteur d'éclairage marche/arrêt. Le bouton d'activation/de désactivation de la lumière ne peut être qu'un contrôleur. Il ne peut pas s'agir d'un objet contrôlé.
- Fournisseur OTA: nœud pouvant fournir des mises à jour logicielles OTA.
- Demandeur OTA: nœud pouvant demander des mises à jour logicielles OTA.
Clusters
Dans un point de terminaison, un nœud contient un ou plusieurs clusters. Il s'agit d'une autre étape de la hiérarchie des appareils, car ils regroupent des fonctionnalités spécifiques telles qu'un groupe marche/arrêt sur une prise intelligente ou un groupe contrôle du niveau sur un point de terminaison de lumière à intensité variable.
Un nœud peut également avoir plusieurs points de terminaison, chacun créant une instance de la même fonctionnalité. Par exemple, un luminaire peut exposer un contrôle indépendant de chaque ampoule, ou une multiprise peut exposer le contrôle de chaque prise.
Attributs
Au dernier niveau, nous trouvons les attributs, qui sont des états détenus par le nœud, tels que l'attribut niveau actuel d'un cluster de contrôle de niveau. Les attributs peuvent être définis en tant que différents types de données, tels que uint8, des chaînes ou des tableaux.
Commandes
En plus des attributs, les clusters comportent également des commandes, qui sont des actions pouvant être effectuées. Dans le DM de Matter, ils correspondent à un appel de procédure à distance. Les commandes sont comme des verbes, par exemple verrouiller la porte sur un cluster Serrure de porte. Les commandes peuvent générer des réponses et des résultats. Dans Matter, ces réponses sont également définies comme des commandes, dans le sens inverse.
Événements
Enfin, les clusters peuvent également comporter des événements, qui peuvent être considérés comme un enregistrement des transitions d'état passées. Alors que les attributs représentent les états actuels, les événements sont un journal du passé et incluent un compteur monotone croissant, un code temporel et une priorité. Ils permettent de capturer les transitions d'état, ainsi que la modélisation des données, ce qui n'est pas facile à réaliser avec les attributs.
Le point de terminaison 0 est réservé aux clusters d'utilitaires. Les clusters d'utilitaires sont des clusters spécifiques qui englobent les fonctionnalités de service sur un point de terminaison, telles que la découverte, l'adressage, les diagnostics et la mise à jour logicielle. En revanche, les clusters d'applications acceptent les actions principales telles que l'activation/la désactivation ou la mesure de la température.
Types d'appareils
Au total, quelles combinaisons de clusters doivent être incluses lorsqu'un fabricant d'appareils planifie un nouvel appareil ?
La spécification Matter exige que l'appareil implémente ou étende un ou plusieurs types d'appareils. Un type d'appareil est un ensemble de groupes obligatoires et facultatifs qui définissent les attributs de niveau supérieur d'un appareil physique, tels que Lumière à intensité variable, Serrure de porte ou Lecteur vidéo.
Les types d'appareils ne sont pas spécifiés par le document principal de la spécification Matter, mais par un document associé: la bibliothèque d'appareils. De même, tous les clusters d'applications sont définis dans la bibliothèque de clusters d'applications. Ces trois documents sont disponibles sur le site Web des membres de Connectivity Standards Alliance (Alliance).
Chaque point de terminaison implémentant un type d'appareil doit implémenter les clusters obligatoires qui définissent ce type d'appareil. En plus des clusters obligatoires, le point de terminaison peut implémenter des clusters supplémentaires, y compris un ou plusieurs des clusters facultatifs du type d'appareil, ou même des clusters qui ne font pas partie du type d'appareil.
Clients et serveurs
Les clusters peuvent être des clusters client ou des clusters serveur. Alors qu'un serveur est basé sur l'état et contient des attributs, des événements et des commandes, un client est sans état et a pour fonction d'initier des interactions avec un cluster de serveurs distant, en effectuant les opérations suivantes:
- lit et écrit dans ses attributs distants.
- lit ses événements distants.
- l'appel de ses commandes à distance.
Bien que la DM soit hiérarchique au sein d'un nœud, la relation entre les nœuds ne l'est pas. Les nœuds de Matter n'ont pas de relations verticales contrôleur/périphérique ou leader/suiveur. Au contraire, la relation est horizontale: tout cluster peut être un serveur ou un client. Ainsi, un nœud peut être à la fois serveur et client en fonction des différents clusters et fonctionnalités.
Par exemple, nous pouvons avoir deux lampes de table: le nœud A et le nœud B. Les deux nœuds implémentent un type d'appareil Lumière marche/arrêt. Ce type d'appareil inclut un cluster Serveur marche/arrêt qui contrôle les sorties lumineuses physiques respectives.
Toutefois, comme les lampes de table classiques, nos appareils physiques incluront également un type d'appareil Interrupteur marche/arrêt pour leurs boutons marche/arrêt locaux. Ce type d'appareil doit implémenter un cluster Client marche/arrêt pour pouvoir contrôler les clusters de serveurs.
Dans cet exemple, le cluster client "On/Off" sur le nœud A modifie les attributs du cluster serveur "On/Off" sur le nœud A et le nœud B, tandis que le cluster client du nœud B ne modifie que le cluster serveur sur le nœud B lui-même.
Dans la section suivante, nous verrons en détail comment les clusters client et serveur interagissent: le modèle d'interaction.
Cluster de descripteurs
Comme son nom l'indique, le serveur de cluster de descripteurs fournit des informations d'introspection. Il décrit le point de terminaison en énumérant les éléments suivants:
- Clusters de serveurs
- Clusters client
- Types d'appareils
- Points de terminaison supplémentaires, appelés "composants".
Chaque type d'appareil nécessite l'implémentation de clusters de descripteurs. Le type d'appareil racine est défini sur le point de terminaison 0. La lecture de son cluster de descripteurs permettra au client de parcourir l'ensemble de l'arborescence des points de terminaison disponibles et d'effectuer les opérations applicables.
Le commissaire ou l'appareil de contrôle, tel qu'un téléphone ou un hub, peut utiliser les informations trouvées dans le cluster de descripteurs pour modéliser l'appareil (lumière, interrupteur, pompe, thermostat) et les fonctionnalités spécifiques implémentées par cette instance particulière de l'appareil, en affichant l'UI appropriée à l'utilisateur.
Clusters de serveurs
L'attribut ServerList
liste les serveurs de cluster dans le point de terminaison.
Clusters client
L'attribut ClientList
liste les clients de cluster dans le point de terminaison.
Liste des types d'appareils
L'attribut DeviceTypeList
est une liste des types d'appareils compatibles avec le point de terminaison, ainsi que de leurs révisions respectives. Il doit contenir au moins un type d'appareil.
Liste des pièces
PartsList
contient la liste des points de terminaison utilisés pour implémenter ce type d'appareil.
Le PartsList
du point de terminaison 0 (nœud racine) contient tous les points de terminaison de l'appareil, à l'exception de lui-même (point de terminaison 0).
L'PartsList
des autres points de terminaison est généralement vide. Par exemple, un capteur de température nécessite un cluster de serveurs de mesure de la température et rien d'autre.
D'autres types d'appareils peuvent être composés dans une structure arborescente de plusieurs instances de DeviceType. Par exemple, un type d'appareil lecteur vidéo peut être composé de TV, de lecteur vidéo, de haut-parleur et de différents types d'appareils d'application de contenu, chacun sur un point de terminaison différent.
-
La spécification Matter détermine qu'un appareil peut avoir plusieurs nœuds. Par exemple, les smartphones peuvent avoir plusieurs applications, chacune étant un nœud différent. Pour les besoins de ce guide, tous les appareils contiennent un seul nœud. La plupart des appareils physiques devraient suivre ce modèle. ↩