MQTT-SNクライアントガイドの開発

導入事例

MQTT-SNクライアントガイドの開発は、ステップバイステップでガイドを開始 研究開発 MQTT-SN 公開サブスクリプションメッセージングプロトコルを使用して IoT デバイスエージェント ()MQTTの特長センサーネットワーク用 MQTT技術委員会によるオアシス規格による

MQTT-SNは、IoTセンサーを作成するのに役立つプロトコルバージョンです。 エージェント IoTデバイスを消費する低エネルギー。 MQTT-SNプロトコル(センサー用SN MQTT)は、 プログラム TCP/IP 以外のネットワークで埋め込まれたデバイスを通信ジグビー,ブルートゥース, zウェーブまたは ワイヤーで縛られたおよび無線センサー ネットワークを含む他の媒体。 このプロトコルは、 お問い合わせ MQTTのようなコネクティッドな環境。 しかし、任意の双方向& 損失ネットワークプロトコルのサポート MQTTおよびMQTT-SN。 MQTT SNの指定はで利用できますmqtt.org. (日本語)

始める

マシン・ツー・マシン、機械・ツー・ユーザー、機械・ツー・モバイル通信が実現できない なし 強力なセントラルサーバー。 MQTTエッジデバイスとアプリケーションはMQTTを介して通信します ブローカー 中央サーバーとして機能する。 ダウンロードできますエンタープライズMQTT ブローカー実行できる Windows と Linux で起動します。


MQTT上の利点

SNの主な利点は、パケットのサイズの縮小と接続性がないため、確実に お問い合わせ トランザクションはエネルギーを削減します。 以下は、テクニカル 利点/使用の相違 MQTT-SN オーバー MQTTお問い合わせ

  • WILL メッセージはオプションで、別のパケットとして送信できます。 MQTT-SN は、 CONNECT メッセージを 3 つのメッセージに送信します。 接続パケットを単独で送ることができます お問い合わせ WILLのトピックとメッセージを設定していません。
  • 長いトピック名は、すべてのメッセージで送信する必要はありません。 代わりに、トピックIDは、 使用する 公開中。 パケットサイズを大きく縮小します。
  • 定義済みのトピックID/名前は、ゲートウェイのすべてのトピックを定義するのに役立ちます。 ザ・オブ・ザ・ トピックID これらのトピックは、直接使用できます。 同様に、少ない短いトピック名 以上 2 bytesは、トピックIDなしで直接使用できます。
  • ディスカバリーは、MQTT-SNの大きな利点の1つです。 クライアントは知りません IPアドレス ゲートウェイまたはブローカーのアドレスまたはDNS名が始まります。 ザ・オブ・ザ・ 広告/gateway 発見はシームレスに達成するのに役立ちます。
  • クリーンセッションは、WILLの詳細がWILLのように持続するWILLの詳細に拡張されます クライアントのサブスクリプション
  • センサーは、特定の時間にゲートウェイを通知した後に眠ることができます。 ザ・オブ・ザ・ ゲートウェイ/サーバー 特定のクライアントのために意図したメッセージをスリープ中にバッファします。 送信する クライアントが目を覚ますとき。 そのため、加工力が低いため、 のために適した 電池式センサー。
  • MQTT-SN は TCP/IP ネットワークに依存せず、UDP を上回っています。 お問い合わせ 最小限に データ転送量と必要な電力。
  • MQTTとは異なり、MQTT-SNは4種類のQoS(サービスの品質)、QoS 0,1,2,-1をサポートしています または 3 MQTT は、QoS 0,1,2 をサポートしています。
メッセージ構成

固定ヘッダ

  • MQTT-SN固定ヘッダーの最初のバイトは、メッセージの長さです
  • 2番目のバイトはメッセージタイプです。 長さは0バイトから考慮されます。

可変ヘッダー

トピックIdType クリーンセッション ウィル ログイン QoSについて ディップ
0, 1 2 3 3 5,63 7月7日

DUP、Retain、WILL、CleanSessionはMQTTと同じです。

必要に応じて、0 または 1 つに設定します。

