Codec Matter Protocol
Décoder et encoder les données TLV Matter pour la maison connectée
Collez les données TLV capturées depuis un appareil Matter ou un analyseur de protocole
Cliquer pour charger un exemple
Résultat du décodage
Entrez des données TLV et cliquez sur Décoder
Visualiseur d'octets
Définissez les éléments TLV en notation JSON avec annotations de type
Cliquer pour charger un exemple d'encodage
Définissez votre structure de données en syntaxe C/C++. Utilisez les commentaires // tag N pour spécifier les tags TLV.
Schéma analysé
Remplir les valeurs des champs
Résultat de l'encodage
Entrez du JSON et cliquez sur Encoder
Visualiseur d'octets
Statistiques d'encodage
Entrez une chaîne QR code Matter (MT:...) ou un code de jumelage manuel (11/21 chiffres)
Cliquer pour charger un exemple
Résultat de l'analyse d'intégration
Entrez une chaîne QR code ou un code de jumelage pour analyser
Informations de base
Plage : 1-99999998. Invalide : 0, 11111111, 22222222, etc.
Flux de mise en service
Capacités de découverte
Format de sortie
Résultat généré
Remplissez les paramètres et cliquez sur Générer
Types d'éléments TLV
| Nom du type | Code type | Taille de la valeur |
|---|---|---|
| Entier signé | 0x00-0x03 | 1, 2, 4, 8 bytes |
| Entier non signé | 0x04-0x07 | 1, 2, 4, 8 bytes |
| Booléen | 0x08-0x09 | 0 bytes |
| Float | 0x0A | 4 bytes |
| Double | 0x0B | 8 bytes |
| Chaîne UTF-8 | 0x0C-0x0F | 1/2/4/8-byte length + data |
| Chaîne d'octets | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| Structure | 0x15 | End-of-Container (0x18) |
| Tableau | 0x16 | End-of-Container (0x18) |
| Liste | 0x17 | End-of-Container (0x18) |
| Fin de conteneur | 0x18 | 0 bytes |
Référence technique Matter Protocol
Guide d'utilisation du schéma C Struct
Le mode schéma C Struct vous permet de définir des structures de données en utilisant la syntaxe familière C/C++. L'analyseur extrait les noms de champs, les types et les tags TLV de vos définitions de structure, puis génère un formulaire visuel pour la saisie des données et l'encodage TLV.
Syntaxe supportée
// Supported syntax forms:
typedef struct { ... } StructName;
typedef struct Tag { ... } StructName;
struct StructName { ... };
Types de données supportés
| Catégorie | Types C/C++ | Type TLV |
|---|---|---|
| Entier signé | int8_t, int16_t, int32_t, int64_t, char, short, int, long | int (1-8B) |
| Entier non signé | uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t | uint (1-8B) |
| Booléen | bool, _Bool | bool |
| Virgule flottante | float, double | float/double |
| Chaîne | char[], char[N], char* | UTF-8 string |
| Tableau d'octets | uint8_t[], uint8_t[N], uint8_t* | byte string |
Méthodes d'annotation de tag
Utilisez des commentaires pour spécifier les tags de contexte TLV pour chaque champ. Si aucun tag n'est spécifié, les tags sont attribués automatiquement à partir de 0.
uint8_t field1; // tag 0 uint16_t field2; // tag: 1 uint32_t field3; /* tag 2 */ @tag(3) uint64_t field4;
Support des tableaux
Les tableaux de taille fixe (par ex. uint32_t data[4]) et les tableaux de taille variable (par ex. uint8_t data[]) sont supportés. Le formulaire fournira un bouton « Ajouter un élément » pour la gestion dynamique des éléments du tableau.
uint32_t subjects[4]; // Fixed-size array (max 4 items) uint8_t data[]; // Variable-size array
Limitations actuelles
- Les directives préprocesseur (#define, #ifdef) ne sont pas supportées
- Les alias typedef (par ex. typedef uint8_t BYTE) ne sont pas supportés
- Les enums, unions et champs de bits ne sont pas supportés
- L'édition de structures imbriquées est limitée à un niveau
- Les structures anonymes ne sont pas supportées
Qu'est-ce que Matter
Matter est un standard de connectivité unifié pour les appareils de maison connectée, développé par la Connectivity Standards Alliance (CSA) sous le nom initial Project CHIP. Le standard assure l'interopérabilité entre les écosystèmes Apple HomeKit, Google Home, Amazon Alexa et Samsung SmartThings. Les appareils Matter communiquent via Wi-Fi, Thread et Ethernet en utilisant des protocoles de transport basés sur IPv6. Matter 1.0 a été publié en octobre 2022.
Format d'encodage TLV Matter
Matter utilise un schéma d'encodage binaire TLV (Tag-Length-Value) compact pour sérialiser les données structurées. Ce format est utilisé dans l'ensemble de la pile protocolaire, notamment dans les messages du modèle d'interaction, les données d'attestation des appareils et les payloads de mise en service.
Structure de l'octet de contrôle
L'octet de contrôle est le premier octet de chaque élément TLV. Les 5 bits inférieurs spécifient le type d'élément et les 3 bits supérieurs indiquent la forme du tag.
| Champ de bits | Description |
|---|---|
| Bits [4:0] | Type d'élément (entier signé/non signé, booléen, flottant, chaîne UTF-8, chaîne d'octets, null, structure, tableau, liste, fin de conteneur) |
| Bits [7:5] | Forme du tag : 000=Anonyme, 001=Spécifique au contexte (tag 1 octet), 010-110=Tags spécifiques au profil, 111=Qualifié complet |
Types d'éléments TLV
Le champ type d'élément détermine l'encodage de la partie valeur. Les types entiers utilisent 1, 2, 4 ou 8 octets. Les booléens sont encodés directement dans le champ type. Les chaînes et tableaux d'octets portent un préfixe de longueur suivi des données.
Format du payload d'intégration
Lors de la mise en service d'un appareil Matter, les informations de configuration sont encodées dans un payload compact intégré dans un QR code ou exprimé sous forme de code de jumelage numérique manuel. Le payload QR code commence par le préfixe « MT: » suivi d'une chaîne binaire encodée en Base38.
Encodage Base38
Les payloads QR code Matter utilisent un jeu de caractères Base38 (0-9, A-Z, -.) pour une représentation alphanumérique efficace. Chaque groupe de 3 octets est encodé en 5 caractères Base38.
Code de jumelage manuel
Le code de jumelage manuel à 11 chiffres offre une méthode alternative de mise en service lorsque la lecture QR code n'est pas disponible. Il encode le discriminateur, le code de configuration et un chiffre de contrôle Verhoeff. La version 21 chiffres inclut également l'ID fournisseur et l'ID produit.
Chiffre de contrôle Verhoeff
Le code de jumelage manuel utilise l'algorithme Verhoeff pour la détection d'erreurs. Cet algorithme détecte toutes les erreurs à un chiffre et la plupart des erreurs de transposition adjacentes.
Cas d'utilisation en développement
- Débogage des payloads TLV Matter capturés depuis les interactions d'appareils
- Inspection des messages de requête et réponse du modèle d'interaction
- Vérification des payloads de mise en service intégrés dans les QR codes
- Validation des structures TLV des certificats d'attestation
- Construction de payloads de test pour les tests de conformité Matter
Références de spécification
La spécification Matter est maintenue par la Connectivity Standards Alliance (CSA). Le format d'encodage TLV est défini dans l'annexe A de la spécification principale. L'encodage des charges utiles d'intégration est couvert dans la section 5.1.
- Spécification Matter Core - Télécharger depuis CSA
- Dépôt Open Source - github.com/project-chip/connectedhomeip
- Documentation SDK - project-chip.github.io/connectedhomeip-doc
- Manuel du développeur Matter - handbook.buildwithmatter.com
Outils Connexes
Codec CBOR
Encodeur/décodeur CBOR binaire avec conversion JSON, visualiseur hex et tags sémantiques pour le développement IoT
Outil Protocol Buffers
Encodeur/décodeur Protocol Buffers en ligne. Analyser les schémas .proto, encoder JSON en binaire, ou décoder binaire en JSON
Codec MQTT
Encoder et décoder les paquets du protocole MQTT avec analyse détaillée des champs, visualiseur hex et constructeur de paquets
Outil de Signature ECDSA
Générer des paires de clés ECDSA, signer des messages et vérifier des signatures avec les courbes secp256k1, P-256, P-384, P-521