Créer un appareil Matter

1. Introduction

Matter est un protocole de connectivité qui offre de nouvelles opportunités 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 le Centre d'aide pour les développeurs Google Home : Matter ou le site Web de la Connectivity Standards Alliance.

Points abordés

  • Intégrer un appareil physique à Matter
  • Découvrez comment configurer et contrôler votre appareil Matter avec Google Home.

Prérequis

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éveloppement et d'interagir avec elle.

  1. Connectez la carte de développement à votre ordinateur à l'aide d'un câble USB.
  2. 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 de l'appareil de votre carte de développement. L'ESP32 d'Espressif utilise /dev/ttyUSBx :
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Set up your hub

Configurez votre hub avec le même compte Google que celui 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 utilisez une autre distribution Linux, la procédure de configuration des dépendances peut être différente de celle décrite ci-dessous.

Installer des dépendances

Exécutez la commande suivante pour installer les binaires des packages Linux requis qui ne sont peut-être pas encore 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 continuer cet atelier de programmation, vous aurez besoin du SDK Espressif (Espressif IoT Development Framework ou "ESP-IDF").

  1. Créez un répertoire pour contenir ESP-IDF :
    $ mkdir ~/esp-idf_tools
    
  2. Clonez l'ESP-IDF depuis GitHub dans ce répertoire :
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Terminez l'installation de la chaîne d'outils :
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Configurer le SDK Matter

  1. 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
    
  2. Extrayez les sous-modules du dépôt :
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Amorcez l'environnement de développement Matter :
    $ source ./scripts/bootstrap.sh
    

3. Console Google Home pour les développeurs

La console développeur Google Home est l'application Web qui vous permet de gérer vos intégrations Matter avec Google Home.

Tout appareil Matter ayant obtenu la certification Matter de la Connectivity Standards Alliance (Alliance) fonctionne 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éveloppeur

Commencez par accéder à la Google Home Developer Console :

  1. Cliquez sur Create Project (Créer un projet).
  2. Saisissez un nom de projet unique, puis cliquez sur Créer un projet. Boîte de dialogue "Créer un projet"
  3. Cliquez sur + Ajouter une intégration pour accéder à l'écran Ressources Matter, où vous pouvez consulter la documentation sur le développement Matter et en savoir plus sur certains outils.
  4. Lorsque vous êtes prêt à continuer, cliquez sur Suivant : Développer, ce qui affiche la page Check-list Matter.
  5. Cliquez sur Suivant : Configuration.
  6. Sur la page Configuration, saisissez le nom de votre produit.
  7. Cliquez sur Sélectionner le type d'appareil, puis sélectionnez le type d'appareil dans le menu déroulant (dans ce cas, Light).
  8. Dans "ID du fournisseur (VID)", sélectionnez Test VID, puis 0xFFF1 dans le menu déroulant "Test VID". Dans "ID produit (PID)", saisissez 0x8000, puis cliquez sur Enregistrer et continuer, puis sur Enregistrer sur la page suivante. Utilisez ces valeurs exactes de VID/PID, car les étapes ultérieures de l'atelier de programmation en dépendent.
    Configurer un projet
  9. Votre intégration s'affiche désormais sous Intégrations Matter.
  10. Redémarrez votre hub pour vous assurer qu'il reçoit la configuration la plus récente du projet d'intégration Matter. Si vous devez modifier le VID ou le PID ultérieurement, vous devrez également redémarrer l'appareil après avoir enregistré le projet pour que la modification prenne effet. Pour savoir comment redémarrer votre appareil, consultez Redémarrer des appareils Google Nest ou Google Wifi.

4. Créer l'appareil

Tous les exemples de Matter se trouvent dans le dossier "examples" du dépôt GitHub. Plusieurs exemples sont disponibles, mais dans cet atelier de programmation, nous nous concentrerons sur lighting-app.

Cet exemple est un simple appareil qui apparaît dans Google Home comme une lumière On/Off, répondant aux commandes On et Off. Le contrôle d'une véritable lampe électrique dépasse le cadre de cet atelier de programmation.

