Dans ce tutoriel, nous allons explorer le standard Matter, conçu pour améliorer l’interopérabilité et la sécurité des objets connectés (IoT) utilisés dans le domaine de la domotique. Matter simplifie la mise en service des appareils de différents fabricants, il garantit leur interopérabilité et assurent qu’ils interagissent de manière sécurisée.
Dans la première partie de ce tutoriel, je vais vous présenter les principales caractéristiques du standard Matter.
Dans la seconde partie nous étudierons l’intégration, dans la solution domotique open source Home Assistant, d’une prise connectée Matter communiquant via un réseau Wi-Fi.
Enfin, dans la troisième partie, nous intégrerons une ampoule RGB connectée, réalisée à l’aide d’un Arduino Nano Matter. Dans cette dernière partie, nous utiliserons un dongle Sonoff ZBDongle-E afin de permettre au au Raspberry Pi de communiquer avec l’Arduino Nano Matter via le protocole radio Thread.
Première partie : le standard Matter
Les objectifs du standard Matter
L’objectif de Matter est de simplifier l’expérience utilisateur et renforcer la confiance dans les écosystèmes connectés. Matter propose un standard unifié qui garantit l’interopérabilité et la sécurité d’une vaste gamme d’objets connectés.
Le standard Matter a été développé par le consortium Connectivity Standards Alliance (CSA), et compte parmi ces supporter des géants de la technologie comme Apple, Amazon, Google ou Samsung, ainsi que des leaders dans le domaine de la domotique tels que Legrand, Schneider Electric ou Somfy.
Les objets connectés compatibles avec le standard Matter peuvent ainsi être utilisés au sein de toutes les solutions domotiques, quelles soient propriétaires (Somfy TaHoma, Apple HomeKit, Google Home, Amazon Alexa…) ou ouvertes (Home Assistant, OpenHAB…).
Les couches du standard Matter
Matter est un standard basé sur IPv6 et conçu pour fonctionner au-dessus de plusieurs technologies de réseau, comme par exemple Wi-Fi, Ethernet, ou Thread.
La couche MRP dans le standard Matter gère le routage des messages au sein du réseau maillé, assurant une communication fiable et efficace entre les appareils. Elle optimise les chemins de données pour minimiser la latence et la consommation d’énergie, tout en garantissant la robustesse du réseau face aux pannes de certains nœuds. MRP permet également l’interopérabilité entre différents types de réseaux, comme Wi-Fi et Thread, en unifiant leur gestion.
La couche BTP dans le standard Matter utilise le Bluetooth Low Energy (BLE) pour faciliter le processus de commissionnement des appareils. Elle permet la transmission sécurisée des identifiants réseau nécessaires à la connexion des nouveaux appareils au réseau Matter. BTP joue un rôle crucial dans l’initialisation et la configuration des dispositifs, assurant une intégration fluide et sécurisée sans nécessiter d’interventions complexes de l’utilisateur.

Source : https://developers.home.google.com/matter/primer
Le choix des couches Ethernet, Wi-Fi ou Thread dépend des besoins et des caractéristiques de l’appareil Matter.
Ethernet permet des communications stables, fiables et plus sécurisées que les connexions sans fil, car elles sont moins susceptibles d’être interceptées.
Wi-Fi est particulièrement adapté aux équipements mobiles ou qui nécessitent une grande flexibilité dans leur placement, comme les smartphone ou les caméra IP.
De part sa faible consommation d’énergie, Thread est particulièrement adapté aux appareils alimentés par batterie. De plus la topologie maillée de Thread améliore la portée et la fiabilité du réseau.
BLE n’intègre pas la couche IP et est par conséquent utilisé uniquement lors de le processus de commissionnement d’un nouvel appareil dans la structure Matter.
Le modèle de données Matter
Pour assurer une parfaite interopérabilité, Matter défini un modèle de données, qui est une modélisation hiérarchique des fonctionnalités d’un appareil.
De nombreux types d’appareils sont modélisés dans les spécifications du standard Matter, parmi lesquels nous pouvons citer par exemple :
- Éclairages
- Prises
- Interrupteurs et commandes
- Capteurs
- Fermetures
- Médias
- Appareils électroménagers
- Dispositifs énergétiques
- …
Chaque appareil Matter est modélisé par un modèle de données spécifique, décrivant précisément ses fonctionnalités (ex. : lampe à intensité variable), ses attributs (ex. :état allumé ou éteint) et les commandes (ex.: allumer ou éteindre) qui peuvent lui être appliquées.
Dans l’exemple ci-dessous, nous voyons le modèle de donnée d’une lampe à intensité variable. Le premier endpoint correspond à la fonctionnalité de base ayant comme attributs le nom du fabricant et celui du produit. Le second endpoint correspond à la fonctionnalité liée à la lampe elle même (son état, sa luminosité, les commandes qu’elle peut recevoir…).

