Matter
Référence du pilote Matter : les réseaux Wi-Fi et Thread que rejoignent les équipements, la mise en service par Bluetooth dans le Fabric local, le déroulement de l'appairage, l'identité de nœud, les tags qui viennent de l'équipement et ce que fait l'écriture de chacun.
Le pilote Matter lit du matériel Matter : capteurs connectés, prises, luminaires et équipements semblables certifiés pour le standard Matter, qu'ils rejoignent le réseau par Wi-Fi ou par Thread. C'est un seul pilote pour les deux. Le réseau n'est que le chemin d'entrée : une fois qu'un équipement y est, Ganter Lab le lit de la même façon, par le réseau local.
Ganter Lab agit en contrôleur Matter avec son propre Fabric local : il met chaque équipement en service une fois par Bluetooth Low Energy sur cet ordinateur, lui remet les identifiants d'un réseau inscrit sur la carte Réseaux du pilote, et lui parle ensuite par le réseau local : à travers votre routeur pour un équipement Wi-Fi, à travers votre Border Router Thread pour un équipement Thread.
Vous ne dites jamais à Ganter Lab si un équipement est Wi-Fi ou Thread : l'équipement le dit lui-même. Une fois la session Bluetooth ouverte, Ganter Lab lit sur l'équipement quel type de réseau il rejoint, avant d'y écrire quoi que ce soit, et s'arrête avec un message à part quand le réseau choisi est de l'autre type.
Cela inverse l'ordre d'installation habituel. Un équipement Matter ne part pas d'un hôte et d'un port : il part d'une cérémonie d'appairage, et seule l'identité stable du nœud mis en service est conservée ensuite.
Ce qu'il vous faut avant l'appairage :
- Un adaptateur Bluetooth Low Energy sur cet ordinateur, allumé, avec Windows autorisant Ganter Lab à l'employer.
- Le réseau que l'équipement va rejoindre, inscrit sur la carte Réseaux : pour un équipement Wi-Fi, le nom du Wi-Fi et son mot de passe ; pour un équipement Thread, un réseau Thread existant avec un Border Router, et son jeu de données opérationnel actif complet. Ganter Lab fait rejoindre votre réseau aux équipements ; il ne peut pas inventer ses identifiants.
- Le code de configuration de l'équipement, imprimé sur l'équipement ou son emballage, et l'équipement en mode appairage.
Réseaux
Le volet du pilote Matter porte une carte intitulée Réseaux : les réseaux Wi-Fi et Thread que rejoignent les équipements, un par ligne. Un réseau s'inscrit une fois, avant le premier équipement, et sert à tous les équipements appairés dedans : appairer une deuxième lampe sur le même Wi-Fi ne demande plus rien. La carte n'est dessinée que pour un rôle qui peut configurer le Connector, parce qu'elle garde les secrets des réseaux et ne sert qu'à l'appairage.
La tête de la carte porte ses commandes, dans cet ordre :
| Commande | Ce qu'elle fait | Ce qu'elle ne fait pas |
|---|---|---|
| Ajouter un réseau Wi-Fi | Ajoute un réseau Wi-Fi et le sélectionne. Quand cet ordinateur est connecté à un Wi-Fi dont le nom n'est pas encore inscrit, le nouveau réseau prend ce nom ; sinon, il commence sans nom, et c'est vous qui l'écrivez. Windows ne remet que le nom, et seulement quand il laisse les applications connaître l'emplacement de cet ordinateur (Windows 11 demande cette autorisation) ; le mot de passe, c'est toujours vous qui le tapez. | Elle ne lit pas le mot de passe dans Windows et ne vérifie pas que le réseau existe. |
| Ajouter un réseau Thread | Ajoute un réseau Thread et le sélectionne, sous un nom provisoire (numéroté quand il est déjà pris) jusqu'à ce que vous lui donniez le vôtre, en attendant son jeu de données. | Elle ne parle pas au Border Router : Ganter Lab n'utilise que le jeu de données du réseau que le Border Router a créé. |
| Retirer le réseau | Retire le réseau sélectionné, après une confirmation qui le nomme et dit que les équipements déjà appairés ne sont pas touchés. Sans réseau sélectionné, elle reste dessinée et grisée, et son infobulle le dit. | Elle ne touche pas aux équipements déjà appairés dans ce réseau : ils continuent de fonctionner et gardent son nom dans leur champ Réseau. |
Le tableau montre, pour chaque réseau, son Nom, son Type de réseau (Réseau Wi-Fi ou Réseau Thread) et son État : Prêt pour l'appairage, ou ce qui manque encore au réseau. Un réseau dont le nom n'est pas encore écrit s'affiche Réseau sans nom.
Les champs du réseau sélectionné se modifient sur place, sous le tableau, et s'enregistrent d'eux-mêmes. Une valeur que les règles ci-dessous refusent n'est pas écrite, et le champ dit pourquoi.
| Type | Champ | Ce que c'est | Format |
|---|---|---|---|
| Wi-Fi | Nom du Wi-Fi | Le nom (SSID) remis à l'équipement, exactement comme le routeur le diffuse : les majuscules comptent. Chaque nom de Wi-Fi s'inscrit une fois. | De 1 à 32 octets de texte (UTF-8). |
| Wi-Fi | Mot de passe | Le mot de passe du Wi-Fi remis à l'équipement. | Vide pour un réseau ouvert ; sinon de 8 à 63 caractères ASCII imprimables (une phrase secrète WPA), ou exactement 64 chiffres hexadécimaux (la clé brute). |
| Thread | Nom | Votre nom pour le réseau, pour le reconnaître à l'appairage et sur chaque équipement. Chaque nom de réseau Thread s'inscrit une fois. | Texte libre. |
| Thread | Jeu de données opérationnel Thread | Le jeu de données actif complet de votre réseau Thread, obtenu de l'administrateur du réseau ou de son Border Router. Home Assistant l'affiche ; Alexa et Apple, non. | Du texte hexadécimal (les espaces et un préfixe hex: sont tolérés), 254 octets au plus une fois décodé. Ce doit être le jeu de données complet : Active Timestamp, Channel, Channel Mask, Extended PAN ID, Mesh-Local Prefix, Network Key, Network Name, PAN ID, PSKc et Security Policy doivent tous être présents, et un jeu de données partiel ou malformé est refusé avec l'élément manquant nommé. |
Deux choses décident si un équipement Wi-Fi peut être appairé, et la carte les dit toutes deux à côté des champs :
- La plupart des équipements ne rejoignent que des réseaux 2,4 GHz. Un routeur qui diffuse un même nom en 2,4 GHz et en 5 GHz les sert ; un réseau qui n'existe qu'en 5 GHz, non.
- Cet ordinateur et les équipements doivent être sur le même réseau local. Un réseau invité, ou l'isolation des clients activée sur le routeur, empêche l'ordinateur de trouver les équipements une fois qu'ils ont rejoint le réseau.
Un réseau ne sert à l'appairage que tant que son secret respecte ces règles : un réseau Wi-Fi avec un nom et un mot de passe valides (vide compris), un réseau Thread avec un jeu de données valide.
Modifier un réseau change ce que le prochain appairage remet, jamais ce qu'un équipement a déjà reçu. Un équipement qui doit passer à un autre réseau, ou dont le routeur a reçu un nouveau mot de passe, est réinitialisé et appairé de nouveau.
Le déroulement de l'appairage
Sur le pilote Matter, la barre d'outils propose Appairer un équipement là où les autres pilotes proposent Ajouter un équipement, et l'entrée Matter du menu Nouveau… de la colonne aussi. Tant qu'aucun réseau ne sert à l'appairage, la commande reste dessinée et grisée, avec l'infobulle « Ajoutez d'abord le réseau que l'équipement doit rejoindre. » Sinon, elle ouvre un formulaire :
| Champ | Ce que c'est | Format | Défaut |
|---|---|---|---|
| Nom de l'équipement | Le nom modifiable que l'équipement portera dans le Connector. | Texte libre | Équipement Matter |
| Code de configuration Matter | Le code d'appairage manuel officiel, ou la charge utile QR complète. Saisi masqué, avec une commande pour le révéler. | Un code manuel de 11 ou 21 chiffres (les tirets et les espaces sont ignorés ; le chiffre de contrôle est vérifié), ou la charge utile QR complète commençant par MT:. Une charge utile QR qui n'annonce pas la mise en service par Bluetooth est refusée, ainsi que les codes réservés ou hors plage. |
vide |
| Réseau | Le réseau inscrit que l'équipement va rejoindre. Avec un seul réseau qui sert, le formulaire dit sur une ligne de quel réseau il s'agit et de quel type, sans rien à choisir ; avec plusieurs, c'est une liste de choix. | L'un des réseaux qui servent sur la carte Réseaux | le seul, quand il n'y en a qu'un |
| Dossier de destination | Seulement quand le Nouvel équipement d'un dossier a ouvert le formulaire : le dossier où l'équipement appairé est rangé. Ouvert par Appairer un équipement, cette ligne n'existe pas et l'équipement reste au niveau propre du pilote. | Lecture seule | le dossier qui a ouvert le formulaire |
Un dossier du pilote Matter propose Nouvel équipement (dans son tableau Équipements, dans son menu du clic droit et dans Nouveau… > Matter > <Dossier>). Il ouvre ce même formulaire, grisé de la même façon tant qu'aucun réseau ne sert, et l'équipement appairé est rangé dans ce dossier.
Appairer un équipement dans le formulaire reste inactif tant que le nom et le code de configuration ne sont pas remplis ou qu'aucun réseau ne sert. Pendant l'appairage, le formulaire rapporte son étape : Valider (vérification du code et du secret du réseau), Trouver (recherche de l'équipement par Bluetooth), Appairer (authentification avec le code de configuration et lecture du type de réseau que l'équipement rejoint), Rejoindre le réseau (envoi du réseau à l'équipement, puis recherche de l'équipement sur le réseau local jusqu'à ce qu'il réponde ; la ligne d'état dit si ce réseau est Wi-Fi ou Thread), Enregistrer (ouverture de la session sécurisée avec l'équipement sur le réseau local, fin de sa mise en service et enregistrement du nœud dans le Fabric local).
Annuler est disponible tant que l'équipement physique n'a pas encore été modifié ; une fois que la mise en service a changé l'équipement, le bouton indique que Ganter Lab finalise en sécurité et le déroulement termine l'enregistrement au lieu d'abandonner un nœud à demi mis en service. Un seul appairage tourne à la fois ; une seconde tentative pendant qu'un autre est en cours est refusée.
Le nouvel équipement garde le nom du réseau qu'il a rejoint, affiché dans son champ Réseau. Appairer l'équipement suivant sur le même réseau ne demande que son nom et son code de configuration.
Quand l'appairage échoue
Si l'appairage échoue, le message énonce la cause et ce qu'il faut faire :
| Cause | Ce que cela veut dire | Le matériel | Que faire |
|---|---|---|---|
| Code de configuration non valide | Le code n'est ni un code manuel officiel de 11 ou 21 chiffres, ni une charge utile QR MT: complète. |
Intact | Relire le code imprimé. |
| Jeu de données Thread non valide | Le jeu de données du réseau Thread choisi n'est pas complet et bien formé. | Intact | Recopier le jeu de données actif complet dans ce réseau, sur la carte Réseaux. |
| Nom ou mot de passe Wi-Fi non valide | Le nom ou le mot de passe du réseau Wi-Fi choisi enfreint les règles de la carte Réseaux. | Intact | Le corriger sur la carte. |
| Bluetooth absent, désactivé ou refusé | Cet ordinateur n'a pas d'adaptateur Bluetooth Low Energy utilisable, le Bluetooth est désactivé, ou Windows en a refusé l'accès à Ganter Lab. | Intact | Activer le Bluetooth, ou autoriser Ganter Lab à l'employer dans Windows, puis réessayer. |
| Aucun équipement correspondant trouvé | Aucun équipement en mode appairage n'a répondu pour ce code de configuration. | Intact | Mettre l'équipement en mode appairage, le garder près de cet ordinateur et réessayer. |
| Code de configuration rejeté | L'équipement a refusé le code. | Intact | Relire le code imprimé et remettre l'équipement en mode appairage. |
| L'équipement rejoint par Wi-Fi | Le réseau choisi est Thread. | Intact : il a été lu, et rien n'y a été écrit | Inscrire le réseau Wi-Fi que l'équipement va rejoindre et appairer de nouveau en le choisissant. |
| L'équipement rejoint par Thread | Le réseau choisi est Wi-Fi. | Intact : il a été lu, et rien n'y a été écrit | Inscrire le réseau Thread et appairer de nouveau en le choisissant. |
| L'équipement est filaire (Ethernet) | L'appairage par Bluetooth ne sert pas un équipement filaire. | Intact : il a été lu, et rien n'y a été écrit | Ganter Lab ne peut pas appairer cet équipement. |
| L'équipement ne dit pas son réseau | L'équipement n'annonce ni Wi-Fi, ni Thread, ni Ethernet. | Intact : il a été lu, et rien n'y a été écrit | Ganter Lab ne peut pas appairer cet équipement. |
| Réseau Wi-Fi introuvable | L'équipement a répondu qu'il n'a trouvé aucun Wi-Fi de ce nom : une faute de frappe ou de majuscules, un réseau seulement en 5 GHz, ou un équipement hors de portée. | Ne garde rien : il abandonne ce qu'il a reçu et revient en mode appairage. Pas d'ID de nœud. | Corriger le nom sur la carte Réseaux, vérifier que le routeur le diffuse en 2,4 GHz, et appairer de nouveau. |
| Mot de passe Wi-Fi refusé | L'équipement a répondu que le Wi-Fi a refusé le mot de passe. | Ne garde rien : il abandonne ce qu'il a reçu et revient en mode appairage. Pas d'ID de nœud. | Corriger le mot de passe sur la carte Réseaux et appairer de nouveau. |
| L'équipement n'a pas pu rejoindre le réseau | L'équipement a répondu qu'il n'a pas pu rejoindre le réseau, pour une autre raison que les deux ci-dessus (en Thread, tout refus, y compris un réseau qu'il n'a pas trouvé). | Ne garde rien : il abandonne ce qu'il a reçu et revient en mode appairage. Pas d'ID de nœud. | Vérifier le réseau sur la carte Réseaux (en Thread, recopier le jeu de données actif en vigueur et vérifier que le Border Router est allumé) et appairer de nouveau. |
| L'équipement n'est pas apparu sur le réseau | L'équipement n'a donné aucune réponse sur le réseau, ou n'est jamais apparu sur le réseau local ensuite. Certains équipements quittent le Bluetooth pour rejoindre le réseau et ne peuvent pas répondre du tout. | Mis en service : le message montre l'ID de nœud | En Wi-Fi, vérifier que cet ordinateur et l'équipement sont sur le même réseau local, sans réseau invité ni isolation des clients entre eux ; en Thread, que le Border Router est allumé et joignable. Récupérer ensuite le nœud avec Découvrir. |
| La session sécurisée ne s'est pas ouverte | L'équipement a rejoint le réseau et y a été trouvé, mais la session sécurisée avec lui, ou la fin de l'appairage par cette session, a échoué. Le journal technique indique l'étape et ce que l'équipement a répondu. | Mis en service : le message montre l'ID de nœud | Récupérer le nœud avec Découvrir. Si Découvrir le trouve sans valeurs alors que l'équipement est allumé, remettre l'équipement en mode appairage, puis l'appairer de nouveau. |
| Un autre appairage en cours | Un seul appairage tourne à la fois. | Intact | Attendre qu'il se termine et réessayer. |
| Le Fabric local n'a pas pu être enregistré | Ganter Lab n'a pas pu conserver le Fabric en sécurité. | Intact quand cela arrive avant le début de l'appairage ; mis en service, avec l'ID de nœud, quand cela arrive après | Régler le problème de stockage avant de réinitialiser quoi que ce soit. |
Chaque fois qu'un échec arrive après que le matériel a déjà été mis en service, le message le dit et montre l'ID de nœud : le nœud reste dans le Fabric et peut être ajouté plus tard avec Découvrir une fois qu'il atteint le réseau. Ne réinitialisez pas l'équipement dans ce cas ; seul un message qui dit que rien n'a été enregistré signifie que le matériel est resté intact.
Un équipement qui répond qu'il n'a pas pu rejoindre le réseau est l'exception : il ne détient rien qui vaille d'être gardé. Ganter Lab met fin à l'appairage sur l'équipement, qui abandonne ce qu'il a reçu et revient aussitôt en mode appairage, et retire son nœud du Fabric ; le message ne porte donc pas d'ID de nœud, et Découvrir ne liste jamais un nœud qui ne peut pas répondre. Corrigez le réseau et appairez de nouveau. Seul un équipement qui n'a donné aucune réponse garde son nœud, car on ne sait s'il a rejoint le réseau qu'au moment où il apparaît sur le réseau local.
Ce qui est conservé
| Quoi | Où c'est gardé | Comment |
|---|---|---|
| Le nom et le type d'un réseau | La configuration de la station | Tels qu'écrits. |
| Le mot de passe du Wi-Fi et le jeu de données opérationnel Thread | La configuration de la station | Protégés pour l'utilisateur Windows qui les a saisis, comme les mots de passe d'équipement : sous un autre compte Windows, ils se lisent vides et doivent être saisis de nouveau. Une sauvegarde les laisse derrière elle ; l'export pour une autre machine les emporte, scellés avec son propre mot de passe. |
| Le code de configuration | Nulle part | Il n'existe que dans le formulaire pendant l'appairage, et il est effacé quand l'appairage se termine, échoue ou est annulé. |
| Le réseau qu'un équipement a rejoint | La configuration de l'équipement | Son nom, affiché dans le champ Réseau de l'équipement. |
| L'identité de l'équipement | La configuration de l'équipement et le Fabric local | L'ID de nœud. |
Le mot de passe du Wi-Fi et le jeu de données n'apparaissent jamais dans le journal technique, dans l'adresse d'un équipement ni dans sa Thing Description. Les réseaux et l'appairage ne sont pas proposés aux agents par le serveur MCP : l'appairage demande quelqu'un auprès de l'équipement, et les réseaux gardent des secrets.
L'identité de nœud
Un équipement appairé est lié à l'ID de nœud stable de 64 bits du matériel, affiché en lecture seule dans sa carte Connexion en 16 chiffres hexadécimaux, à côté de l'état de l'équipement. Le nom affiché modifiable est à vous de le changer ; l'ID de nœud, non. Un équipement dont l'identité conservée ne peut plus être lue montre Appairage à refaire à sa place.
Le volet de l'équipement montre aussi un champ Réseau en lecture seule : le nom du réseau que l'équipement a rejoint lors de son appairage. Un équipement appairé par une version qui ne le gardait pas dit que rien n'a été enregistré. Le champ est une trace, pas un réglage : modifier ou retirer ce réseau sur la carte Réseaux ne change rien sur l'équipement.
Comme l'identité est l'ID de nœud, les équipements Matter gardent un état de connexion indépendant : désactiver, supprimer ou perdre un nœud ne rend pas un autre indisponible, et supprimer un équipement ne libère que son usage de la session sécurisée : cela ne retire pas le matériel du Fabric local.
Découverte
Découvrir sur le pilote Matter liste les nœuds déjà mis en service dans le Fabric local de cette application et lit, sur chacun, les valeurs qu'il publie. Pour les lire, il ouvre une session sécurisée avec chaque nœud, si bien qu'un nœud absent du réseau reste listé, sans valeurs, une fois que sa session n'a pas pu s'ouvrir. Les candidats de la découverte portent l'identité du nœud et aucun secret de configuration. Le déroulement général de la découverte est décrit sur Découverte.
| Le nœud | Sa carte | Ses verbes |
|---|---|---|
| N'a pas d'équipement ici : son équipement a été supprimé, ou son appairage s'est terminé sans en créer | Les valeurs qu'il publie, chacune cochée | Ajouter un équipement crée l'équipement avec les valeurs cochées comme tags, sans nouvelle cérémonie. |
| Est un équipement configuré, avec des valeurs qui n'ont pas encore de tag | Marqué comme déjà configuré, avec le nombre de valeurs qu'il publie qui ne sont pas encore des tags, et ces valeurs cochées | Ajouter les tags ajoute les valeurs cochées à cet équipement ; Ouvrir l'ouvre. |
| Est un équipement configuré avec un tag pour chaque valeur | « Déjà configuré, avec un tag pour chaque valeur que l'équipement publie. » | Ouvrir l'ouvre. |
| Est un équipement configuré qui n'a signalé aucune valeur | « Déjà configuré. L'équipement n'a signalé aucune valeur : relancez Découvrir une fois qu'il est en ligne. » | Ouvrir l'ouvre. |
Les valeurs d'un équipement configuré sont comparées à ses tags par sortie, cluster et attribut, jamais par nom : un tag que vous avez renommé compte toujours, et une valeur n'est jamais ajoutée deux fois.
La page de l'équipement lui-même offre la même chose sans la quitter : Découvrir les tags, dans l'en-tête de sa carte Tags, lit ce seul nœud et liste, cochées, les valeurs pour lesquelles il n'a pas encore de tag, avec Ajouter les tags (voir Découvrir les tags d'un équipement).
Tags
Les tags d'un équipement Matter viennent de l'équipement lui-même : personne ne saisit de cluster ni de numéro d'attribut pour eux. Un appairage qui réussit y mène directement. Le journal des actions indique « Équipement Matter « Éclairage de la cuisine » appairé. », la page s'ouvre sur le pilote Matter avec le nouvel équipement mis en évidence dans son tableau Équipements, et un balayage de ce seul équipement démarre aussitôt. L'équipement que l'appairage a créé apparaît dans Équipements découverts avec les valeurs qu'il publie, toutes cochées, et le balayage se termine par « Cochez les valeurs de « Éclairage de la cuisine » à créer comme tags, puis Ajouter les tags. » Décochez ce que vous ne voulez pas et appuyez sur Ajouter les tags ; le journal des actions indique alors « 5 tags ajoutés à « Éclairage de la cuisine ». » Un équipement qui n'a pas encore répondu ne signale rien : « « Éclairage de la cuisine » n'a encore signalé aucune valeur. Relancez Découvrir une fois qu'il est en ligne. » La même carte revient à chaque Découvrir suivant, avec les valeurs pour lesquelles l'équipement n'a pas encore de tag.
Ajouter les tags n'est dessiné que pour un rôle qui a Configurer Connector. Il reste grisé, avec sa raison en infobulle, pendant qu'un balayage ou un appairage tourne, pendant que la station refuse les changements et tant que rien n'est coché (« Cochez au moins une valeur à ajouter. »). Une valeur dont l'équipement lit déjà la sortie, le cluster et l'attribut n'est jamais ajoutée de nouveau ; quand chaque valeur cochée est déjà là, rien n'est enregistré : « « Éclairage de la cuisine » a déjà un tag pour chaque valeur cochée, donc rien n'a été ajouté. » Un nom qu'un autre tag de l'équipement porte déjà reçoit un numéro à la suite, comme dans Luminosité (2).
Le balayage lit ce que l'équipement publie, tel que la spécification Matter l'organise :
| Quoi | Où l'équipement le dit |
|---|---|
| Ses sorties (endpoints) | Le cluster Descriptor (0x001D) sur l'endpoint 0, attribut PartsList |
| Les clusters de chaque sortie | Le Descriptor de cette sortie, attribut ServerList |
| Les valeurs de chaque cluster | Son attribut AttributeList (0xFFFB) |
| Les commandes que chaque cluster accepte | Son attribut AcceptedCommandList (0xFFF9) |
| Les fonctions optionnelles que chaque cluster met en œuvre | Son attribut FeatureMap (0xFFFC) |
| La lecture actuelle de chaque valeur | La valeur elle-même, lue une fois |
Ce que le balayage propose, et sous quel nom :
| Une valeur | Proposée comme |
|---|---|
| Une que le pilote connaît (la section suivante) | Son nom clair dans la langue de la station et le type que la spécification lui donne ; accessible en écriture seulement quand l'équipement accepte la manière dont la spécification la change, sinon en lecture seule |
| Une que le pilote connaît, d'une fonction que le cluster ne met pas en œuvre : teinte et saturation sans la fonction Hue and Saturation, température de couleur sans la fonction Color Temperature | Non proposée |
| Une que le pilote ne connaît pas | En lecture seule, sous son nom dans la spécification Matter (Level Control OnLevel), ou sous le cluster et le numéro d'attribut quand le pilote ne connaît pas l'attribut (On/Off attribute 0x131B0001) ; son type est celui de la lecture que l'équipement a renvoyée |
| La même valeur sur plus d'une sortie | Son nom dit quelle sortie, comme dans Luminosité (sortie 2) |
| Un attribut global (0xFFF8 à 0xFFFD), ou une valeur du nœud lui-même (endpoint 0) | Non proposée |
| Une liste ou une structure, une valeur d'un type que le pilote ne porte pas, une valeur pour laquelle l'équipement n'a renvoyé aucune lecture | Laissée de côté, et comptée dans la ligne qui clôt le balayage |
Un tag proposé en écriture arrive avec l'accès Lecture et écriture ; tous les autres arrivent en Lecture seule.
Les valeurs que le pilote connaît
Le pilote porte une table, tirée de la spécification Matter, des valeurs qu'il connaît par leur nom et de la façon dont chacune change. Une valeur change de l'une de trois façons : par une commande que le pilote envoie, que l'équipement doit lister parmi les commandes qu'il accepte ; par une écriture de l'attribut lui-même, là où la spécification le rend accessible en écriture et où l'équipement le liste ; ou pas du tout, pour une valeur que l'équipement ne fait que signaler.
| Valeur | Cluster et attribut | Type | Ce que l'écrire fait sur l'équipement | Plage que la spécification définit |
|---|---|---|---|---|
| Allumé | On/Off (0x0006), OnOff (0x0000) |
Boolean | true envoie la commande On (0x01), false envoie Off (0x00) ; accessible en écriture seulement quand l'équipement accepte les deux |
true ou false |
| Luminosité | Level Control (0x0008), CurrentLevel (0x0000) |
UInt32 | Envoie MoveToLevelWithOnOff (0x04) avec le niveau, un temps de transition de 0 et aucune option forcée : la sortie s'allume avec le niveau et s'éteint au minimum |
0 à 254 |
| Teinte | Color Control (0x0300), CurrentHue (0x0000) |
UInt32 | Envoie MoveToHue (0x00) par le chemin le plus court, avec un temps de transition de 0 ; seulement avec la fonction Hue and Saturation |
0 à 254 |
| Saturation des couleurs | Color Control (0x0300), CurrentSaturation (0x0001) |
UInt32 | Envoie MoveToSaturation (0x03) avec un temps de transition de 0 ; seulement avec la fonction Hue and Saturation |
0 à 254 |
| Température de couleur | Color Control (0x0300), ColorTemperatureMireds (0x0007) |
UInt32 | Envoie MoveToColorTemperature (0x0A) avec un temps de transition de 0 ; seulement avec la fonction Color Temperature. L'équipement garde la valeur dans ses propres limites |
0 à 65279, en mireds |
| Position du store | Window Covering (0x0102), CurrentPositionLiftPercent100ths (0x000E) |
UInt32 | Envoie GoToLiftPercentage (0x05) |
0 (ouvert) à 10000 (fermé), en centièmes de pour cent |
| Température ambiante | Thermostat (0x0201), LocalTemperature (0x0000) |
Float, en °C | Rien : lecture seule | -27315 à 32767, en centièmes de degré Celsius ; se lit de -273,15 à 327,67 °C |
| Consigne de refroidissement | Thermostat (0x0201), OccupiedCoolingSetpoint (0x0011) |
Float, en °C | Écrit l'attribut. L'équipement refuse une consigne hors de ses propres limites | -27315 à 32767, en centièmes de degré Celsius ; se lit de -273,15 à 327,67 °C |
| Consigne de chauffage | Thermostat (0x0201), OccupiedHeatingSetpoint (0x0012) |
Float, en °C | Écrit l'attribut. L'équipement refuse une consigne hors de ses propres limites | -27315 à 32767, en centièmes de degré Celsius ; se lit de -273,15 à 327,67 °C |
| Mode du ventilateur | Fan Control (0x0202), FanMode (0x0000) |
UInt32 | Écrit l'attribut | 0 arrêt, 1 bas, 2 moyen, 3 haut, 4 marche, 5 automatique, 6 intelligent |
| Réglage de la vitesse du ventilateur | Fan Control (0x0202), PercentSetting (0x0002) |
UInt32 | Écrit l'attribut | 0 à 100 pour cent |
| Vitesse du ventilateur | Fan Control (0x0202), PercentCurrent (0x0003) |
UInt32 | Rien : lecture seule | 0 à 100 pour cent |
| Température | Temperature Measurement (0x0402), MeasuredValue (0x0000) |
Float, en °C | Rien : lecture seule | -27315 à 32767, en centièmes de degré Celsius ; se lit de -273,15 à 327,67 °C |
| Humidité | Relative Humidity Measurement (0x0405), MeasuredValue (0x0000) |
Float, en % | Rien : lecture seule | 0 à 10000, en centièmes de pour cent ; se lit de 0 à 100 % |
| Éclairement | Illuminance Measurement (0x0400), MeasuredValue (0x0000) |
UInt32 | Rien : lecture seule | 0 à 65534, soit 10000 × log10(lux) + 1 |
| Pression | Pressure Measurement (0x0403), MeasuredValue (0x0000) |
Float, en kPa | Rien : lecture seule | -32767 à 32767, en dixièmes de kilopascal ; se lit de -3276,7 à 3276,7 kPa |
| Occupation | Occupancy Sensing (0x0406), Occupancy (0x0000) |
Boolean | Rien : lecture seule | true quand quelqu'un est là |
| État | Boolean State (0x0045), StateValue (0x0000) |
Boolean | Rien : lecture seule | true ou false |
La spécification envoie les températures, l'humidité et la pression dans des unités fixes : centièmes de degré Celsius, centièmes de pour cent et dixièmes de kilopascal. La découverte offre ces valeurs déjà en °C, % et kPa : le tag arrive avec le facteur dans son étape de mise à l'échelle (0,01 pour une température et une humidité, 0,1 pour une pression) et avec l'unité, si bien qu'un équipement qui envoie 2150 se lit 21,5 °C. Une écriture défait cette étape avant que la valeur ne parte, si bien qu'une consigne écrite 21,5 arrive à l'équipement en 2150. L'éclairement est logarithmique (10000 × log10(lux) + 1), donc aucun facteur ne le convertit : il se lit tel que l'équipement l'envoie. Toutes les autres valeurs se lisent aussi telles que l'équipement les envoie.
Les serrures, la couleur par coordonnées X et Y, les scènes, les groupes et la commande Toggle ne
sont pas dans la table. Un équipement Matter n'a pas non plus de commandes à lui : tout changement
est l'écriture d'un de ses tags.
Écrire une valeur
Un tag Matter dont l'accès est Lecture et écriture change l'équipement quand on l'écrit : depuis sa carte Valeur en direct, un contrôle de tableau de bord, la Logic ou un agent. L'écriture rejoint la file de l'équipement comme celle de tout pilote, à son tour avec les lectures de l'équipement, et sa réponse est celle de l'équipement lui-même. Le pilote choisit la commande Matter ou l'écriture de l'attribut à partir de la table ; personne ne choisit de commande. Seul le SUCCESS de l'équipement compte comme écrit. Tout le reste est refusé, avec une raison :
| Ce qui arrive | Où c'est tranché | La raison donnée |
|---|---|---|
| Le point n'est pas une valeur de la table du pilote | Avant tout envoi | Le pilote ne sait pas comment l'équipement change cette valeur, donc le tag ne fait que la lire. |
| Le point est une valeur que la table marque en lecture seule | Avant tout envoi | L'équipement signale cette valeur et rien de l'extérieur ne la fixe. |
| La valeur écrite n'est ni true ni false (pour une valeur Boolean), ou n'est pas un nombre entier | Avant tout envoi | Ce que la valeur accepte, et ce qui a été écrit. |
| La valeur est hors de la plage que la spécification définit | Avant tout envoi | La plage, telle que la table ci-dessus la donne. |
| Le tag ne nomme aucun cluster | Avant tout envoi | Qu'une valeur Matter se trouve par sa sortie, son cluster et son attribut. |
| L'équipement répond par un autre statut que SUCCESS | Par l'équipement | Le statut tel que l'équipement l'a donné : son nom dans la spécification et son numéro, par exemple CONSTRAINT_ERROR, 0x87 (la valeur est hors de ce que l'équipement accepte) ou UNSUPPORTED_COMMAND, 0x81 (l'équipement n'accepte pas la commande qui change cette valeur). Un statut que le cluster ajoute vient après (FAILURE, 0x01, cluster 0x02), et un statut que la spécification ne nomme pas se lit par son seul numéro. |
| L'équipement ne répond pas à temps | Par l'équipement | Pas de réponse. |
Une écriture refusée n'est jamais signalée comme écrite, ni comme un équipement injoignable. Sur
la page du tag, la ligne d'état indique « Écriture refusée par l'équipement : CONSTRAINT_ERROR,
0x87. » quand l'équipement l'a refusée, avec la raison à la place du statut pour un refus tranché
avant tout envoi, et « Écriture non confirmée : l'équipement n'a pas répondu à temps. » quand
aucune réponse n'est venue ; « Échec de l'écriture : l'équipement n'a pas pu être joint. » reste
réservé à un équipement qui n'est pas connecté. La raison voyage aussi avec l'écriture : la ligne
du journal de cette écriture la nomme, avec ce que le statut veut dire, et le tag_write d'un
agent la renvoie.
Un tag créé à la main
Pour la rare valeur que l'équipement ne publie pas sous une forme que le balayage propose, Ajouter
un tag sur un équipement Matter crée un tag à remplir à la main. Sa carte Source de la valeur montre trois
champs sur une ligne, et l'aperçu de l'adresse en dessous les assemble en
<endpoint>/<cluster>/<attribute>, en décimal (1/8/0 est la luminosité de la première sortie).
Tant qu'aucun cluster n'est choisi, le tag n'est pas enregistré, et le panneau dit : « Choisissez le
cluster que ce tag lit. Sans lui, rien n'est jamais demandé à l'équipement. »
| Champ | Ce qu'il fait | Valeurs | Par défaut |
|---|---|---|---|
| Sortie (endpoint) | Quelle sortie de l'équipement le tag lit. | 0 à 65535 ; 1 est la première sortie commandable, 0 le nœud lui-même | 1 |
| Cluster Matter | Quel cluster de cette sortie le tag lit. | Les clusters du catalogue Matter par leur nom dans la spécification avec leur numéro, comme dans Level Control (0x0008) ; un cluster que le catalogue ne nomme pas, trouvé par un balayage, vient en premier par son numéro |
aucun |
| Attribut | Quel attribut du cluster le tag lit. | 0 et plus ; 0 est la valeur propre du cluster | 0 |
Le nom du tag est libre : il nomme le tag et ne choisit rien sur l'équipement. Le type de donnée se choisit parmi Boolean, Int32, UInt32, Float, Double et String ; une lecture que le type déclaré ne peut pas représenter se lit comme une erreur plutôt que comme un nombre de remplacement. La valeur arrive telle que l'équipement l'envoie : une température, une humidité ou une pression créée à la main se lit en centièmes ou en dixièmes tant que vous ne lui donnez pas, dans son étape de mise à l'échelle, le facteur et l'unité du tableau ci-dessus.
Le champ d'accès ne propose l'écriture que là où la table du pilote change la valeur ; sinon il propose Lecture seule et dit pourquoi en dessous :
| Le point | Le champ d'accès propose | Ce qu'il dit |
|---|---|---|
| Une valeur de la table qu'une commande ou une écriture de l'attribut change | Lecture seule, Écriture seule et Lecture et écriture | Rien |
| Aucun cluster choisi encore | Lecture seule | « Lecture seule tant que le tag ne désigne pas une valeur de l'équipement : choisissez son cluster. » |
| Une valeur que la table ne connaît pas | Lecture seule | « Lecture seule : le pilote ne sait pas comment l'équipement modifie cette valeur. » |
| Une valeur que la table marque en lecture seule | Lecture seule | « Lecture seule : l'équipement signale cette valeur, et rien de l'extérieur ne la fixe. » |
Quand une modification de la sortie, du cluster ou de l'attribut fait pointer le tag vers une valeur que le pilote ne peut pas écrire, son accès revient à Lecture seule. Un tag offert par la découverte garde l'accès que la découverte lui a donné, car seule la découverte demande à l'équipement quelles commandes il accepte : une valeur que l'équipement n'a pas listée reste en Lecture seule, et le champ propose quand même l'écriture.
Les tags enregistrés par des versions précédentes
Une version précédente nommait le cluster d'un tag Matter par le seul nom du tag, avec une adresse
<endpoint>/<attribute>. Quand cette version démarre pour la première fois, chaque tag d'un
équipement Matter dont le nom est un cluster du catalogue Matter (la partie après le dernier
deux-points, sans les espaces autour, sans tenir compte de la casse) reçoit ce cluster, si bien
qu'il continue de lire exactement la valeur qu'il lisait. Son nom reste tel qu'il était, et
l'aperçu de son adresse montre alors <endpoint>/<cluster>/<attribute>. Un tag dont le nom ne
correspondait à aucun cluster n'a jamais rien lu : il reste sans cluster, ses lectures sont refusées
avec une raison qui le dit, et sa page demande le cluster. Un tag converti garde l'accès qu'il
avait, Lecture seule, le seul que ces versions proposaient ; pour l'écrire, choisissez Lecture et
écriture, ce qui fonctionne pour les valeurs de la table ci-dessus.