Matter Protocol Codec
Matter TLV-Daten für Smart-Home-Entwicklung dekodieren und kodieren
TLV-Daten aus Matter-Geräten oder Protokollanalysatoren einfügen
Klicken zum Laden eines Beispiels
Dekodierungsergebnis
TLV-Daten eingeben und Dekodieren klicken
Byte-Viewer
TLV-Elemente in JSON-Notation mit Typannotationen definieren
Klicken zum Laden eines Kodierbeispiels
Definieren Sie Ihre Datenstruktur mit C/C++-Syntax. Verwenden Sie // tag N Kommentare für TLV-Tags.
Analysiertes Schema
Feldwerte eingeben
Kodierungsergebnis
JSON eingeben und Kodieren klicken
Byte-Viewer
Kodierungsstatistik
Matter QR-Code-String (MT:...) oder manuellen Kopplungscode (11/21 Ziffern) eingeben
Klicken zum Laden eines Beispiels
Analyseergebnis der Onboarding-Informationen
QR-Code-String oder Kopplungscode zur Analyse eingeben
Grundinformationen
Bereich: 1-99999998. Ungültig: 0, 11111111, 22222222, usw.
Inbetriebnahme-Flow
Erkennungsfähigkeiten
Ausgabeformat
Generiertes Ergebnis
Füllen Sie die Parameter aus und klicken Sie auf Generieren
TLV-Elementtypen
| Typname | Typcode | Wertgröße |
|---|---|---|
| Vorzeichenbehaftete Ganzzahl | 0x00-0x03 | 1, 2, 4, 8 bytes |
| Vorzeichenlose Ganzzahl | 0x04-0x07 | 1, 2, 4, 8 bytes |
| Boolean | 0x08-0x09 | 0 bytes |
| Float | 0x0A | 4 bytes |
| Double | 0x0B | 8 bytes |
| UTF-8-Zeichenkette | 0x0C-0x0F | 1/2/4/8-byte length + data |
| Byte-Zeichenkette | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| Struktur | 0x15 | End-of-Container (0x18) |
| Array | 0x16 | End-of-Container (0x18) |
| Liste | 0x17 | End-of-Container (0x18) |
| Container-Ende | 0x18 | 0 bytes |
Matter Protocol Technische Referenz
Anleitung zur Verwendung des C-Struct-Schemas
Der C-Struct-Schema-Modus ermöglicht es Ihnen, Datenstrukturen mit der vertrauten C/C++-Syntax zu definieren. Der Parser extrahiert Feldnamen, Typen und TLV-Tags aus Ihren Strukturdefinitionen und generiert dann ein visuelles Formular für die Dateneingabe und TLV-Kodierung.
Unterstützte Syntax
// Supported syntax forms:
typedef struct { ... } StructName;
typedef struct Tag { ... } StructName;
struct StructName { ... };
Unterstützte Datentypen
| Kategorie | C/C++-Typen | TLV-Typ |
|---|---|---|
| Vorzeichenbehaftete Ganzzahl | int8_t, int16_t, int32_t, int64_t, char, short, int, long | int (1-8B) |
| Vorzeichenlose Ganzzahl | uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t | uint (1-8B) |
| Boolescher Wert | bool, _Bool | bool |
| Gleitkomma | float, double | float/double |
| Zeichenkette | char[], char[N], char* | UTF-8 string |
| Byte-Array | uint8_t[], uint8_t[N], uint8_t* | byte string |
Methoden zur Tag-Annotation
Verwenden Sie Kommentare, um TLV-Kontext-Tags für jedes Feld anzugeben. Wenn kein Tag angegeben wird, werden Tags automatisch ab 0 zugewiesen.
uint8_t field1; // tag 0 uint16_t field2; // tag: 1 uint32_t field3; /* tag 2 */ @tag(3) uint64_t field4;
Array-Unterstützung
Arrays mit fester Größe (z.B. uint32_t data[4]) und Arrays mit variabler Größe (z.B. uint8_t data[]) werden unterstützt. Das Formular bietet eine Schaltfläche «Element hinzufügen» für die dynamische Verwaltung von Array-Elementen.
uint32_t subjects[4]; // Fixed-size array (max 4 items) uint8_t data[]; // Variable-size array
Aktuelle Einschränkungen
- Präprozessor-Direktiven (#define, #ifdef) werden nicht unterstützt
- typedef-Aliase (z.B. typedef uint8_t BYTE) werden nicht unterstützt
- Enums, Unions und Bitfelder werden nicht unterstützt
- Die Bearbeitung verschachtelter Strukturen ist auf eine Ebene beschränkt
- Anonyme Strukturen werden nicht unterstützt
Was ist Matter
Matter ist ein einheitlicher Konnektivitätsstandard für Smart-Home-Geräte, entwickelt von der Connectivity Standards Alliance (CSA) unter dem ursprünglichen Namen Project CHIP. Der Standard ermöglicht Interoperabilität zwischen Apple HomeKit, Google Home, Amazon Alexa und Samsung SmartThings. Matter-Geräte kommunizieren über Wi-Fi, Thread und Ethernet mit IPv6-basierten Transportprotokollen. Matter 1.0 wurde im Oktober 2022 veröffentlicht.
Matter TLV-Kodierungsformat
Matter verwendet ein kompaktes TLV (Tag-Length-Value) Binärkodierungsschema zur Serialisierung strukturierter Daten. Das Format wird im gesamten Protokollstapel verwendet, einschließlich Interaction-Model-Nachrichten, Geräteattestierungsdaten und Inbetriebnahme-Payloads.
Kontrollbyte-Struktur
Das Kontrollbyte ist das erste Byte jedes TLV-Elements. Die unteren 5 Bits geben den Elementtyp an und die oberen 3 Bits kennzeichnen die Tag-Form.
| Bitfeld | Beschreibung |
|---|---|
| Bits [4:0] | Elementtyp (vorzeichenbehaftete/vorzeichenlose Ganzzahl, Boolean, Gleitkomma, UTF-8-String, Byte-String, Null, Struktur, Array, Liste, Container-Ende) |
| Bits [7:5] | Tag-Form: 000=Anonym, 001=Kontextspezifisch (1-Byte-Tag), 010-110=Profilspezifische Tags, 111=Voll qualifiziert |
TLV-Elementtypen
Das Elementtyp-Feld bestimmt die Kodierung des Werteteils. Ganzzahltypen verwenden 1, 2, 4 oder 8 Bytes. Boolesche Werte werden direkt im Typ-Feld kodiert. Strings und Byte-Arrays tragen ein Längenpräfix gefolgt von den Daten.
Onboarding-Payload-Format
Bei der Inbetriebnahme eines Matter-Geräts werden die Setup-Informationen in einem kompakten Payload kodiert, der in einen QR-Code eingebettet oder als numerischer manueller Kopplungscode dargestellt wird. Der QR-Code-Payload beginnt mit dem Präfix MT:" gefolgt von einem Base38-kodierten Binärstring.
Base38-Kodierung
Matter QR-Code-Payloads verwenden einen Base38-Zeichensatz (0-9, A-Z, -.) für effiziente alphanumerische Darstellung. Jeweils 3 Bytes werden in 5 Base38-Zeichen kodiert.
Manueller Kopplungscode
Der 11-stellige manuelle Kopplungscode bietet eine Alternative, wenn QR-Code-Scannen nicht verfügbar ist. Er kodiert den Diskriminator, den Setup-Passcode und eine Verhoeff-Prüfziffer. Die 21-stellige Version enthält zusätzlich Hersteller-ID und Produkt-ID.
Verhoeff-Prüfziffer
Der manuelle Kopplungscode verwendet den Verhoeff-Algorithmus zur Fehlererkennung. Dieser Algorithmus erkennt alle Einzelziffernfehler und die meisten benachbarten Transpositionsfehler.
Entwicklungs-Anwendungsfälle
- Debugging von Matter TLV-Payloads aus Geräteinteraktionen
- Inspektion von Interaction-Model-Anfrage- und Antwortnachrichten
- Überprüfung von in QR-Codes eingebetteten Inbetriebnahme-Payloads
- Validierung von TLV-Strukturen in Geräteattestierungszertifikaten
- Erstellung von Testpayloads für Matter-Protokoll-Konformitätstests
Spezifikationsreferenzen
Die Matter-Spezifikation wird von der Connectivity Standards Alliance (CSA) gepflegt. Das TLV-Kodierungsformat ist in Anhang A der Kernspezifikation definiert. Die Onboarding-Payload-Kodierung wird in Abschnitt 5.1 behandelt.
- Matter-Kernspezifikation - Von CSA herunterladen
- Open-Source-Repository - github.com/project-chip/connectedhomeip
- SDK-Dokumentation - project-chip.github.io/connectedhomeip-doc
- Matter-Entwicklerhandbuch - handbook.buildwithmatter.com
Verwandte Tools
CBOR Codec
CBOR Binärformat kodieren und dekodieren mit JSON-Konvertierung, Hex-Viewer und semantischen Tags für IoT-Entwicklung
Protocol Buffers Tool
Online Protocol Buffers Encoder/Decoder. Parsen Sie .proto-Schemata, kodieren Sie JSON in Binär oder dekodieren Sie Binär in JSON
MQTT-Codec
MQTT-Protokollpakete kodieren und dekodieren mit detaillierter Feldanalyse, Hex-Viewer und Paket-Builder
ECDSA-Signaturwerkzeug
Generieren Sie ECDSA-Schlüsselpaare, signieren Sie Nachrichten und verifizieren Sie Signaturen mit secp256k1, P-256, P-384, P-521 Kurven