Configurer la compilation

  1. 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
    
  2. Activez Ccache, qui accélère le processus de compilation :
    $ export IDF_CCACHE_ENABLE=1
    
  3. 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
    
    1. Exécutez l'utilitaire de configuration :
      $ idf.py menuconfig
      
    2. Sélectionnez Demo -> Device Type et définissez Device Type sur ESP32-DevKitC.
    3. Appuyez sur la flèche vers la gauche pour revenir au menu principal.
    4. Sélectionnez Component config --->.
    5. Sélectionnez CHIP Device Layer --->.
    6. Sélectionnez Device Identification Options --->.
    7. Définissez Vendor ID sur le VID qui vous a été attribué par l'Alliance ou sur un VID de test.
    8. Définissez Product ID sur le PID que vous avez défini sur l'intégration Matter dans la Google Home Developer Console.
    9. Appuyez sur S pour enregistrer.
    10. Appuyez sur Retour pour accepter le chemin d'accès par défaut où la configuration sera enregistrée.
    11. Appuyez sur Retour pour fermer la boîte de dialogue de confirmation de l'enregistrement.
    12. Appuyez sur Q pour quitter l'utilitaire de configuration.

Exécuter le build

Appelez le script de compilation :

idf.py build

La compilation doit se terminer sans erreur.

Programmer l'appareil

  1. Connectez votre carte de développement à votre ordinateur à l'aide d'un câble USB.
  2. Effacez tout micrologiciel précédent sur l'appareil (si vous n'avez qu'une seule carte de développement connectée à votre ordinateur, vous pouvez laisser de côté l'option -p {device} : l'appareil devrait être détecté automatiquement) :
    idf.py -p {device} erase-flash
    
  3. Copiez votre nouvelle application sur la carte de développement avec la commande suivante :
    idf.py -p {device} flash
    

Pour en savoir plus sur les options de flashage, consultez la page de documentation Espressif esptool.py.

5. Se connecter à l'appareil

  1. Ouvrez une fenêtre de terminal.
  2. 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
    
  3. Si la console est vide, appuyez sur le bouton RESET pour lancer le processus de démarrage de l'appareil.

6. Mettre en service l'appareil

Remarque : Cette étape ne fonctionnera 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 le réseau Matter. Il s'agit d'un appareil Google Nest, tel que Nest Hub (2e génération), compatible avec Matter et qui servira à la fois de routeur de bordure pour les appareils compatibles avec Thread et de chemin d'exécution local pour le routage des intentions de maison connectée.

Consultez cette liste pour savoir quels hubs sont compatibles avec Matter.

Avant de commencer le processus de mise en service, vérifiez les points suivants :

  • Votre hub est associé au même compte Google que celui que vous avez utilisé pour vous connecter à la Google Home Console.
  • Votre hub est connecté au même réseau Wi-Fi que l'ordinateur que vous utilisez pour exécuter votre appareil Matter virtuel.
  • Votre hub se trouve dans la même structure que celle que vous utilisez dans l'application Google Home (la "maison" dans le Google Home Graph représente votre structure).

Associer l'appareil

Suivez les instructions d'association de l'ESP32 pour associer votre appareil.

Remarque : Si vous utilisez un M5STACK, sachez que son écran restera vide après le flashage. 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 manuellement.

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

Pour obtenir d'autres conseils de dépannage, consultez la page Dépannage de Matter.

7. Contrôler l'appareil

Une fois votre appareil compatible avec Matter correctement mis en service et affiché comme une ampoule dans l'application Google Home, 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 activer ou désactiver l'état de l'appareil à l'aide de commandes vocales, par exemple en disant "Hey Google, active/désactive mes lumières".

Pour obtenir d'autres exemples de commandes, consultez la section Contrôler vos appareils connectés par commande vocale 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 d'ampoule affichée dans l'application Google Home.

Pour en savoir plus, consultez Contrôler des appareils avec l'application Google Home.

Simulateur Assistant Google

Dans l'extension Google Home pour VS Code, vous pouvez utiliser le simulateur de l'Assistant Google pour envoyer des énoncés à votre appareil à l'aide d'une interface de type chat.

8. Félicitations !

Vous avez créé et mis en service votre premier appareil Matter. Formidable !

Dans cet atelier de programmation, vous avez appris ce qui suit :

  • Installez un environnement de développement Matter à partir des exigences jusqu'à un état de fonctionnement.
  • Créez et exécutez un appareil Matter.
  • Configurez et contrôlez votre appareil depuis Google Home.

Pour en savoir plus sur Matter, consultez les ressources suivantes :