Source : https://developers.home.google.com/matter/primer/device-data-model
Un appareil ne transmet pas l’intégralité de son modèle de données sur le réseau, il fournit des informations cruciales via son cluster de descripteurs, permettant aux autres dispositifs de comprendre et d’interagir avec ses fonctionnalités. Un client (une application sur un smartphone par exemple), utilise les informations trouvées dans le cluster de descripteurs pour modéliser l’appareil Matter (lumière, interrupteur, pompe, thermostat) et ses fonctionnalités, et afficher une interface utilisateur appropriée.
La sécurité dans Matter
Matter ne repose pas uniquement sur la sécurité des technologies de communication sur lesquelles il s’appuie (IPv6, Ethernet, Wi-Fi, Thread). La spécification Matter met au contraire un fort accent sur la sécurité, notamment en garantissant l’authenticité des appareils, en utilisant des protocoles cryptographiques robustes, et en assurant la confidentialité et l’intégrité des communications entre les appareils Matter.
La sécurité est intégrée dans plusieurs aspects du standard, y compris le processus de commissionnement, avec un processus rigoureux d’authentification des appareils. En effet, chaque dispositif Matter doit prouver son authenticité avant d’être intégré au réseau. Cette vérification repose sur les certificats des fabricants, et assure que seuls les appareils légitimes sont autorisés, renforçant ainsi la sécurité globale du système. Chaque appareil Matter reçoit deux certificats. Le premier, le certificat d’appareil, est programmé par le fabricant avant la livraison. Les clés réseau Wi-Fi ou Thread ne sont fournies à l’appareil qu’après vérification et authentification de ce certificat. Le second, le certificat opérationnel, est attribué par le commissionneur lors de la mise en service. Ce certificat permet de prouver l’autorisation de l’appareil sur le réseau Matter et de l’identifier de manière sécurisée.
Mise en service d’un nouvel équipement Matter
L’appareil qui assure le processus de mise en service est appelé “Commissioner“. Le demandeur de mise en service est le nouvel appareil qui doit être commissionné dans le réseau Matter.
Matter supporte plusieurs méthodes de commissionnement, selon que l’appareil est déjà connecté au réseau (par exemple, via un câble Ethernet) ou qu’il nécessite des identifiants réseau pour le Wi-Fi ou Thread. Dans ce dernier cas, les identifiants des appareils Wi-Fi et Thread sont configurés via Bluetooth Low Energy (BLE) avant qu’ils puissent être connectés au réseau opérationnel.
Un QR Code est généralement fourni avec un appareil Matter, il contient plusieurs informations dont le l’identifiant du constructeur et du produit, ainsi qu’un mot de passe. Ce mot de passe est utilisé par le commissioner (un smartphone en général) qui va établir la connexion BLE avec l’appareil Matter et réaliser son commissionnement dans le réseau Matter.

