IoT メッセージングに MQTT トピック構造を使う
MQTT トピックはスラッシュ区切りの階層とワイルドカードで購読を制御します。トピック設計、QoS レベル、保持メッセージを学びましょう。
- 1
MQTT トピックはスラッシュ区切りの階層パスです (例: home/livingroom/temperature)。大文字と小文字は区別され、先頭と末尾に / を付けてはいけません。ワイルドカード:+ は 1 レベルにマッチし (home/+/temperature)、# は残りの全レベルにマッチします (home/#。# は末尾でなければなりません)。ワイルドカードを使うのはサブスクライバー側だけで、パブリッシャーは常に特定のトピックに対して発行します。
- 2 URL パーサー →
MQTT トピックを URL パスのようにパースして、階層構造を把握します。/ で分割するとトピックのレベルが得られます。トピック構造の検証や、IoT デバイス向けの階層的な命名スキームの設計に役立ちます。
- 3 URL エンコーダー →
MQTT トピック内の特殊文字をエンコードします。トピックにはスペースや UTF-8 文字を含められますが、安全のため URL エンコードすべきです。先頭のスペースは有効ですが紛らわしいので避けてください。一貫性のため、小文字とハイフンを使ってください。
よくある質問
- MQTT の QoS レベルとは何ですか?
- QoS 0 は最大 1 回 (送りっぱなし、確認応答なし)、QoS 1 は最低 1 回 (確認応答あり、重複の可能性あり)、QoS 2 は厳密に 1 回 (4 ステップのハンドシェイク、重複なし) です。頻繁なセンサーデータ (重複が問題にならないもの) には QoS 0 を、コマンドには QoS 1 を、重要なメッセージ (課金、状態変更) には QoS 2 を使ってください。
- 保持メッセージ (retained message) とは何ですか?
- 保持メッセージは、トピックに発行された最後のメッセージで、ブローカーが保存します。新しいサブスクライバーは、購読開始時にすぐ保持メッセージを受け取ります。状態 (デバイスのオン/オフ、現在温度) に便利で、新しいクライアントは次の発行を待たずに現在の状態を取得できます。保持メッセージはトピックごとに 1 つだけです。
このタスクを解決するワークフロー
URL 転送用の JSON ペイロードのエンコード
JSON ドキュメントを URL パラメータ用に準備する: 整形、Base64 エンコード、パーセントエンコード — ネストされたパラメータデコードチェーンの正確な逆順。 パイプライン
Punycode デコードと URL 解析
Punycode ドメインをデコードし、その後完全な URL を解析する。 パイプライン
Kebab Case と URL エンコード
kebab-case に変換し、安全な URL スラッグのために URL エンコードする。 パイプライン
URL デコードと解析
URL デコードし、その後 URL を構成要素に解析する。 パイプライン
URL エンコード後 Base64 二重エンコード
URL エンコードし、API ペイロードの二重エンコードのために Base64 エンコードする。 パイプライン
URL 転送用テキストペイロードのエンコード
テキストをパーセントエンコードし、安全な URL パラメータ転送のために Hex 表現を表示する。 パイプライン