1. Introduction
Matter est un protocole de connectivité qui offre des opportunités intéressantes pour le développement d'appareils connectés. Dans cet atelier de programmation, vous allez créer votre premier appareil Matter. Pour en savoir plus sur Matter, consultez Google Home Developer Center: Matter ou le site Web de la Connectivity Standards Alliance.
Points abordés
- Intégrer un appareil physique à Matter
- Mettre en service et contrôler votre appareil Matter avec Google Home
Prérequis
- Un hub, c'est-à-dire tout appareil Google Nest compatible avec Matter, tel que Nest Hub (2e génération)
- Une carte d'évaluation Matter d'Espressif Systems ESP32-DevkitC ou ESP32 M5STACK
- Un PC exécutant Linux.
- Vous disposez de connaissances de base sur Linux.
2. Configurer votre environnement
Identifier l'appareil série
La première étape de la configuration de votre environnement de développement consiste à déterminer le port série auquel votre appareil est connecté. Ces informations vous permettront de programmer votre carte de développeur et d'interagir avec elle.
- Connectez la carte de développement à votre ordinateur à l'aide d'un câble USB.
- Recherchez l'appareil de la carte de développement dans le système de fichiers
/dev
. Vous pouvez affiner votre recherche en spécifiant le préfixe d'appareil de votre carte de développeur. L'ESP32 d'Espressif utilise/dev/ttyUSBx
:user@host $ ls /dev/ttyUSB* /dev/ttyUSB0
Set up your hub
Configurez votre hub avec le compte Google que vous comptez utiliser pour cet atelier de programmation.
Configurer l'environnement de développement
Prérequis
Ces instructions ont été testées sur Debian Linux et devraient fonctionner sur la plupart des distributions Linux basées sur Debian, y compris Ubuntu. Si vous travaillez avec une autre distribution Linux, la procédure de configuration des dépendances peut différer de ce qui suit.
Installer des dépendances
Exécutez la commande suivante pour installer les binaires de package Linux requis qui ne sont peut-être pas déjà installés:
$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen
Configurez le SDK
Pour poursuivre cet atelier de programmation, vous aurez besoin du SDK Espressif (le framework de développement IoT Espressif ou "ESP-IDF").
- Créez un répertoire contenant l'ESP-IDF:
$ mkdir ~/esp-idf_tools
- Clonez le fichier ESP-IDF de GitHub dans le répertoire suivant:
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- Terminez l'installation de la chaîne d'outils:
$ cd ./esp-idf $ ./install.sh $ cd ~/
Configurer le SDK Matter
- Clonez le dépôt Matter Open Source:
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- Récupérez les sous-modules du dépôt:
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- Amorcer l'environnement de développement Matter:
$ source ./scripts/bootstrap.sh
3. Console développeur de Google Home
La console développeur de Google Home est l'application Web qui vous permet de gérer vos intégrations Matter avec Google Home.
Tous les appareils Matter qui ont obtenu la certification Matter de la Connectivity Standards Alliance (Alliance) fonctionnent dans l'écosystème Google Home. Les appareils en cours de développement qui n'ont pas été certifiés peuvent être mis en service dans l'écosystème Google Home sous certaines conditions. Pour en savoir plus, consultez Restrictions d'association.
Créer un projet de développement
Commencez par accéder à la console développeur de Google Home:
- Cliquez sur Create Project (Créer un projet).
- Saisissez un nom de projet unique, puis cliquez sur Créer un projet.
- Cliquez sur + Ajouter une intégration pour accéder à l'écran Ressources Matter. Vous y trouverez la documentation sur le développement Matter et certains outils.
- Lorsque vous êtes prêt à continuer, cliquez sur Suivant: Développer. La page Checklist Matter s'affiche.
- Cliquez sur Suivant: Configuration.
- Sur la page Configuration, saisissez le nom de votre produit.
- Cliquez sur Sélectionner un type d'appareil, puis sélectionnez le type d'appareil dans le menu déroulant (dans ce cas,
Light
). - Sous "ID fournisseur", sélectionnez Tester le VID, puis "0xFFF1" dans le menu déroulant "Tester le VID". Dans "Identifiant produit", saisissez "0x8000", puis cliquez sur Enregistrer et continuer, puis cliquez sur Enregistrer sur la page suivante. Utilisez ces valeurs VID/PID exactes (les prochaines étapes de l'atelier de programmation en dépendront).
- Votre intégration s'affiche désormais sous Intégrations Matter.
- Redémarrez votre hub pour vous assurer qu'il reçoit la configuration de projet d'intégration Matter la plus récente. Si vous devez modifier le VID ou le PID ultérieurement, vous devrez également redémarrer après avoir enregistré le projet pour que la modification soit prise en compte. Pour obtenir des instructions de redémarrage détaillées, consultez l'article Redémarrer des appareils Google Nest ou Google Wifi.
4. Créer l'appareil
Tous les exemples dans Matter sont placés dans le dossier "examples" du dépôt GitHub. Plusieurs exemples sont disponibles, mais cet atelier de programmation porte sur l'application lighting-app.
Cet exemple présente un appareil simple qui apparaît dans Google Home comme une lumière Marche/Arrêt, répondant aux commandes d'activation et de désactivation. Cet atelier de programmation ne traite pas de la commande d'une ampoule électrique réelle.
Configurer la compilation
- Configurez le SDK Matter et activez l'environnement de compilation Matter:
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- Activez Ccache pour accélérer le processus de compilation:
$ export IDF_CCACHE_ENABLE=1
- Accédez au répertoire de compilation ESP32
lighting-app
et définissez l'architecture cible:$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- Exécutez l'utilitaire de configuration:
$ idf.py menuconfig
- Sélectionnez
Demo -> Device Type
et définissezDevice Type
surESP32-DevKitC
. - Appuyez sur la flèche vers la gauche pour revenir au menu de premier niveau.
- Sélectionnez
Component config --->
. - Sélectionnez
CHIP Device Layer --->
. - Sélectionnez
Device Identification Options --->
. - Définissez
Vendor ID
sur le VID attribué par l'alliance ou sur un VID de test. - Définissez
Product ID
sur le PID que vous avez défini pour l'intégration Matter dans la Google Home Developer Console. - Appuyez sur S pour enregistrer.
- Appuyez sur Entrée pour accepter le chemin d'accès par défaut où la configuration sera enregistrée.
- Appuyez sur Entrée pour fermer la boîte de dialogue de confirmation d'enregistrement.
- Appuyez sur Q pour quitter l'utilitaire de configuration.
- Exécutez l'utilitaire de configuration:
Exécuter le build
Appelez le script de compilation:
idf.py build
La compilation devrait se terminer sans erreur.
Programmer l'appareil
- Connectez votre carte de développeur à votre ordinateur à l'aide d'un câble USB.
- Supprimez le micrologiciel précédent sur l'appareil (si une seule carte de développement est connectée à votre ordinateur, vous pouvez laisser l'option
-p {device}
désactivée, l'appareil devrait être détecté automatiquement):idf.py -p {device} erase-flash
- Copiez votre nouvelle application sur le tableau de bord des développeurs avec:
idf.py -p {device} flash
Pour en savoir plus sur les options de clignotement, consultez la page de documentation d'Espressif sur esptool.py
.
5. Se connecter à l'appareil
- Ouvrez une fenêtre de terminal.
- Notez le répertoire dans lequel vous vous trouvez, puis connectez-vous à votre nouvel appareil Matter à l'aide de GNU
screen
:$ screen -L {device} 115200
- Si une console vide s'affiche, appuyez sur le bouton RÉINITIALISER pour lancer le processus de démarrage de l'appareil.
6. Mettre l'appareil en service
Remarque: Cette étape ne peut aboutir que si vous avez déjà configuré votre projet dans la Google Home Developer Console.
Nest Hub
Un hub est nécessaire pour mettre en service votre appareil sur la structure Matter. Il s'agit d'un appareil Google Nest, tel que Nest Hub (2e génération), compatible avec Matter. Il servira à la fois de routeur de bordure pour les appareils compatibles avec Thread et de chemin de traitement local pour router les intents de la maison connectée.
Consultez cette liste pour voir quels hubs sont compatibles avec Matter.
Avant de commencer la mise en service, vérifiez les points suivants:
- Votre hub est associé au compte Google que vous avez utilisé pour vous connecter à la console Google Home.
- Votre hub est connecté au même réseau Wi-Fi que l'ordinateur que vous utilisez pour exécuter votre appareil virtuel Matter.
- Votre hub présente la même structure que celle de l'application Google Home. (La "maison" dans le graphique Google Home représente votre structure.)
Associer l'appareil
Suivez les instructions d'association du proxy ESP32 pour associer votre appareil.
Remarque: Si vous utilisez une M5STACK, sachez que son écran restera vide après avoir été flashé. Vous devrez donc afficher le code QR à l'aide de l'URL qui s'affiche dans la console. Vous pouvez également saisir le code d'association manuelle.
Exemple de résultat de la console affichant l'URL du code QR:
I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]
Dépannage
Échec de la mise en service
- Assurez-vous d'avoir créé un projet avec la bonne combinaison VID/PID dans la console Google Home.
- Assurez-vous d'avoir saisi les bons VID et PID dans la configuration de compilation.
- Assurez-vous d'avoir sélectionné le bon
Device Type
dans la configuration de compilation.
Pour obtenir d'autres conseils de dépannage, consultez la page Résoudre les problèmes liés à Matter.
7. Contrôler l'appareil
Une fois que votre appareil compatible avec Matter a été mis en service et qu'il apparaît dans l'application Google Home sous forme d'ampoule, vous pouvez essayer de le contrôler à l'aide de l'Assistant Google, de l'application Google Home ou du simulateur de l'Assistant Google dans l'extension Google Home pour VS Code.
Assistant Google
Utilisez l'Assistant Google sur votre téléphone ou votre hub pour modifier l'état de l'appareil à partir des commandes vocales, par exemple en disant "Hey Google, allume la lumière".
Pour découvrir d'autres exemples de commandes, consultez la section Contrôler vos appareils connectés avec des commandes vocales de l'article Contrôler les appareils connectés via l'application Google Home.
Application Google Home
Vous pouvez appuyer sur les libellés Activé et Désactivé à côté de l'icône représentant une ampoule dans l'application Google Home.
Pour en savoir plus, consultez Contrôler des appareils avec l'application Google Home.
Simulateur de l'Assistant Google
Dans l'extension Google Home pour VS Code, à l'aide du simulateur de l'Assistant Google, vous pouvez envoyer des énoncés à votre appareil à l'aide d'une interface de chat.
8. Félicitations !
Vous avez créé et mis en service votre premier appareil Matter. Parfait !
Dans cet atelier de programmation, vous avez appris ce qui suit :
- Installez un environnement de développement Matter depuis les exigences jusqu'à son état de fonctionnement.
- Créez et exécutez un appareil Matter.
- Mettez en service et contrôlez votre appareil depuis Google Home.
Pour en savoir plus sur Matter, consultez ces références:
- L'introduction à Matter de Google Home présente les concepts et principes importants du protocole Matter.
- Spécification Matter, bibliothèque d'appareils Matter et bibliothèque de clusters d'application Matter, publiés par la Connected Standard Alliance.
- Le dépôt GitHub Matter