Le commissionnement peut également être effectué avec un code d’appairage manuel à 11 chiffres fourni par l’appareil Matter. Il doit être saisi dans l’application, et suit ensuite le même processus que pour le commissionnement par QR Code.
Deuxième partie : intégrer dans Home Assistant un appareil Matter communiquant sur un réseau Wi-Fi
Installation de Home Assistant sur Raspberry Pi
Installez Home Assistant sur une carte microSD avec Raspberry Pi Imager en suivant la procédure décrite sur le site https://www.home-assistant.io/installation/raspberrypi/. Attention, il faut utiliser une carte microSD d’au moins 32 Go.
Quelques minutes après avoir connecté le Raspberry Pi, vous pourrez accéder à Home Assistant depuis un navigateur sur votre ordinateur à l’URL suivante : http://homeassistant.local:8123/
Lors de votre première utilisation de Home Assistant, vous devez créer votre maison connectée et un utilisateur ainsi que votre localisation (utile pour la météo par exemple) :


Si tout s’est bien déroulé, Home Assistant va afficher une page d’aperçu avec votre nom d’utilisateur et la météo locale (à ce stade on ignore les équipements qu’il a déjà découvert) :

La première étape consiste à ajouter le module complémentaire Matter Server dans Home Assistant, puis le démarrer et ajouter l’intégration Matter .


Matter est maintenant correctement configuré sur notre Raspberry Pi.
Ajout d’un nouvel appareil Matter dans Home Assistant
Pour ajouter un appareil Matter dans Home Assistant, il faut installer l’application Home Assistant sur votre Smartphone. En effet, le smartphone joue le rôle de commissionneur Matter (Matter commissioner), il est responsable de l’ajout et de la configuration sécurisée de nouveaux appareils dans un réseau Matter. Le Raspberry Pi est le contrôleur du réseau Matter (Matter controller), c’est lui qui va gérer les appareils Matter une fois ajoutés dans le réseau Matter.

Pour ajouter un nouvel appareil Matter, il faut sélectionner Ajouter un appareil Matter et scanner le QR code fourni avec l’appareil (il est imprimé sur la prise connectée Meross).





Votre prise connectée Matter est maintenant visible dans la liste des appareils en tant que “Smart Plug Mini”, il est possible de l’ajouter au tableau de bord de Home Assistant afin de la contrôler facilement.


Troisième partie : intégrer dans Home Assistant un appareil Matter communiquant sur un réseau Thread
Dans cette dernière partie, nous allons créer un appareil Matter de type ampoule RGB connectée. Cet appareil est réalisé avec un Arduino Nano Matter communiquant avec le protocole radio Thread. Comme le Raspberry Pi ne supporte pas nativement le protocole Thread, nous allons y connecter un dongle Sonoff ZBDongle-E préalablement flashé avec un firmware supportant le protocole Thread.

Le protocole Thread
Thread est un protocole de communication sans fil basse consommation conçu pour les réseaux domestiques et les appareils connectés. Il utilise la bande de fréquence 2,4 GHz et supporte IPv6, permettant une interopérabilité facile avec d’autres standards. Les principaux bénéfices de Thread sont sa faible consommation d’énergie et sa capacité à créer des réseaux maillés fiables et sécurisés, idéaux pour les environnements domestiques intelligents. Comme Zigbee, Thread est particulièrement adapté aux appareils alimentés par batterie (contrairement au Wi-Fi).
Un routeur de bordure de thread (Thread border router) connecte un réseau Thread à d’autres réseaux IP, tels que Wi-Fi ou Ethernet. Dans notre tutoriel, le Raspberry Pi avec sa clé Sonoff, jouera le rôle de Thread border router.

Flashage du firmware Thread sur le dongle Sonoff ZBDongle-E
Le dongle Sonoff ZBDongle-E est livré de base avec un firmware lui permettant uniquement de communiquer avec des appareils Zigbee. Il faut donc flasher un nouveau firmware pour qu’il puisse communiquer avec notre Arduino Nano Matter au travers du protocole radio Thread. Pour rappel, Matter fonctionne sur Thread, Ethernet ou Wi-Fi mais pas sur Zigbee.
Le site https://darkxst.github.io/silabs-firmware-builder permet de flasher les dongles Zigbee basés sur Silicon Labs EFR32MG21 directement depuis votre navigateur Chrome.
Après avoir insérer le dongle dans votre PC, cliquer sur CONNECT et changer le firmware en sélectionnant OpenThread.