フラグの 0 と 1'st ビットが指定するのに使われます トピックIDタイプ。

  • 通常のトピックの場合 0、1ビットは00
  • 事前定義されたトピックID 0の場合、1ビットは01となります
  • 短いトピック名 0 の場合、1 ビットは 10 になります

5、6ビットはQoSを指定するために使用されます。

  • QoS 0〜5、6ビットは00
  • QoS 1 - 5、6ビットは01
  • QoS 2 -5、6 ビットは 10 である必要がありますのため
  • QoS -1 -5、6 ビットは 11 でなければなりません
ゲートウェイ・ディスカバリー

ネットワーク上の新しいクライアントは、アドレスを見つけるためにsearchgwパケットを放送する必要があります ゲートウェイ。 また、クライアントはMQTT-SNゲートウェイのアドレスを知っている場合は、直接接続できます。

検索の構造 GW パケット

1。 このメッセージは3バイトの長さです。 最初のバイトは 長さ。 ザ・オブ・ザ・ 2番目のバイトは 0x01 メッセージタイプです。 第三バイトは放送の半径です お問い合わせ 基礎的なネットワークにも設定します。

2。 このメッセージは、ネットワークにネットワークに放送されなければならない 時間間隔 GWINFOに返信メッセージが表示されます。

  • GWINFOメッセージは、メッセージ送信者と異なるメッセージになります。
  • ゲートウェイによって送信されると3バイト長になり、別のゲートウェイから送信されると SN_CLIENT それ ゲートウェイのアドレスを含む可変長があります。
センサー接続

クライアントは2つの方法で接続できます。

1。 意志なしで接続 - 応答は、メッセージが不満になります

2。 意志との接続 - 応答はトピックになります リクエスト

コネクタ
  • クライアントからゲートウェイへの接続をセットアップします。
  • 次の構造を持っています

長さ MsgType(0x04) フラグ プロトコルID 期間 クライアントID
1 2 3 4.5マイル 6-Nの

トピック

長さ MsgType(0x07) フラグ トピック
1 2 3-N の
メッセージ

成功すると、ゲートウェイが送信されます メッセージ クライアントがリクエストを送らなければならない メッセージ

長さ Msgtype(0x09) ウィルムス
1 2-N
出版情報

MQTT-SNパケットが公開できる4つの方法があります。

登録されたトピックIDを使用して -ザ・オブ・ザ・ クライアントは トピック名をゲートウェイに登録し、受信したを使用して公開を開始します トピック 郵便番号

ショートトピックの使用 -ザ・オブ・ザ・ クライアントは トピック名の長さが2未満の場合、トピック名を使用して直接公開 バイト。

既定のトピックを使用する -ザ・オブ・ザ・ ゲートウェイは クライアントが発行するトピックIDが使用できる既定のトピックがあります。 ザ・オブ・ザ・ 事前定義 トピックのトピックIDがサーバーとクライアントの両方で知られているトピックID いいえ 登録が必要

アドホックのトピック – –これは、 特別な 1 所在地: クライアントは、単に開始できるゲートウェイへの接続を作成する必要はありません 出版情報 QoS フラグを -1 に設定するか、ゲートウェイが終了しません。 メンテナンス この種類の公開を処理するブローカーへの別のMQTT接続。 QoS -1 で 公開する クライアントは、既定のトピック ID または短いトピック名のみを使用できます。接続はありません セットアップ トピック登録はできません

登録・出版のパケット構造は以下の通りです。

会員登録

長さ Msgtype(0x0A) トピック サインイン トピック名
1 2,3 4,53 5 日

トピックIDは、レジスタメッセージが送信されたときに0としてコードされなければならない メールでのお問い合わせ お問い合わせ クライアント。

クライアントは、以下を使用してRegackからトピックIDを取得することができます パッケージ コンテンツ

RegAckさん

長さ Msgtype(0x0B) トピック サインイン トピック名
1 2,3 4,53 6月6日

クライアントは、適切なREGACKメッセージと一致しなければなりません。 ログイン メッセージ ID を使用してパケットを処理します。 クライアントは、REGACK の戻りコードと、その 0 のチェックをしなければなりません。 クライアント Topic id を使うと、レジスタパケットを再度送信する必要があります。

