CoderTools

Codec Matter Protocol

Giải mã và mã hóa dữ liệu TLV Matter cho phát triển nhà thông minh

🔒 100% Xử lý cục bộDữ liệu bạn nhập được xử lý hoàn toàn trong trình duyệt. Không có dữ liệu nào được tải lên máy chủ.

Dán dữ liệu TLV được bắt từ thiết bị Matter hoặc trình phân tích giao thức

Nhấn để tải ví dụ

Kết quả giải mã

Nhập dữ liệu TLV và nhấn Giải mã để xem kết quả

Các loại phần tử TLV

Tên loại Mã loại Kích thước giá trị
Số nguyên có dấu0x00-0x031, 2, 4, 8 bytes
Số nguyên không dấu0x04-0x071, 2, 4, 8 bytes
Boolean0x08-0x090 bytes
Float0x0A4 bytes
Double0x0B8 bytes
Chuỗi UTF-80x0C-0x0F1/2/4/8-byte length + data
Chuỗi byte0x10-0x131/2/4/8-byte length + data
Null0x140 bytes
Cấu trúc0x15End-of-Container (0x18)
Mảng0x16End-of-Container (0x18)
Danh sách0x17End-of-Container (0x18)
Kết thúc container0x180 bytes

Tài liệu kỹ thuật Matter Protocol

Hướng dẫn sử dụng Schema C Struct

Chế độ Schema C Struct cho phép bạn định nghĩa cấu trúc dữ liệu bằng cú pháp C/C++ quen thuộc. Trình phân tích trích xuất tên trường, kiểu và tag TLV từ định nghĩa cấu trúc của bạn, sau đó tạo biểu mẫu trực quan để nhập dữ liệu và mã hóa TLV.

Cú pháp được hỗ trợ

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

Các kiểu dữ liệu được hỗ trợ

Danh mục Kiểu C/C++ Kiểu TLV
Số nguyên có dấu int8_t, int16_t, int32_t, int64_t, char, short, int, long int (1-8B)
Số nguyên không dấu uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t uint (1-8B)
Boolean bool, _Bool bool
Số thực float, double float/double
Chuỗi char[], char[N], char* UTF-8 string
Mảng byte uint8_t[], uint8_t[N], uint8_t* byte string

Phương pháp chú thích tag

Sử dụng chú thích để chỉ định tag ngữ cảnh TLV cho mỗi trường. Nếu không chỉ định tag, các tag sẽ được tự động gán bắt đầu từ 0.

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

Hỗ trợ mảng

Mảng kích thước cố định (ví dụ: uint32_t data[4]) và mảng kích thước động (ví dụ: uint8_t data[]) được hỗ trợ. Biểu mẫu sẽ cung cấp nút «Thêm mục» để quản lý động các phần tử mảng.

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

Hạn chế hiện tại

  • Chỉ thị tiền xử lý (#define, #ifdef) không được hỗ trợ
  • Bí danh typedef (ví dụ: typedef uint8_t BYTE) không được hỗ trợ
  • Enum, union và trường bit không được hỗ trợ
  • Chỉnh sửa cấu trúc lồng nhau bị giới hạn ở một cấp
  • Cấu trúc ẩn danh không được hỗ trợ

Matter là gì

Matter là tiêu chuẩn kết nối thống nhất cho thiết bị nhà thông minh, được phát triển bởi Connectivity Standards Alliance (CSA) với tên gọi ban đầu Project CHIP. Tiêu chuẩn cho phép tương tác giữa các hệ sinh thái Apple HomeKit, Google Home, Amazon Alexa và Samsung SmartThings. Thiết bị Matter giao tiếp qua Wi-Fi, Thread và Ethernet sử dụng giao thức truyền tải dựa trên IPv6. Matter 1.0 được phát hành vào tháng 10 năm 2022.

Định dạng mã hóa TLV Matter

Matter sử dụng lược đồ mã hóa nhị phân TLV (Tag-Length-Value) nhỏ gọn để tuần tự hóa dữ liệu có cấu trúc. Định dạng này được sử dụng rộng rãi trong ngăn xếp giao thức, bao gồm thông điệp mô hình tương tác, dữ liệu chứng nhận thiết bị và payload kết nối.

Cấu trúc byte điều khiển

Byte điều khiển là byte đầu tiên của mỗi phần tử TLV. 5 bit thấp chỉ định loại phần tử và 3 bit cao cho biết dạng tag.

Trường bit Mô tả
Bits [4:0]Loại phần tử (số nguyên có/không dấu, boolean, số thực, chuỗi UTF-8, chuỗi byte, null, cấu trúc, mảng, danh sách, kết thúc container)
Bits [7:5]Dạng tag: 000=Ẩn danh, 001=Theo ngữ cảnh (tag 1 byte), 010-110=Tag theo profile, 111=Đầy đủ

Các loại phần tử TLV

Trường loại phần tử xác định cách mã hóa phần giá trị. Các kiểu số nguyên sử dụng 1, 2, 4 hoặc 8 byte. Giá trị boolean được mã hóa trực tiếp trong trường loại. Chuỗi và mảng byte mang tiền tố độ dài theo sau là dữ liệu.

Định dạng payload kết nối

Khi kết nối thiết bị Matter, thông tin thiết lập được mã hóa trong payload nhỏ gọn nhúng trong mã QR hoặc biểu diễn dưới dạng mã ghép nối thủ công bằng số. Payload mã QR bắt đầu bằng tiền tố "MT:" theo sau là chuỗi nhị phân mã hóa Base38.

Mã hóa Base38

Payload mã QR Matter sử dụng bộ ký tự Base38 (0-9, A-Z, -.) để biểu diễn chữ số hiệu quả. Mỗi nhóm 3 byte được mã hóa thành 5 ký tự Base38.

Mã ghép nối thủ công

Mã ghép nối thủ công 11 chữ số cung cấp phương thức thay thế khi không thể quét mã QR. Nó mã hóa bộ phân biệt, mã thiết lập và chữ số kiểm tra Verhoeff. Phiên bản 21 chữ số bổ sung thêm ID nhà sản xuất và ID sản phẩm.

Chữ số kiểm tra Verhoeff

Mã ghép nối thủ công sử dụng thuật toán Verhoeff để phát hiện lỗi. Thuật toán này phát hiện tất cả lỗi một chữ số và hầu hết lỗi hoán đổi liền kề.

Ứng dụng trong phát triển

  • Gỡ lỗi payload TLV Matter được bắt từ tương tác thiết bị
  • Kiểm tra thông điệp yêu cầu và phản hồi của mô hình tương tác
  • Xác minh payload kết nối nhúng trong mã QR
  • Xác thực cấu trúc TLV của chứng nhận thiết bị
  • Xây dựng payload thử nghiệm cho kiểm tra tương thích Matter

Tham chiếu đặc tả

Đặc tả Matter được duy trì bởi Connectivity Standards Alliance (CSA). Định dạng mã hóa TLV được định nghĩa trong Phụ lục A của đặc tả cốt lõi. Mã hóa payload onboarding được đề cập trong Phần 5.1.

Menu Nhanh

Chưa có công cụ gần đây