View a markdown version of this page

Plug-in Matter - Intégrations gérées pour AWS IoT Device Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Plug-in Matter

Qu'est-ce que Matter Plugin

Le plugin Matter est une implémentation de référence construite à l'aide de la Plug-in de protocole personnalisé fonctionnalité du SDK Managed Integrations Hub. Il permet à votre hub de contrôler les appareils Matter à la fois localement sur le même réseau, conformément aux spécifications Matter, et à distance via des intégrations gérées.

Schéma d'architecture illustrant l'intégration du plugin Matter avec le SDK Managed Integrations Hub

Le plugin Matter est inclus dans le SDK du Hub. Il communique avec les appareils Matter, implémente les fonctionnalités de Matter Controller et expose un chemin de contrôle à distance via des intégrations gérées.

chip-tool est un contrôleur de référence basé sur la ligne de commande de connectedhomeip. Il agit comme une structure Commissioner/Controller on a Matter, vous permettant de mettre en service des appareils, des read/write attributs et d'invoquer des commandes. Il est destiné au développement et aux tests d'interopérabilité. Dans ce guide, le plugin Matter utilisera un outil à puce pour contrôler l'appareil Matter et démontrera également la mise en service de Matter depuis l'application mobile.

La portée de cette distribution n'inclut pas d'application mobile de production, pas plus qu'elle ne couvre les activités de certification et de production telles que les tests et la certification en laboratoire CSA. Ils font toujours partie de votre processus de développement de produits.

Comment créer le plugin Matter

Le plugin Matter possède les dépendances suivantes en plus du SDK Hub :

Configurez le dépôt à l'aide de la commande suivante :

cd IotMI-DeviceSDK-MatterPlugin mkdir build cd build cmake ..

Construisez-le ensuite avec la commande suivante :

cmake --build .

Après la construction, ajoutez le chemin de la bibliothèque à LD_LIBRARY_PATH :

export LD_LIBRARY_PATH=/path/to/libraries:$LD_LIBRARY_PATH

Démarrage rapide : configurer et exécuter le plugin Matter

Suivez les étapes ci-dessous pour configurer le plugin Matter et la solution Matter correspondante. Le flux suppose deux machines : un hub (exécutant le plugin Hub SDK + Matter) et un Raspberry Pi qui représente « l'application mobile » pour la mise en service et le contrôle de base.

Gestion des identifiants de nœuds

Dans Matter, chaque nœud d'une structure, y compris les appareils, les contrôleurs et les commissaires, doit avoir un identifiant de nœud unique. Pour éviter les collisions, une politique d'allocation cohérente est requise. Dans ce guide, les ID de nœud sont attribués manuellement ; en production, vous devez gérer correctement les ID de nœud.

Pour les exemples présentés dans ce document, l'outil à puce du Hub (utilisé par le plugin Matter) utilise l'ID de nœud par défaut112233, et l'outil à puce de l'application mobile Raspberry Pi utilise l'identifiant de nœud. 123456 Les appareils nouvellement mis en service se voient attribuer des identifiants de nœud non conflictuels sur la même structure (par exemple, 101 dans le démarrage rapide).

Conditions préalables

Avant de commencer, vérifiez que vous disposez des éléments suivants :

  • Votre Hub est déjà intégré aux intégrations gérées et le SDK du Hub est déployé (via un script ou systemd). Si ce n'est pas déjà fait, passez Configuration de l'intégration du hub à la section Intégrations gérées et Installez et validez le SDK du hub d'intégrations gérées à l'exécution du SDK du hub. Une fois intégré, notez l'identifiant d'objet géré de votre hub. Cela sera exigé ultérieurement.

  • Vous avez un Raspberry Pi (ou n'importe quelle machine) capable d'exécuter à la fois chip-tool et l'AWS CLI.

  • Vous avez un appareil Matter à tester. Il peut s'agir d'un appareil Matter réel ou d'un appareil Matter virtuel (par exemple, une application d'éclairage)

