Codec Matter Protocol
Giải mã và mã hóa dữ liệu TLV Matter cho phát triển nhà thông minh
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ả
Trình xem byte
Định nghĩa phần tử TLV bằng ký pháp JSON với chú thích kiểu
Nhấn để tải ví dụ mã hóa
Định nghĩa cấu trúc dữ liệu bằng cú pháp C/C++. Sử dụng chú thích // tag N để chỉ định tag TLV.
Kết quả phân tích
Điền giá trị các trường
Kết quả mã hóa
Nhập JSON và nhấn Mã hóa để tạo dữ liệu TLV
Trình xem byte
Thống kê mã hóa
Nhập chuỗi mã QR Matter (MT:...) hoặc mã ghép nối thủ công (11/21 chữ số)
Nhấn để tải ví dụ
Kết quả phân tích thông tin kết nối
Nhập chuỗi mã QR hoặc mã ghép nối thủ công để phân tích
Thông tin cơ bản
Phạm vi: 1-99999998. Không hợp lệ: 0, 11111111, 22222222, v.v.
Luồng kết nối
Khả năng khám phá
Định dạng đầu ra
Kết quả đã tạo
Điền các tham số và nhấp Tạo
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ấu | 0x00-0x03 | 1, 2, 4, 8 bytes |
| Số nguyên không dấu | 0x04-0x07 | 1, 2, 4, 8 bytes |
| Boolean | 0x08-0x09 | 0 bytes |
| Float | 0x0A | 4 bytes |
| Double | 0x0B | 8 bytes |
| Chuỗi UTF-8 | 0x0C-0x0F | 1/2/4/8-byte length + data |
| Chuỗi byte | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| Cấu trúc | 0x15 | End-of-Container (0x18) |
| Mảng | 0x16 | End-of-Container (0x18) |
| Danh sách | 0x17 | End-of-Container (0x18) |
| Kết thúc container | 0x18 | 0 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.
- Đặc tả cốt lõi Matter - Tải từ CSA
- Kho mã nguồn mở - github.com/project-chip/connectedhomeip
- Tài liệu SDK - project-chip.github.io/connectedhomeip-doc
- Sổ tay phát triển Matter - handbook.buildwithmatter.com
Công Cụ Liên Quan
CBOR Codec
Mã hóa và giải mã định dạng nhị phân CBOR với chuyển đổi JSON, trình xem hex và thẻ ngữ nghĩa cho phát triển IoT
Công Cụ Protocol Buffers
Bộ mã hóa/giải mã Protocol Buffers trực tuyến. Phân tích lược đồ .proto, mã hóa JSON sang nhị phân hoặc giải mã nhị phân sang JSON
MQTT Codec
Mã hóa và giải mã gói giao thức MQTT với phân tích trường chi tiết, trình xem Hex và trình xây dựng gói
Công Cụ Chữ Ký ECDSA
Tạo cặp khóa ECDSA, ký tin nhắn và xác minh chữ ký với các đường cong secp256k1, P-256, P-384, P-521