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

  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
    

Configurer votre 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 différer de celle décrite ci-dessous.

Installer des dépendances

Exécutez la commande suivante pour installer les binaires de 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

Configurer le SDK

Pour poursuivre 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 l'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. Récupérez 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. Google Home Developer Console

La Google Home Developer Console est l'application Web dans laquelle vous gérez 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 concernant l'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 Create Project (Créer un projet). Boîte de dialogue "Créer un projet"
  3. Cliquez sur + Add integration (+ Ajouter une intégration), ce qui vous redirige vers l'écran Matter resources (Ressources Matter), où vous pouvez consulter la documentation de développement Matter et en savoir plus sur certains outils.
  4. Lorsque vous êtes prêt à continuer, cliquez sur Next: Develop (Suivant : Développer), ce qui affiche la page Matter checklist (Liste de contrôle Matter).
  5. Cliquez sur Next: Setup (Suivant : Configuration).
  6. Sur la page Setup (Configuration), saisissez le Product name (Nom du produit).
  7. Cliquez sur Select device type (Sélectionner le type d'appareil), puis sélectionnez le type d'appareil dans le menu déroulant (dans ce cas, Light).
  8. Dans Vendor ID (VID) (ID du fournisseur), sélectionnez Test VID (ID de test), puis sélectionnez 0xFFF1 dans le menu déroulant Test VID. Dans Product ID (PID) (ID du produit), saisissez 0x8000, puis cliquez sur Save &continue (Enregistrer et continuer), puis sur Save (Enregistrer) sur la page suivante. Utilisez ces valeurs VID/PID exactes, 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 Matter integrations (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 après avoir enregistré le projet pour que la modification prenne effet. Pour obtenir des instructions de redémarrage détaillées, consultez Redémarrer des appareils Google Nest ou Google Wifi.

4. Créer l'appareil

Tous les exemples de Matter sont placés dans le dossier examples du dépôt GitHub. Plusieurs exemples sont disponibles, mais cet atelier de programmation se concentre sur l'application d'éclairage lighting-app.

Cet exemple est un appareil simple qui apparaît dans Google Home comme une lumière marche/arrêt, répondant aux commandes "On" (Allumer) et "Off" (Éteindre). Le faire contrôler une lumière électrique réelle 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 de premier niveau.
    4. Sélectionnez Component config ---> (Configuration des composants --->).
    5. Sélectionnez CHIP Device Layer ---> (Couche d'appareil CHIP --->).
    6. Sélectionnez Device Identification Options ---> (Options d'identification de l'appareil --->).
    7. Définissez Vendor ID (ID du fournisseur) sur le VID attribué par l'Alliance ou sur un VID de test.
    8. Définissez Product ID (ID du produit) 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 Return (Retour) pour accepter le chemin par défaut où la configuration sera enregistrée.
    11. Appuyez sur Return (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 omettre l'option -p {device}. L'appareil doit être détecté automatiquement) :
    idf.py -p {device} erase-flash
    
  3. Copiez votre nouvelle application sur la carte de développement avec :
    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 une console vide s'affiche, appuyez sur le bouton RESET pour démarrer le processus de démarrage de l'appareil.

6. Mettre en service l'appareil

Remarque : Cette étape ne réussira 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 le 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 intents Smart Home.

Consultez cette liste pour voir 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 se trouve sur le 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 votre application Google Home. (La "maison" dans le graphique Google Home représente votre structure.)

Associer l'appareil

Suivez les instructions d'association 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 QR code à l'aide de l'URL qui s'affiche dans la console. Vous pouvez également saisir le code d'association manuel.

Exemple de sortie de la console affichant l'URL du QR code :

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 mis en service et affiché dans l'application Google Home sous la forme d'une 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 activer ou désactiver l'état de l'appareil à l'aide de commandes vocales, par exemple en disant "Hey Google, allume mes lumières".

Pour obtenir d'autres exemples de commandes, consultez la section Contrôler les appareils connectés par commande vocale de Contrôler les appareils connectés via l'application Google Home.

Application Google Home

Vous pouvez appuyer sur les libellés On (Allumer) et Off (Éteindre) à 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 de l'Assistant Google

Dans l'extension Google Home pour VS Code, à l'aide du simulateur de l'Assistant Google, vous pouvez envoyer des requêtes à 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 :

  • Installer un environnement de développement Matter, des exigences à un état de fonctionnement
  • Créer et exécuter un appareil Matter
  • Mettre en service et contrôler votre appareil depuis Google Home

Pour en savoir plus sur Matter, consultez les références suivantes :

  • Le Matter Primer de Google Home, où vous découvrirez les concepts et principes importants du protocole Matter
  • La spécification Matter, la bibliothèque d'appareils Matter et la bibliothèque de clusters d'applications Matter, publiées par la Connected Standard Alliance
  • Le dépôt GitHub Matter.