長さ MsgType(0x0C) フラグ トピック サインイン データデータ
1 2 3,4, 5,63 7月7日
購読/退会

クライアントは、以前に登録されていれば、トピックを購読するためにトピック ID を使うことができます。 トピック。 それは、 トピック名または短いトピック名を使用して、購読できます。 サブバックを受け取る メッセージ トピックID。 unsubscribeパケットは購読と同じです。 パケット構造 購読する unsubscribe は以下のとおりです。

コンテンツ

長さ MsgType (サブスクリプション (0x12) / unsubscribe (0x14) フラグ MsgIdの特長 トピックIDまたはトピック名
1 2 3,4 5,6,5N

サブスクリプションのパケットには、サブスクリプションを購読する場合の可変長があります。 使用方法 TopicName それ以外の場合は 7 バイトになります。

センサーの切断

クライアントがゲートウェイから切断できる2つの方法があります。

永久に切断

クライアントは、disconnectパケットをdisconnectに送らなければならない 永久に。 それは、 MQTT と同じ機能。

睡眠障害

クライアントは、時間の経過とともに、接続解除メッセージを送信します。 行き方 眠る その時間の間、ゲートウェイは、この中にそのクライアントのメッセージをバッファします タイムタイム 期間。 クライアントは、 ping メッセージを送信して、バッファされたメッセージを取得する必要があります。 プレゼント バッファからメッセージを公開します。 クライアントは ping resp を受け取り、バッファが 空です。 ザ・オブ・ザ・ クライアントは指定された期間またはゲートウェイが考慮される前にpingを送信しなければならない 失われた クライアント。

長さ MsgType(0x18) 期間(任意)
1 2~3
トピックとメッセージ

MQTT-SNは、WILLのトピックとメッセージを随時更新するための規定を持っています。 お問い合わせ MQTT メッセージプロトコル上の高度な機能。

ウィルトップアップ

クライアントは、disconnectパケットをdisconnectに送らなければならない 永久に。 それは、 MQTT と同じ機能。

睡眠障害

クライアントは、時間の経過とともに、接続解除メッセージを送信します。 行き方 眠る その時間の間、ゲートウェイは、この中にそのクライアントのメッセージをバッファします タイムタイム 期間。 クライアントは、 ping メッセージを送信して、バッファされたメッセージを取得する必要があります。 プレゼント バッファからメッセージを公開します。 クライアントは ping resp を受け取り、バッファが 空です。 ザ・オブ・ザ・ クライアントは指定された期間またはゲートウェイが考慮される前にpingを送信しなければならない 失われた クライアント。

長さ MsgType(0x1A) フラグ トピック
1 2 3-N の

フラグにはQoSについてそして、メンテナンスお問い合わせ

「Will Topic response」メッセージは、応答として送信されます。 お問い合わせ コンテンツ


長さ MsgType (willtopicresp (0x1B) / willmessageresp (0x1D)) リターンコード
1 2

戻りコードが 0 以外の場合、返済しなければならない ウィアトピー。

ウィルムスグPD

長さ MsgType(0x1C) ウィルムスグ
1 2-N

クライアントは、次のメッセージに加えて、次のメッセージを追跡しなければならない お問い合わせ 送信する

1。 広告パケット

2.SearchGWについて

3.登録

広告のパケット

ネットワーク上のゲートウェイは広告パケットを送信します よくある質問 期間。 クライアントは、ネットワーク内のアクティブなゲートウェイのリストを維持する必要があります お問い合わせ 広告された持続期間。

検索GW

クライアントは、放送による検索メッセージに応答する必要があります は、 ログイン メッセージ。 ゲートウェイアドレスリストからアクティブなゲートウェイアドレスを送信する必要があります。

会員登録

クライアントが再接続されている場合は、レジスタメッセージを受け取ります お問い合わせ 前の登録とサブスクリプションのトピック名とトピックIDは、保存する必要があります お問い合わせ トピック名とID。

お問い合わせ
エンタープライズMQTT ブローカー?