CoderTools

Codec Matter Protocol

Decodificar y codificar datos TLV Matter para desarrollo de hogar inteligente

🔒 100% Procesamiento localLos datos que introduce se procesan completamente en su navegador. No se envían a ningún servidor.

Pegue datos TLV capturados desde dispositivos Matter o analizadores de protocolo

Clic para cargar ejemplo

Resultado decodificado

Introduzca datos TLV y haga clic en Decodificar

Tipos de elementos TLV

Nombre del tipo Código de tipo Tamaño del valor
Entero con signo0x00-0x031, 2, 4, 8 bytes
Entero sin signo0x04-0x071, 2, 4, 8 bytes
Booleano0x08-0x090 bytes
Float0x0A4 bytes
Double0x0B8 bytes
Cadena UTF-80x0C-0x0F1/2/4/8-byte length + data
Cadena de bytes0x10-0x131/2/4/8-byte length + data
Null0x140 bytes
Estructura0x15End-of-Container (0x18)
Array0x16End-of-Container (0x18)
Lista0x17End-of-Container (0x18)
Fin de contenedor0x180 bytes

Referencia técnica Matter Protocol

Guía de uso del esquema C Struct

El modo de esquema C Struct le permite definir estructuras de datos utilizando la sintaxis familiar de C/C++. El analizador extrae nombres de campos, tipos y etiquetas TLV de sus definiciones de estructura, y luego genera un formulario visual para la entrada de datos y codificación TLV.

Sintaxis soportada

// Supported syntax forms:
typedef struct { ... } StructName;
typedef struct Tag { ... } StructName;
struct StructName { ... };

Tipos de datos soportados

Categoría Tipos C/C++ Tipo TLV
Entero con signo int8_t, int16_t, int32_t, int64_t, char, short, int, long int (1-8B)
Entero sin signo uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t uint (1-8B)
Booleano bool, _Bool bool
Punto flotante float, double float/double
Cadena char[], char[N], char* UTF-8 string
Array de bytes uint8_t[], uint8_t[N], uint8_t* byte string

Métodos de anotación de etiquetas

Use comentarios para especificar etiquetas de contexto TLV para cada campo. Si no se especifica ninguna etiqueta, las etiquetas se asignan automáticamente comenzando desde 0.

uint8_t field1;     // tag 0
uint16_t field2;    // tag: 1
uint32_t field3;    /* tag 2 */
@tag(3) uint64_t field4;

Soporte de arrays

Se soportan arrays de tamaño fijo (ej. uint32_t data[4]) y arrays de tamaño variable (ej. uint8_t data[]). El formulario proporcionará un botón «Agregar elemento» para la gestión dinámica de elementos del array.

uint32_t subjects[4];  // Fixed-size array (max 4 items)
uint8_t data[];        // Variable-size array

Limitaciones actuales

  • Las directivas de preprocesador (#define, #ifdef) no están soportadas
  • Los alias typedef (ej. typedef uint8_t BYTE) no están soportados
  • Enums, unions y campos de bits no están soportados
  • La edición de estructuras anidadas está limitada a un nivel
  • Las estructuras anónimas no están soportadas

Qué es Matter

Matter es un estándar de conectividad unificado para dispositivos de hogar inteligente, desarrollado por la Connectivity Standards Alliance (CSA) bajo el nombre original Project CHIP. El estándar permite la interoperabilidad entre ecosistemas como Apple HomeKit, Google Home, Amazon Alexa y Samsung SmartThings. Los dispositivos Matter se comunican mediante Wi-Fi, Thread y Ethernet, utilizando protocolos de transporte basados en IPv6. Matter 1.0 fue publicado en octubre de 2022.

Formato de codificación TLV Matter

Matter utiliza un esquema de codificación binaria TLV (Tag-Length-Value) compacto para serializar datos estructurados. El formato se usa extensamente en la pila del protocolo, incluyendo mensajes del modelo de interacción, datos de atestación de dispositivos y payloads de puesta en servicio.

Estructura del byte de control

El byte de control es el primer byte de cada elemento TLV. Los 5 bits inferiores especifican el tipo de elemento y los 3 bits superiores indican la forma de la etiqueta.

Campo de bits Descripción
Bits [4:0]Tipo de elemento (entero con/sin signo, booleano, flotante, cadena UTF-8, cadena de bytes, null, estructura, array, lista, fin de contenedor)
Bits [7:5]Forma de etiqueta: 000=Anónimo, 001=Específico de contexto (etiqueta 1 byte), 010-110=Etiquetas de perfil, 111=Totalmente cualificado

Tipos de elementos TLV

El campo de tipo de elemento determina cómo se codifica la parte del valor. Los tipos enteros usan 1, 2, 4 u 8 bytes. Los booleanos se codifican directamente en el campo de tipo. Las cadenas y arrays de bytes llevan un prefijo de longitud seguido de los datos.

Formato del payload de incorporación

Al poner en servicio un dispositivo Matter, la información de configuración se codifica en un payload compacto incrustado en un código QR o expresado como código de emparejamiento manual numérico. El payload QR code comienza con el prefijo «MT:» seguido de una cadena binaria codificada en Base38.

Codificación Base38

Los payloads QR code Matter usan un conjunto de caracteres Base38 (0-9, A-Z, -.) para representación alfanumérica eficiente. Cada grupo de 3 bytes se codifica en 5 caracteres Base38.

Código de emparejamiento manual

El código de emparejamiento manual de 11 dígitos proporciona un método alternativo cuando la lectura del QR no está disponible. Codifica el discriminador, el código de configuración y un dígito de control Verhoeff. La versión de 21 dígitos incluye además el ID de fabricante y el ID de producto.

Dígito de control Verhoeff

El código de emparejamiento manual utiliza el algoritmo Verhoeff para la detección de errores. Este algoritmo detecta todos los errores de un dígito y la mayoría de los errores de transposición adyacente.

Casos de uso en desarrollo

  • Depuración de payloads TLV Matter capturados de interacciones de dispositivos
  • Inspección de mensajes de solicitud y respuesta del modelo de interacción
  • Verificación de payloads de puesta en servicio incrustados en códigos QR
  • Validación de estructuras TLV de certificados de atestación
  • Construcción de payloads de prueba para tests de conformidad Matter

Referencias de especificación

La especificación Matter es mantenida por la Connectivity Standards Alliance (CSA). El formato de codificación TLV se define en el Apéndice A de la especificación principal. La codificación de cargas de incorporación se cubre en la Sección 5.1.

Menú Rápido

Sin herramientas recientes