Installation du module complémentaire OpenThread Border Router dans Home Assistant
Une fois le dongle Sonoff connecté au le Raspberry Pi, installer le module complémentaire OpenThread Border Router dans Home Assistant. Ce module complémentaire vous permet de créer ou de rejoindre un réseau Thread et de faire de Home Assistant un routeur de bordure Thread.
Configurer les options suivantes et démarrer le module :
- Sélectionner le port série sur lequel le dongle Sonoff est connecté
- Désélectionner hardware flow control et automatically flash firmware.


Il faut ensuite ajouter le service Thread. Sa configuration est automatique. Et vous pouvez voir dans sa configuration qu’un réseau Thread a été configuré par le routeur de bordure Thread.


Avant de pouvoir ajouter des appareils Thread basés sur Matter, votre smartphone sera également utilisé. Et il doit connaître les identifiants de votre nouveau réseau Thread. Pour cela, il faut synchroniser les identifiants Thread avec votre smartphone Android via le menu Paramètres->Application Companion->Dépannage->Synchroniser les identifiants Thread.



Programmation de l’Arduino Nano Matter
Il faut commencer par installer le gestionnaire de carte Silicon Labs pour l’Arduino Nano Matter et ouvrir l’exemple fourni nano_matter_lightbulb_color.
Une fois que cet exemple est téléversé sur l’Arduino Nano Matter, le code d’appairage manuel et un lien pour visualiser le QR Code de commissionnement est affiché dans le moniteur série.

Ouvrez avec votre navigateur l’URL affichée dans le moniteur série, il permet de visualiser le QR Code qui sera utilisé par l’application de commissionnement.

Contenu du QR Code de commissionnement
Un QR Code est une représentation graphique d’informations (payload) qui dépendent de son utilisation. Le contenu d’un QR Code utilisé comme code de commissionnement Matter comment par MT: et contient les informations suivantes :
- Id fournisseur : fabricant du produit.
- Id produit : identifiant du produit.
- Flux de commissionnement : indique au logiciel de mise en service comment configurer le produit (0:Standard, 1:User-Intent, 2:Custom).
- Capacités de découverte : ce numéro indique à votre application domotique comment trouver l’appareil (0:SoftAP, 1:BLE, 2:OnNetwork).
- Discriminateur : un numéro unique permettant de distinguer les appareils similaires.
- Code PIN : il s’agit d’un mot de passe numérique de 8 chiffres.
Vous pouvez utiliser le programme Python suivant pour coder ou décoder un QR Code de commissionnement Matter : https://github.com/project-chip/connectedhomeip/tree/master/src/setup_payload/python
Ajout de l’Arduino Nano Matter dans Home Assistant
Vous pouvez ajouter l’Arduino Nano Matter en scannant le QR Code, généré à l’étape précédente, avec l’application Home Assistant sur votre Smartphone, en suivant la même procédure que pour ajouter la prise connectée Matter.




Note : Je rencontre de nombreux problèmes pour ajouter mon Arduino Nano Matter comme appareil Matter dans cette configuration. J'ai posté mes observations sur le serveur discord de Home Assistant, j'attends des réponses. A suivre...
Vous pouvez maintenant contrôler la LED RGB de votre Arduino Nano Matter depuis Home Assistant !



Si vous possédez une enceinte connectée Amazon Echo, vous pouvez l’utiliser comme bordure de réseau Thread, voir ce tuto : https://tutoduino.fr/tutoriels/arduino-nano-matter/
J’espère que ce tuto vous aura intéressé. N’hésitez pas à donner votre avis en cliquant sur les étoiles ci-dessous. Je ne suis pas rémunéré au nombre d’étoiles mais c’est important pour moi afin de voir que mon travail est utile aux autres.