Étape 1. Préparez le Raspberry Pi (représentant l'application mobile)

  • Installation de la CLI AWS et création et installation de chip-tool

  • Construisez chip-tool en suivant le guide de construction officiel de chip-tool. La version que nous avons vérifiée est la v1.4.2.0.

  • Installez l'AWS CLI en suivant les instructions officielles.

  • Préparer le stockage persistant pour chip-tool

    mkdir -p $HOME/iotmi/matter/
  • Générez la chaîne de certificats du commissaire (attribuez un ID 123456 de nœud à cette puce)

    cd connectedhomeip/ cd out/chip-tool/ ./chip-tool pairing get-commissioner-root-certificate \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/

La chaîne générée est stockée dans : $HOME/iotmi/matter/chip_tool_config.alpha.ini

Vous copierez ce fichier dans le Hub ultérieurement.

Étape 2. Préparez le hub (qui exécute le plugin Matter)

  • Créez ou installez un outil à puce sur le hub (le plugin Matter l'utilise pour effectuer des opérations Matter). Vous pouvez vous référer au guide de construction de chip-tool. La version que nous avons vérifiée est la v1.4.2.0.

Nous aurons également besoin du sha256sum du chip-tool pour une utilisation ultérieure. Vous pouvez utiliser la commande suivante pour obtenir le sha256sum :

sha256sum /path/to/chip-tool
  • Préparez le stockage et copiez le fichier du commissaire depuis le Raspberry Pi

    mkdir -p $HOME/iotmi/matter/ # From Raspberry Pi to Hub (example): # scp $HOME/iotmi/matter/chip_tool_config.alpha.ini user@HUB_HOST:$HOME/iotmi/matter/
  • Exécutez le plugin Matter (fournissez le chemin de la puce, son code SHA256 et le dossier de stockage)

    ./iotmi_matter_plugin \ --chip-tool-path /path/to/chip-tool \ --sha256sum SHA256SUM_OF_THE_CHIP_TOOL \ --storage-folder $HOME/iotmi/matter/ \ --node-id 112233

Les étapes ci-dessous doivent être exécutées sur le Raspberry Pi, c'est-à-dire sur le Commissioner.

Étape 3. Mettre en service un appareil Matter (sur le Raspberry Pi)

Utilisez chip-tool pour mettre en service l'appareil à l'aide de son code QR décodé et de ses informations d'identification. Wi-Fi Dans cet exemple, l'appareil utilisera l'ID de nœud 101 et l'ID de nœud commissaire est123456.

./chip-tool pairing code-wifi 101 \ YOUR_WIFI_SSID YOUR_WIFI_PW \ MT:MFAA0W8C00UFQV2VL00 \ --bypass-attestation-verifier 1 \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/

Remarques :

  • 101est l'ID du nœud Matter de l'appareil (vous pouvez choisir une valeur différente).

  • MT:MFAA0W8C00UFQV2VL00est le contenu QR décodé pour l'appareil. Pour obtenir le contexte décodé à partir d'un code QR, vous devez choisir une application ou une bibliothèque de codes QR pour le décoder. Vous pouvez également utiliser un service Web qui prend en charge le décodage du code QR.

  • -bypass-attestation-verifier 1est uniquement destiné aux tests. Pour la production, mettez à jour le magasin PAA et effectuez des vérifications d'attestation.

chip-tool prend en charge différentes méthodes de couplage, y compris le couplage par code QR ou code PIN avec Thread ou des appareils. WiFi Pour plus d'informations sur la commande chip-tool pairing, consultez la documentation officielle.

Étape 4 : Accorder l'accès au Hub sur l'appareil (mettre à jour l'ACL)

Après la mise en service, laissez l'outil à puce du Hub contrôler l'appareil. Dans cet exemple, l'ID de nœud 123456 (Raspberry Pi) possède l'autorisation d'administrateur (5) et l'ID de nœud 112233 (Hub) possède l'autorisation de gestion (4).

chip-tool accesscontrol write acl \ '[{"fabricIndex":1,"privilege":5,"authMode":2,"subjects":[123456], "targets": null},{"fabricIndex":1,"privilege":4,"authMode":2,"subjects":[112233], "targets": null}]' \ 101 0 \ --commissioner-nodeid 123456 --storage-directory $HOME/iotmi/matter/

Étape 5. Création d'un objet géré pour l'appareil (User-Guided Configuration)

  • Lancez la découverte (remplacez-la par l'ID d'objet géré de votre Hub) :

    aws iot-managed-integrations start-device-discovery \ --discovery-type CUSTOM \ --custom-protocol-detail '{"Name": "Matter", "NodeId":"101", "FabricId":"1"}' \ --controller-identifier <HUB_MANAGED_THING_ID>

Un exemple de réponse inclut un identifiant de tâche de configuration guidé par l'utilisateur :

{ "Id": "USER_GUIDED_SETUP_JOB_ID", "StartedAt": 1753683326.056 }
  • Interrogez les appareils découverts à l'aide de l'ID de tâche :

    aws iot-managed-integrations \ list-discovered-devices --identifier <USER_GUIDED_SETUP_JOB_ID>

Exemple de réponse :

{ "Items": [ { "DeviceTypes": [], "DiscoveredAt": "2025-08-05T06:46:35.407000+08:00", "AuthenticationMaterial": "<AUTH_MATERIAL>" } ] }
  • Créez un objet géré pour l'appareil à l'aide de AuthenticationMaterial :

    aws iot-managed-integrations create-managed-thing \ --role DEVICE \ --authentication-material-type DISCOVERED_DEVICE \ --authentication-material "<AUTH_MATERIAL>"

Exemple de réponse (avec l'ID d'objet géré de l'appareil) :

{ "Id": "DEVICE_MANAGED_THING_ID", "Arn": "arn:aws:iotmanagedintegrations:eu-west-1:228183742813:managed-thing/515cf5a707ec41aaabb9914a1dd2889f", "CreatedAt": "2025-08-06T15:00:08.718000+08:00" }

Étape 6. Contrôlez l'appareil via des intégrations gérées

Utilisez la send-managed-thing-command commande pour envoyer une commande à votre objet géré.

json=$(jq -cr '.|@json' <<EOF [ { "endpointId": "1", "capabilities": [ { "id": "matter.OnOff@1.4", "name": "On/Off", "version": "1", "actions": [ { "name": "Toggle", "parameters": {} } ] } ] } ] EOF ) aws iot-managed-integrations send-managed-thing-command \ --managed-thing-id "DEVICE_MANAGED_THING_ID" \ --endpoints "$json"

Étape 7. Lire l'état de l'appareil

Envoyez la commande suivante pour obtenir l'état de l'appareil.

aws iot-managed-integrations get-managed-thing-state \ --managed-thing-id "DEVICE_MANAGED_THING_ID"

Exemple de résultat :

{ "Endpoints": [ { "endpointId": "1", "capabilities": [ { "id": "matter.OnOff@1.4", "name": "On/Off", "version": "1.4", "properties": [ { "value": { "lastChangedAt": "2025-08-14T13:16:02.132Z", "propertyValue": false }, "name": "OnOff" } ] } ] } ] }

Étape 8. Supprimer l'objet géré de votre hub

  • Supprimez l'objet géré de votre hub à l'aide de la commande suivante

    aws iot-managed-integrations delete-managed-thing \ --identifier "DEVICE_MANAGED_THING_ID"
  • Déconnectez l'appareil du tissu du Raspberry Pi (si vous le souhaitez) :

    ./chip-tool pairing unpair 101 \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/

Types d'appareils Matter pris en charge

Ajout du support pour des clusters supplémentaires

Pour étendre le plug-in Matter afin de prendre en charge des types de périphériques et des fonctionnalités supplémentaires, modifiez le fichier matter_action_converter.cpp en suivant le modèle suivant :

Modèle de mise en œuvre :

  1. Définissez des mappages pour les enums et les bitmaps

  2. Ajouter une UpdateState logique pour les attributs inscriptibles

  3. Ajouter le traitement des commandes pour les actions de cluster

  4. Ajouter l'analyse des attributs pour les rapports d'état

Utilisez les clusters existants comme modèles :

  1. OnOff cluster - Référence la plus simple montrant les quatre composants avec des énumérations de base, des attributs inscriptibles, des commandes et des rapports sur les attributs

  2. DoorLock cluster - Exemple complexe illustrant plusieurs types d'énumération, des champs bitmap, des paramètres de structure, des paramètres de commande facultatifs et une couverture étendue des attributs

Tous les clusters pris en charge ( OnOffIdentify, LevelControl, DoorLock,, Thermostat ColorControl,, BooleanState) suivent cette structure. Passez en revue les implémentations existantes dans le fichier matter_action_converter.cpp pour comprendre le modèle complet.

Intégrez différentes solutions Matter Controller

Cette section fournit des conseils sur la manière d'intégrer différentes solutions Matter Controller au plugin Matter. Il décrit les approches possibles et les considérations importantes, mais ne fournit pas de code de mise en œuvre détaillé.

Il existe deux manières principales d'intégrer les solutions Matter Controller. La première consiste à utiliser le plugin Matter avec un outil à puce personnalisé. La seconde consiste à utiliser un Matter Controller de votre choix et à l'intégrer aux intégrations gérées via la bibliothèque de protocoles personnalisés.

Utilisation du plugin Matter avec un plugin personnalisé Chip-Tool

Dans cette approche, le plugin Matter est étendu pour fonctionner avec une version personnalisée du Chip-Tool. Pour ce faire, vous devrez peut-être modifier le code source du plugin Matter et introduire une logique supplémentaire :

  • Ajustez la logique d'analyse STDIO : si votre outil à puce personnalisé génère des journaux avec un modèle différent, mettez à jour la logique d'analyse en conséquence.

  • Implémenter un stockage sécurisé : le plugin Matter fournit un mécanisme de stockage basé sur des fichiers pour les informations de l'appareil. Pour une utilisation en production, remplacez-la par une implémentation de stockage plus sécurisée ou appliquez un chiffrement aux données. Et il a également besoin de procédures de nettoyage appropriées lorsque le plugin Matter est désinstallé.

  • Mettre en œuvre la signature binaire et la protection de l'intégrité : dans les déploiements de production, vous devez appliquer la protection de l'intégrité à la fois à l'outil à puce personnalisé et au plug-in Matter étendu. Cela inclut la signature des fichiers binaires dans le cadre du processus de publication de votre logiciel, la vérification des signatures au démarrage et l'intégration des fonctionnalités de sécurité de la plateforme telles que le démarrage sécurisé ou les outils d' OS-level intégrité.

  • Introduisez la limitation du task/event débit : pour éviter toute surcharge, assurez-vous que le plug-in Matter inclut une limitation appropriée du taux de tâches et d'événements. Dans les déploiements de production, vous devez également ajouter des mesures de base et une surveillance pour détecter les modèles de mise à jour anormaux et limiter ou suspendre temporairement l'appareil ou l'abonnement concerné. Ce comportement semblable à celui d'un disjoncteur n'est pas fourni par l'implémentation de référence et doit être implémenté par le client.

  • Intégrez directement la logique de la fonction principale de l'outil à puce : si vous préférez ne pas vous fier à STDIO, vous pouvez intégrer la fonction principale de l'outil à puce dans le plugin Matter. input/output La logique standard peut ensuite être connectée aux read/write fonctions de la ChptoolProc classe.

  • Support de génération de code : implémentez un mécanisme pour gérer les mises à jour des versions des spécifications Matter par le biais de la génération de code.

  • Implémentez les fonctionnalités d'administration des sujets, notamment :

    • Affectation d'identifiants de nœuds aux appareils Commissioner, Controller et Matter.

    • Gestion de plusieurs tissus.

Du côté de l'outil à puce, les améliorations suivantes sont également recommandées :

  • Utilisez un stockage sécurisé : chip-tool stocke les certificats Matter, les clés privées et les statistiques dans des annuaires locaux. Remplacez-le par une implémentation sécurisée.

  • Activer le traitement parallèle : par défaut, Chip-Tool exécute une commande à la fois. L'ajout de la prise en charge de l'exécution parallèle peut améliorer l'efficacité dans certains scénarios.

Utilisation d'un Matter Controller existant avec des intégrations gérées

Si votre Matter Controller n'est pas basé sur un outil à puce (par exemple, une solution basée sur une Python-based implémentation ou un appel de fonction), l'approche STDIO peut ne pas être adaptée. Dans de tels cas, vous pouvez intégrer directement les intégrations gérées à l'aide d'unPlug-in de protocole personnalisé, tout en utilisant le plugin Matter comme référence. Les considérations suivantes s'appliquent :

  • Conservez les identifiants de structure et de nœud : assurez-vous que les métadonnées des appareils, telles que adding/removing les appareils et les attributs de mise en cache, sont constamment mises à jour.

  • Gérer les abonnements : chaque appareil doit conserver jusqu'à un abonnement actif, afin que son état puisse être mis à jour en permanence.

  • Propagation des modifications d'état : lorsqu'un appareil met à jour son état, vérifiez les modifications et propagez les événements aux intégrations gérées.

  • Implémenter un traducteur de modèle de données Matter : Bien que Managed Integrations utilise le modèle de données Matter, sa représentation est au format JSON. Un traducteur est nécessaire pour établir une correspondance entre le format de votre modèle de données Matter et la représentation JSON.