Codec Matter Protocol
Decodificar e codificar dados TLV Matter para desenvolvimento de casa inteligente
Cole dados TLV capturados de dispositivos Matter ou analisadores de protocolo
Clique para carregar exemplo
Resultado da decodificação
Insira dados TLV e clique em Decodificar
Visualizador de bytes
Defina elementos TLV usando notação JSON com anotações de tipo
Clique para carregar exemplo de codificação
Defina sua estrutura de dados usando sintaxe C/C++. Use comentários // tag N para especificar tags TLV.
Esquema analisado
Preencher valores dos campos
Resultado da codificação
Insira JSON e clique em Codificar
Visualizador de bytes
Estatísticas de codificação
Insira string QR code Matter (MT:...) ou código de emparelhamento manual (11/21 dígitos)
Clique para carregar exemplo
Resultado da análise de integração
Insira uma string QR code ou código de emparelhamento para analisar
Informações básicas
Intervalo: 1-99999998. Inválidos: 0, 11111111, 22222222, etc.
Fluxo de comissionamento
Capacidades de descoberta
Formato de saída
Resultado gerado
Preencha os parâmetros e clique em Gerar
Tipos de elementos TLV
| Nome do tipo | Código do tipo | Tamanho do valor |
|---|---|---|
| Inteiro com sinal | 0x00-0x03 | 1, 2, 4, 8 bytes |
| Inteiro sem sinal | 0x04-0x07 | 1, 2, 4, 8 bytes |
| Booleano | 0x08-0x09 | 0 bytes |
| Float | 0x0A | 4 bytes |
| Double | 0x0B | 8 bytes |
| String UTF-8 | 0x0C-0x0F | 1/2/4/8-byte length + data |
| String de bytes | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| Estrutura | 0x15 | End-of-Container (0x18) |
| Array | 0x16 | End-of-Container (0x18) |
| Lista | 0x17 | End-of-Container (0x18) |
| Fim do contêiner | 0x18 | 0 bytes |
Referência técnica Matter Protocol
Guia de uso do esquema C Struct
O modo de esquema C Struct permite definir estruturas de dados usando a sintaxe familiar de C/C++. O analisador extrai nomes de campos, tipos e tags TLV das suas definições de estrutura, e então gera um formulário visual para entrada de dados e codificação TLV.
Sintaxe suportada
// Supported syntax forms:
typedef struct { ... } StructName;
typedef struct Tag { ... } StructName;
struct StructName { ... };
Tipos de dados suportados
| Categoria | Tipos C/C++ | Tipo TLV |
|---|---|---|
| Inteiro com sinal | int8_t, int16_t, int32_t, int64_t, char, short, int, long | int (1-8B) |
| Inteiro sem sinal | uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t | uint (1-8B) |
| Booleano | bool, _Bool | bool |
| Ponto flutuante | float, double | float/double |
| String | char[], char[N], char* | UTF-8 string |
| Array de bytes | uint8_t[], uint8_t[N], uint8_t* | byte string |
Métodos de anotação de tags
Use comentários para especificar tags de contexto TLV para cada campo. Se nenhuma tag for especificada, as tags serão atribuídas automaticamente a partir de 0.
uint8_t field1; // tag 0 uint16_t field2; // tag: 1 uint32_t field3; /* tag 2 */ @tag(3) uint64_t field4;
Suporte a arrays
Arrays de tamanho fixo (ex: uint32_t data[4]) e arrays de tamanho variável (ex: uint8_t data[]) são suportados. O formulário fornecerá um botão «Adicionar item» para gerenciamento dinâmico de elementos do array.
uint32_t subjects[4]; // Fixed-size array (max 4 items) uint8_t data[]; // Variable-size array
Limitações atuais
- Diretivas de pré-processador (#define, #ifdef) não são suportadas
- Aliases typedef (ex: typedef uint8_t BYTE) não são suportados
- Enums, unions e campos de bits não são suportados
- A edição de estruturas aninhadas é limitada a um nível
- Estruturas anônimas não são suportadas
O que é Matter
Matter é um padrão de conectividade unificado para dispositivos de casa inteligente, desenvolvido pela Connectivity Standards Alliance (CSA) sob o nome original Project CHIP. O padrão permite interoperabilidade entre ecossistemas como Apple HomeKit, Google Home, Amazon Alexa e Samsung SmartThings. Os dispositivos Matter comunicam via Wi-Fi, Thread e Ethernet usando protocolos de transporte baseados em IPv6. Matter 1.0 foi lançado em outubro de 2022.
Formato de codificação TLV Matter
Matter utiliza um esquema de codificação binária TLV (Tag-Length-Value) compacto para serializar dados estruturados. O formato é usado extensivamente na pilha de protocolo, incluindo mensagens do modelo de interação, dados de atestação de dispositivos e payloads de comissionamento.
Estrutura do byte de controle
O byte de controle é o primeiro byte de cada elemento TLV. Os 5 bits inferiores especificam o tipo de elemento e os 3 bits superiores indicam a forma do tag.
| Campo de bits | Descrição |
|---|---|
| Bits [4:0] | Tipo de elemento (inteiro com/sem sinal, booleano, ponto flutuante, string UTF-8, string de bytes, null, estrutura, array, lista, fim de contêiner) |
| Bits [7:5] | Forma do tag: 000=Anônimo, 001=Específico de contexto (tag 1 byte), 010-110=Tags de perfil, 111=Totalmente qualificado |
Tipos de elementos TLV
O campo de tipo de elemento determina como a parte do valor é codificada. Tipos inteiros usam 1, 2, 4 ou 8 bytes. Valores booleanos são codificados diretamente no campo de tipo. Strings e arrays de bytes carregam um prefixo de comprimento seguido dos dados.
Formato do payload de integração
Ao comissionar um dispositivo Matter, as informações de configuração são codificadas em um payload compacto incorporado em um QR code ou expresso como código de emparelhamento manual numérico. O payload QR code começa com o prefixo "MT:" seguido de uma string binária codificada em Base38.
Codificação Base38
Os payloads QR code Matter usam um conjunto de caracteres Base38 (0-9, A-Z, -.) para representação alfanumérica eficiente. Cada grupo de 3 bytes é codificado em 5 caracteres Base38.
Código de emparelhamento manual
O código de emparelhamento manual de 11 dígitos fornece um método alternativo quando a leitura do QR não está disponível. Codifica o discriminador, o código de configuração e um dígito de verificação Verhoeff. A versão de 21 dígitos inclui adicionalmente o ID do fabricante e o ID do produto.
Dígito de verificação Verhoeff
O código de emparelhamento manual utiliza o algoritmo Verhoeff para detecção de erros. Este algoritmo detecta todos os erros de um dígito e a maioria dos erros de transposição adjacente.
Casos de uso em desenvolvimento
- Depuração de payloads TLV Matter capturados de interações de dispositivos
- Inspeção de mensagens de solicitação e resposta do modelo de interação
- Verificação de payloads de comissionamento incorporados em QR codes
- Validação de estruturas TLV de certificados de atestação
- Construção de payloads de teste para testes de conformidade Matter
Referências de especificação
A especificação Matter é mantida pela Connectivity Standards Alliance (CSA). O formato de codificação TLV é definido no Apêndice A da especificação principal. A codificação de payload de integração é coberta na Seção 5.1.
- Especificação Core do Matter - Baixar do CSA
- Repositório Open Source - github.com/project-chip/connectedhomeip
- Documentação do SDK - project-chip.github.io/connectedhomeip-doc
- Manual do Desenvolvedor Matter - handbook.buildwithmatter.com
Ferramentas Relacionadas
Codec CBOR
Codificador/decodificador CBOR binário com conversão JSON, visualizador hex e tags semânticas para desenvolvimento IoT
Ferramenta Protocol Buffers
Codificador/decodificador Protocol Buffers online. Analise esquemas .proto, codifique JSON para binário ou decodifique binário para JSON
Codec MQTT
Codifique e decodifique pacotes do protocolo MQTT com análise detalhada de campos, visualizador hex e construtor de pacotes
Ferramenta de Assinatura ECDSA
Gere pares de chaves ECDSA, assine mensagens e verifique assinaturas com as curvas secp256k1, P-256, P-384, P-521