CoderTools

Codec Matter Protocol

Décoder et encoder les données TLV Matter pour la maison connectée

🔒 100% Traitement localLes données que vous saisissez sont traitées entièrement dans votre navigateur et ne sont envoyées à aucun serveur.

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

Types d'éléments TLV

Nom du type Code type Taille de la valeur
Entier signé0x00-0x031, 2, 4, 8 bytes
Entier non signé0x04-0x071, 2, 4, 8 bytes
Booléen0x08-0x090 bytes
Float0x0A4 bytes
Double0x0B8 bytes
Chaîne UTF-80x0C-0x0F1/2/4/8-byte length + data
Chaîne d'octets0x10-0x131/2/4/8-byte length + data
Null0x140 bytes
Structure0x15End-of-Container (0x18)
Tableau0x16End-of-Container (0x18)
Liste0x17End-of-Container (0x18)
Fin de conteneur0x180 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.

Menu Rapide

Aucun outil récent