Matter プロトコルコーデック
スマートホーム開発向け Matter TLV データのデコード&エンコード
Matter デバイスやプロトコルアナライザーで取得した TLV データを貼り付け
クリックしてサンプルを読み込む
デコード結果
TLV データを入力してデコードをクリック
バイトビューアー
型注釈付き JSON 記法で TLV 要素を定義
クリックしてエンコード例を読み込む
C/C++ 構文でデータ構造を定義します。// tag N コメントでTLVタグを指定します。
解析結果
フィールド値を入力
エンコード結果
JSON を入力してエンコードをクリック
バイトビューアー
エンコード統計
Matter QR コード文字列(MT:...)または手動ペアリングコード(11/21桁)を入力
クリックしてサンプルを読み込む
オンボーディング情報の解析結果
QR コード文字列または手動ペアリングコードを入力して解析
基本情報
範囲:1-99999998。無効:0、11111111、22222222 など
コミッショニングフロー
ディスカバリ方式
出力形式
生成結果
パラメータを入力して生成をクリック
TLV 要素タイプ
| タイプ名 | タイプコード | 値サイズ |
|---|---|---|
| 符号付き整数 | 0x00-0x03 | 1, 2, 4, 8 bytes |
| 符号なし整数 | 0x04-0x07 | 1, 2, 4, 8 bytes |
| ブール値 | 0x08-0x09 | 0 bytes |
| 単精度浮動小数点 | 0x0A | 4 bytes |
| 倍精度浮動小数点 | 0x0B | 8 bytes |
| UTF-8 文字列 | 0x0C-0x0F | 1/2/4/8-byte length + data |
| バイト列 | 0x10-0x13 | 1/2/4/8-byte length + data |
| Null | 0x14 | 0 bytes |
| 構造体 | 0x15 | End-of-Container (0x18) |
| 配列 | 0x16 | End-of-Container (0x18) |
| リスト | 0x17 | End-of-Container (0x18) |
| コンテナ終端 | 0x18 | 0 bytes |
Matter プロトコル技術リファレンス
C 構造体スキーマ使用ガイド
C 構造体スキーマモードでは、C/C++ 構文を使用してデータ構造を定義できます。パーサーは構造体定義からフィールド名、型、TLV タグを抽出し、データ入力と TLV エンコーディングのためのビジュアルフォームを生成します。
サポートされる構文
// Supported syntax forms:
typedef struct { ... } StructName;
typedef struct Tag { ... } StructName;
struct StructName { ... };
サポートされるデータ型
| カテゴリ | C/C++ 型 | TLV 型 |
|---|---|---|
| 符号付き整数 | int8_t, int16_t, int32_t, int64_t, char, short, int, long | int (1-8B) |
| 符号なし整数 | uint8_t, uint16_t, uint32_t, uint64_t, unsigned char/short/int/long, size_t | uint (1-8B) |
| ブール値 | bool, _Bool | bool |
| 浮動小数点 | float, double | float/double |
| 文字列 | char[], char[N], char* | UTF-8 string |
| バイト配列 | uint8_t[], uint8_t[N], uint8_t* | byte string |
タグ注釈方法
コメントを使用して各フィールドの TLV コンテキストタグを指定します。タグが指定されていない場合、0 から自動的に割り当てられます。
uint8_t field1; // tag 0 uint16_t field2; // tag: 1 uint32_t field3; /* tag 2 */ @tag(3) uint64_t field4;
配列サポート
固定サイズ配列(例:uint32_t data[4])および可変サイズ配列(例:uint8_t data[])がサポートされています。フォームには動的配列要素管理のための「項目を追加」ボタンが表示されます。
uint32_t subjects[4]; // Fixed-size array (max 4 items) uint8_t data[]; // Variable-size array
現在の制限事項
- プリプロセッサディレクティブ(#define, #ifdef)はサポートされていません
- typedef エイリアス(例:typedef uint8_t BYTE)はサポートされていません
- 列挙型、共用体、ビットフィールドはサポートされていません
- ネストされた構造体の編集は1レベルに制限されています
- 匿名構造体はサポートされていません
Matter とは
Matter は、Connectivity Standards Alliance(CSA)が策定した統合スマートホーム接続規格です。旧称 Project CHIP(Connected Home over IP)として開発され、Apple HomeKit、Google Home、Amazon Alexa、Samsung SmartThings 等の異なるエコシステム間での相互運用性を実現します。Matter 対応デバイスは Wi-Fi、Thread、Ethernet を介して IPv6 ベースのトランスポートプロトコルで通信します。Matter 1.0 は2022年10月にリリースされ、以降のリビジョンでサポートされるデバイスタイプが拡大しています。
Matter TLV エンコーディング形式
Matter は構造化データのシリアライズにコンパクトな TLV(Tag-Length-Value)バイナリエンコーディング方式を採用しています。TLV 形式はプロトコルスタック全体で広く使用され、Interaction Model メッセージ、デバイス認証データ、コミッショニングペイロードなどに用いられます。各 TLV 要素は、要素タイプとタグ形式を同時にエンコードする制御バイトから始まり、タグバイト、長さフィールド、値データが続きます。
制御バイトの構造
制御バイトは各 TLV 要素の先頭バイトです。下位5ビットが要素タイプを、上位3ビットがタグ形式を指定します。このコンパクトなエンコーディングにより、小さな値や短いタグを1バイトで表現できます。
| ビットフィールド | 説明 |
|---|---|
| Bits [4:0] | 要素タイプ(符号付き/符号なし整数、ブール値、浮動小数点、UTF-8文字列、バイト列、Null、構造体、配列、リスト、コンテナ終端) |
| Bits [7:5] | タグ形式:000=匿名、001=コンテキスト固有(1バイトタグ)、010-110=プロファイル固有タグ、111=完全修飾 |
TLV 要素タイプ
要素タイプフィールドは値部分のエンコード方法を決定します。整数型は1、2、4、8バイトを使用します。ブール値はタイプフィールドに直接エンコードされ値バイトは不要です。文字列やバイト配列は長さプレフィックスの後にデータが続きます。
オンボーディングペイロード形式
Matter デバイスのコミッショニング時、セットアップ情報はQRコードに埋め込まれるか数値の手動ペアリングコードとして提示されます。QRコードペイロードは「MT:」プレフィックスの後に Base38 エンコードされたバイナリ文字列が続き、バージョン、ベンダーID、プロダクトID、コミッショニングフロー、ディスカバリ方式、ディスクリミネーター、セットアップパスコードが含まれます。
Base38 エンコーディング
Matter QRコードペイロードは Base38 文字セット(0-9、A-Z、-.)を使用した効率的な英数字表現を採用しています。QRコードの英数字モードの制約内でデータ密度を最大化するために選択されたエンコーディングです。3バイトごとに5文字の Base38 文字にエンコードされます。
手動ペアリングコード
11桁の手動ペアリングコードはQRコードのスキャンが利用できない場合のフォールバック手段です。ディスクリミネーター(短縮形)、セットアップパスコード、Verhoeff チェックディジットがエンコードされています。21桁版はベンダーIDとプロダクトIDを追加で含みます。
Verhoeff チェックディジット
手動ペアリングコードは Verhoeff アルゴリズムを用いてエラー検出を行います。このアルゴリズムは全ての1桁エラーと大部分の隣接転置エラーを検出でき、人間が入力する数値コードに適しています。
開発ユースケース
- デバイス通信から取得した Matter TLV ペイロードのデバッグ
- Interaction Model リクエスト・レスポンスメッセージの検査
- QRコードに埋め込まれたコミッショニングペイロードの検証
- デバイス認証証明書の TLV 構造の妥当性確認
- Matter プロトコル適合性テスト用テストペイロードの構築
仕様リファレンス
Matter仕様はConnectivity Standards Alliance(CSA)によって管理されています。TLVエンコーディング形式はコア仕様の付録Aで定義されています。オンボーディングペイロードエンコーディングはセクション5.1で説明されています。
- Matterコア仕様 - CSAからダウンロード
- オープンソースリポジトリ - github.com/project-chip/connectedhomeip
- SDK開発ドキュメント - project-chip.github.io/connectedhomeip-doc
- Matter開発者ハンドブック - handbook.buildwithmatter.com
関連ツール
CBOR コーデック
CBOR バイナリ形式のエンコードデコード、JSON 変換、バイトビューアー、セマンティックタグ対応の IoT 開発ツール
Protocol Buffersツール
オンラインProtocol Buffersエンコーダー/デコーダー。.protoスキーマ解析、JSONからバイナリへのエンコード、バイナリからJSONへのデコード
MQTTコーデック
MQTTプロトコルパケットのエンコード・デコードツール、詳細フィールド分析、Hexビューア、パケットビルダー付き
ECDSA署名ツール
secp256k1、P-256、P-384、P-521曲線でECDSAキーペアの生成、メッセージへの署名、署名の検証を行います