CoderTools

Matter プロトコルコーデック

スマートホーム開発向け Matter TLV データのデコード&エンコード

🔒 100% ローカル処理入力されたデータはすべてブラウザ内で処理されます。サーバーに送信されることはありません。

Matter デバイスやプロトコルアナライザーで取得した TLV データを貼り付け

クリックしてサンプルを読み込む

デコード結果

TLV データを入力してデコードをクリック

TLV 要素タイプ

タイプ名 タイプコード 値サイズ
符号付き整数0x00-0x031, 2, 4, 8 bytes
符号なし整数0x04-0x071, 2, 4, 8 bytes
ブール値0x08-0x090 bytes
単精度浮動小数点0x0A4 bytes
倍精度浮動小数点0x0B8 bytes
UTF-8 文字列0x0C-0x0F1/2/4/8-byte length + data
バイト列0x10-0x131/2/4/8-byte length + data
Null0x140 bytes
構造体0x15End-of-Container (0x18)
配列0x16End-of-Container (0x18)
リスト0x17End-of-Container (0x18)
コンテナ終端0x180 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で説明されています。

クイックメニュー

最近のツールはありません