Codec Matter Protocol
Decodificar y codificar datos TLV Matter para desarrollo de hogar inteligente
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
Visor de bytes
Defina elementos TLV usando notación JSON con anotaciones de tipo
Clic para cargar ejemplo de codificación
Define tu estructura de datos usando sintaxis C/C++. Usa comentarios // tag N para especificar etiquetas TLV.
Esquema analizado
Completar valores de campos
Resultado codificado
Introduzca JSON y haga clic en Codificar
Visor de bytes
Estadísticas de codificación
Introduzca cadena QR Matter (MT:...) o código de emparejamiento manual (11/21 dígitos)
Clic para cargar ejemplo
Resultado del análisis de incorporación
Introduzca una cadena QR o código de emparejamiento para analizar
Información básica
Rango: 1-99999998. Inválidos: 0, 11111111, 22222222, etc.
Flujo de puesta en servicio
Capacidades de descubrimiento
Formato de salida
Resultado generado
Complete los parámetros y haga clic en Generar
Tipos de elementos TLV
| Nombre del tipo | Código de tipo | Tamaño del valor |
|---|---|---|
| Entero con signo | 0x00-0x03 | 1, 2, 4, 8 bytes |
| Entero sin signo | 0x04-0x07 | 1, 2, 4, 8 bytes |
| Booleano | 0x08-0x09 | 0 bytes |
| Float | 0x0A | 4 bytes |
| Double | 0x0B | 8 bytes |
| Cadena UTF-8 | 0x0C-0x0F | 1/2/4/8-byte length + data |
| Cadena de bytes | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| Estructura | 0x15 | End-of-Container (0x18) |
| Array | 0x16 | End-of-Container (0x18) |
| Lista | 0x17 | End-of-Container (0x18) |
| Fin de contenedor | 0x18 | 0 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.
- Especificación Core de Matter - Descargar desde CSA
- Repositorio de Código Abierto - github.com/project-chip/connectedhomeip
- Documentación del SDK - project-chip.github.io/connectedhomeip-doc
- Manual del Desarrollador Matter - handbook.buildwithmatter.com
Herramientas Relacionadas
Codec CBOR
Codificador/decodificador CBOR binario con conversión JSON, visor hex y tags semánticos para desarrollo IoT
Herramienta Protocol Buffers
Codificador/decodificador Protocol Buffers en línea. Analizar esquemas .proto, codificar JSON a binario, o decodificar binario a JSON
Codec MQTT
Codificar y decodificar paquetes del protocolo MQTT con análisis detallado de campos, visor hex y constructor de paquetes
Herramienta de Firma ECDSA
Generar pares de claves ECDSA, firmar mensajes y verificar firmas con las curvas secp256k1, P-256, P-384, P-521