Créer un appareil Matter

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 le 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

Ce dont vous avez besoin

2. Configurer votre environnement

Identifier l'appareil série

La première étape de 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 tableau de développement et d'interagir avec celui-ci.

  1. Connectez la carte de développement à votre ordinateur à l'aide d'un câble USB.
  2. Recherchez l'appareil avec la carte du développeur dans le système de fichiers /dev. Vous pouvez affiner votre recherche en indiquant le préfixe de l'appareil de votre carte de développeur. L'ESP32 d'Espressif utilise /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Configurer votre hub

Configurez votre hub avec le compte Google que vous comptez utiliser pour cet atelier de programmation.

Configurer l'environnement de développement

Conditions préalables

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 différer de ce qui suit.

Installer des dépendances

Exécutez la commande suivante pour installer les binaires du package 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 poursuivre cet atelier de programmation, vous aurez besoin du SDK Espressif (le framework de développement Espressif pour l'IoT ou ESP-IDF).

  1. Créez un répertoire pour stocker l'ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clonez l'ESP-IDF depuis GitHub dans le répertoire suivant:
    $ 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. Récupérez les sous-modules du dépôt:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Amorçage de l'environnement de développement Matter:
    $ source ./scripts/bootstrap.sh
    

3. Console pour les développeurs 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.

Tout appareil Matter ayant obtenu la certification Matter 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 dans certaines conditions. Pour en savoir plus, consultez la section Restrictions liées à l'association.

Créer un projet de développement

Commencez par accéder à la console Google Home pour les développeurs:

  1. Cliquez sur Créer un projet.
  2. Saisissez un nom de projet unique, puis cliquez sur Create project (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. Vous y trouverez la documentation sur le développement de Matter et des informations sur certains outils.
  4. Lorsque vous êtes prêt à continuer, cliquez sur Next: Develop (Suivant : Développer). La page Matter checklist s'affiche.
  5. Cliquez sur Étape suivante: 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 fournisseur" (VID), sélectionnez VID test, puis "0xFFF1" dans le menu déroulant VID test. Dans le champ "ID produit (PID), saisissez 0x8000, cliquez sur Enregistrer et continuer, puis sur Enregistrer sur la page suivante. Utilisez ces valeurs VID/PID exactes (les prochaines étapes 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 de projet d'intégration Matter la plus récente. Si vous devez modifier le VID ou le PID par la suite, vous devrez également redémarrer après avoir enregistré le projet pour que la modification soit prise en compte. Pour obtenir des instructions détaillées sur le redémarrage, consultez Redémarrer des appareils Google Nest ou Google Wifi.

4. Compiler 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 lighting-app.

Cet exemple présente un appareil simple qui apparaît dans Google Home sous la forme d'un éclairage Marche/Arrêt et qui répond aux commandes d'activation et de désactivation. Contrôler une véritable lumière électrique n'entre pas dans 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 pour accélérer 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 supérieur.
    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 attribué par l'alliance ou sur un VID test.
    8. Définissez Product ID sur le PID que vous avez défini pour l'intégration Matter dans la console Google Home.
    9. Appuyez sur S pour enregistrer.
    10. Appuyez sur Entrée pour accepter le chemin d'accès par défaut dans lequel la configuration sera enregistrée.
    11. Appuyez sur Entrée pour fermer la boîte de dialogue de confirmation d'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 devrait 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 tous les micrologiciels précédents sur l'appareil (si une seule carte de développement est connectée à votre ordinateur, vous pouvez laisser l'option -p {device}, l'appareil devrait être détecté automatiquement):
    idf.py -p {device} erase-flash
    
  3. Copiez votre nouvelle application sur le tableau des développeurs avec:
    idf.py -p {device} flash
    

Pour en savoir plus sur les options de flashage, consultez la page de documentation d'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 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 fonctionne que si vous avez déjà configuré votre projet dans la Google Home Developer Console.

Nest Hub

Un hub est nécessaire pour mettre votre appareil en service sur la technologie Matter. Il s'agit d'un appareil Google Nest, comme Nest Hub (2e génération), qui est compatible avec Matter et qui sert à la fois de routeur de bordure pour les appareils compatibles Thread et de chemin de traitement local pour acheminer les intents de la maison connectée.

Consultez cette liste pour savoir 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 Virtual Matter.
  • Votre hub a 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 ESP32 pour associer votre appareil.

Remarque: Si vous utilisez une M5STACK, sachez que son écran reste vide après le flash. Vous devez donc afficher le code QR à l'aide de l'URL qui apparaît dans la console. Vous pouvez également saisir le code d'association manuelle.

Exemple de sortie de 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 de dépannage concernant Matter.

7. Contrôler l'appareil

Une fois que votre appareil compatible avec Matter est mis en service et qu'il apparaît dans l'application Google Home en tant qu'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 de commandes vocales, par exemple en disant "Hey Google, active mes lumières".

Pour obtenir d'autres exemples de commandes, consultez la section Contrôler vos appareils connectés à l'aide de commandes vocales de l'article Contrôler les appareils connectés ajoutés à l'application Google Home.

Application Google Home

Vous pouvez appuyer sur les boutons Activé ou 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 Assistant Google

Dans l'extension Google Home pour VS Code, à l'aide du simulateur de l'Assistant Google, vous pouvez émettre des énoncés sur votre appareil via une interface de type 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 pour le faire passer des exigences à 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: