MQTT – スタート

s
導入事例

MQTT入門ガイドでは、詳しい説明を説明しますMQTTの特長MQTT用 初心者

MQTT 公開 / 建築の購読
mqtt Architecture
MQTTの歴史

アンディ・スタンフォード・クラーク(IBM)とアーレン・ニッパーがデザインを考える プロトコル 1999年(平成11年)に誕生したMQTT。 このMQTTを化学する目的は、 サイトマップ 衛星上のオイルパイプラインテレメトリーシステム上のセンサー。 公開サブスクリプションを使用する モデル TCP/IPに基づく安定した信頼性の高いネットワーク接続を実現 ヘッダー 伝送コストの削減、信頼性の高いメッセージサポート MQTT バージョン 3.1.1 は リリースオアシズ スタンダード2014年10月 MQTTバージョン5のアップグレードは、いくつか追加します 新着情報 2019年3月にリリースされた機能と機能。 それは企業の必要性を満たし、準備します お問い合わせ 未来の産業の発展の変化。 MQTT は ISO として宣言され、 オアシズ 2010年の標準。 MQTT 5.0 は、2019 年に新しい OASIS 規格になりました。

MQTTアジェンダ

プロトコル MQTT は 1999 年に発明され、その成長は多くの始まりました 生年月日 あと。 5年後、MQTT 3.1.1はOASISとISO規格でリリースされました。 アフター 2010年、 3.1 から 3.1.1 にバージョンが変更され、 OASIS 規格は新しいバージョンを認可しましたMQTT5の特長 仕様. . 続いて、2019年3月、MQTT5が新たに開催 認定資格 OASISおよびISO規格。

MQTT5 Vs MQTT3.1の特長
MQTT3.1 アジェンダ

2013年以降、「MQTT」という言葉は少し意味がなかった。MQTTの特長 バージョン3.12013年 OASIS指定委員会に提出 お問い合わせ 憲章では、定義へのマイナーな変更のみが受け入れられることを保証します。 お問い合わせ 10月29日 2014年、OASISは標準の維持を追い越した後版3.1.1を発表しました IBMから.

MQTT5 アジェンダ

MQTT 5の特長MQTT 3.1.1の継承者です。 2018年1月初公開 お問い合わせ OASIS、ISO規格に準拠した2019年発売

MQTT3.1.1からMQTT 5への理由

MQTTがスタートしたガイドは、継承者について説明しています。 3.1.1 は MQTT5。 答えは簡単です。MQTTの特長 プロトコルCONNECT の固定ヘッダーを定義します。 パッケージ これらプロトコルバージョンに 1 バイトの値を格納します。 MQTT 3.1.1に持っています 値「3」 3.1.1 は「4」という値を持っています。 そのため、3.1.1(MQTT5)の継承者は値を持っています 5。 この番号は、プロトコル名と値の両方の「5」です。 MQTT5 導入事例 変更点 MQTT3.1.1に比べ、改善を行いました。

以下、MQTT5は、明確な概要を確立するために説明しました お問い合わせ 機能的な目的 MQTT メッセージングプロトコルの

MQTT 3.1 ゴール

MQTT はプロトコルを作成する意図で設計されました お問い合わせ オイルパイプラインは、最小限のバッテリーで衛星接続を介して接続することができます 損失および損失 帯域幅の使用。 現在、次の目的を設定しています。 コア MQTTプロトコル:

  • 簡単な実装
  • データ配信のためのサービス品質を提供
  • 軽量および帯域幅の効率性
  • データアグノスティック
  • 継続的なセッションの意識
MQTT 5 ゴール

このシンプルなMQTTがモデルを立ち上げました 改善点 お問い合わせ 既存のMQTT5クライアント/ユーザーのニーズを満たすための目的。

  • ザ・オブ・ザ・MQTT 5の特長目標は、ニーズを満たすための使いやすさを改善しています ロング 用語集 ユーザー。
  • MQTT5の目標は、パフォーマンスを改善し、任意のことなくスケーラビリティをサポートしています オーバーリー 複雑なこと。

MQTT 5仕様には5つのアイドルデザインがあります。 彼ら お問い合わせ

  • 大規模システム向けのスケーラビリティの充実と小規模なクライアントのサポート
  • エラー報告を増加させる。
  • 機能を含む通常のものの形成。
  • ユーザープロパティを含む拡張可能な技術。
  • 大規模で小規模なクライアントのパフォーマンス改善
MQTT 公開と購読/購読解除
出版情報

MQTTのガイドがPUBLISHのクリアカットビューを提供 パッケージ そして出版の役割。 メッセージの送信プロセスはパブリッシングと呼ばれます。 クライアント 別のクライアントに直接メッセージを公開することはできません。 しかし、MQTTクライアントは 出版情報 ブローカーへのメッセージ。 各メッセージにはトピックが含まれている必要があります。 MQTT クライアントのみ 出版情報 単一のトピックへのメッセージ、トピックのグループに公開することはできません。 ブローカーは、 フィルター トピックの下のメッセージを転送し、接続されたクライアントにメッセージを転送します。 すべて そのトピックを購読します。 PUBLISH パケットはクライアントからサーバーまたはデバイスに送信されます。 ヴェルサ アプリケーションメッセージの送信 各PUBLISHのパケットに含まれているペイロードがあります お問い合わせ バイト形式で送信されるデータ(メッセージ)。 送信者(公開者)は、 それは望んでいます クライアントが必要とする形式であっても、バイナリデータ、テキストデータを送信する。

会員登録

SUBSCRIBE パケットは、MQTT クライアントから MQTT クライアントへ送信されます。MQTT サーバー, 複数のサブスクリプションを作成するために使用されます。 私達にについての明確化があります お問い合わせ SUBSCRIBE パケットと購読ロール。 特定のトピックでメッセージを受信するには、 クライアントは そのトピックを購読します。 Server は、顧客への公開パケットを送信します。 インタビュー これらのサブスクリプションと互換性のあるトピックへのユーティリティメッセージ。 サブスクライブ パッケージ また、サーバーがアプリケーションメッセージを送信することができる最大QoSを指定する お問い合わせ クライアント。 ブローカーからクライアントにメッセージを送信するには、ブローカーは同じを使用します 出版情報 出版社が使用する方法。 許可されている複数のトピックを購読する 2 の使用 ワイルドカード文字(+と#)。 すべてのサブスクリプションは、ブローカーによって受け入れられます サブスクリプション認識メッセージ。 ログインMQTTクライアントトピックを購読するだけ できません。 特定のクライアントを購読します。

購読解除

SUBSCRIBE メッセージの矛盾は、 UNSUBSCRIBE メッセージ ログイン UNSUBSCRIBE パケットは、クライアントからサーバーに送信され、トピックから退会します。 それは、 削除 ブローカーの既存のサブスクリプション。 これらのUnsubscribeメッセージもリストを持っています トピックス MQTT クライアントが退会を希望するからです。 退会確認のため、ブローカー 送信する UNSUBSCRIBE は、MQTT クライアントにメッセージを通知します。 彼らは、彼らがそれを仮定することができます MQTT クライアントが承認メッセージを受信した後、サブスクリプションは削除されます お問い合わせ ブローカー。

クライアント/ブロッカー接続
MQTTクライアント

一般的に、TCP/IP 上で MQTT を話す任意の IoT デバイス スタック缶 お問い合わせ MQTT クライアントと呼ばれる。 出版社と購読者の両方がMQTTと見なされます クライアント。 ザ・オブ・ザ・ 出版者および購読者はクライアントが現在出版しているかどうかを示します メッセージまたは クライアントがメッセージを受信するために購読しているかどうか。 出版する者 メッセージ 出版社と呼ばれ、情報を受け取るために購読する者は お問い合わせ 加入者。

公開サブスクリプションモデルは異なる クライアントサーバモデル。 PUB/SUBモデルでは、複数のパブリッシャーが1つの加入者にメッセージを公開しています。 以上 1つの購読者より同時に1つのパブリッシャーからのメッセージを受け取ります。 お問い合わせ モデル, MQTT クライアントは直接連絡できません。 しかし、彼らは助けを借りて通信します MQTTの特長 ブローカー。 そのため、MQTTプロトコルのクライアント実装は非常に簡単です ストレートフォワードと 効率的な。 MQTT クライアントは、ネットワーク上で MQTT ブローカーに接続するデバイスです。 接続。

MQTTブローカー

ザ・オブ・ザ・MQTTの特長 ブローカーMQTTクライアント間の中間体として機能します。 お問い合わせ カーネル どれも 公開/サブスクリプションプロトコル。 MQTTブローカーは、MQTTブローカーが実行する独自のソフトウェアです パソコン (クラウド内) 第三者が自己生成またはホストすることができます。 MQTTブローカー 助けて MQTT クライアントは、データを共有、管理し、デバイスを制御します。 ブローカーには すべてのメッセージを受信し、トピックでメッセージをフィルタリングする責任 それから これらのメッセージを購読しているクライアントに配信します。 MQTTの特長 ブローカーは購読できません お問い合わせ MQTT クライアント。 しかし、MQTTクライアント(購読者)は他のクライアントに購読することができます (出版者) ブローカーはメッセージを保持している間、メッセージを保存しません。 パーシステント 接続、QoS レベルは、一時的に保存されているメッセージを表示できます。 ブローカー。

公開されたメッセージが MQTT クライアントに送信されると、 です。 ブローカーから削除。 クライアントが特定のトピックを購読していない場合や お問い合わせ クライアントが現在接続されていない場合は、メッセージが削除されます。 ブローカー。 しかし、ブローカーは、保持されたメッセージの形でデータを保存することができます。 これにより、新しい 購読者は、直接最後の値を取得します。 また、デバイスが呼び出されるとき 「持続的」 ブローカーは、セッションのすべての情報を監視し、排除します 脆弱性 そして安全な顧客関係。 ザ・オブ・ザ・MQTTブローカー減らすのに使用されています ネットワークの緊張 なし セキュリティを侵害する。 バックアップブローカーは、顧客の負荷を共有するためにセットアップすることができます オンサイト、クラウド、または両方の組み合わせで複数のサーバー。

MQTTの関係

MQTT 接続は TCP/IP に基づく。 クライアントとクライアントの両方 ブローカー TCP/IP スタックが必要です。 MQTT の接続は 1 つのクライアント間で常にあります お問い合わせ ブローカー。 MQTTクライアントは直接接続しません。 MQTTクライアント(出版者) 加入者) 主に、拘束されたデバイス間の接続を確立するために使用されています。 アフター ネットワーク MQTTクライアント間で接続が確立され、最初に送信されたパケットが クライアントへ サーバは CONNECT パケットでなければなりません。 最初に接続を確立するために、クライアント 送信する ブローカーにメッセージを接続します。 ブローカーが接続メッセージを受信したら、 CONNACK のメッセージに応答します。 開口部の隙間が大きい場合 ネットワーク CONNECT コントロール パケット メッセージを送信すると、ブローカーは閉じます 接続。 接続が確立されると、ブローカーはクライアントが送信するまで開くようにします お問い合わせ コマンドを切断するか、ネットワーク接続がネットワークの問題の一部を破棄します。 MQTTの特長 取得する 開始されたガイドはクライアントとクライアント上のMQTT接続の詳細を提供します ブローカー。

MQTT QoSレベル - (サービスの品質)

MQTT は簡単なメッセージをに従って提供しますQoSレベルお問い合わせ MQTTの特長 ブローカーは、クライアント・サーバー・コネクションごとにQoSレベルを指定できます。 のみ使用 との間の MQTT の送信者および受信機。 QoS レベルは、メッセージかどうかを識別するために使用される お問い合わせ クライアントからサーバーから受け取ったか否か QoS レベルはクライアントのときに使用されます。 送信する 特定のトピックへのサブスクリプション。 クライアントが複数のサブスクリプションを購読する場合 トピック, その後 彼らはMQTTの必要性に基づいて異なるトピックのために異なるQoSレベルを使用することができます クライアント

MQTT がガイドを始めると、ガイドが明確に見えます QoS. そこにあります QoSの3つのレベル お問い合わせ

  • QoS 0 - 一番一度に
  • QoSについて 1-少なくとも一度
  • QoS 2 - 一度だけ
QoS 0 –> 一番多い

QoSの最初のレベルは0です。 このレベルでは、メッセージが送信される お問い合わせ お問い合わせ 一度か決して受信機。 受信機からの応答の保証はありません お問い合わせ クライアント。 送信者がQoS 0でメッセージを送信した場合、受信者は、またはない場合があります。 プレゼント メッセージ。 クライアントは、メッセージが受信機に送信されるかどうかを知らない お問い合わせ 「ファイアとフォジェ」とも呼ばれるレベルです。 このレベルでは、保証はありません 配達およびブローカーによって確認されていない

QoS 1 –> 少なくとも一度

QoSの2番目のレベルは1です。 このレベルでは、メッセージは必須です。 お問い合わせ 送信する 少なくとも一度受信機。 しかし、メッセージは受信機に配信されます。 複数回 ブローカーから承認されるまで。 送信者がメッセージを送信する場合 QoSと 1つは、購読された受取人がトピックの下にメッセージを受信しなければならず、 お問い合わせ PUBACKパケット。 このレベルでは、送信は保証されますが、メッセージは到達することができます ブローカー 一度以上。

QoS 2 –> 正確に一度

QoSの3番目のレベルは2です。 サービス お問い合わせ MQTT。 このレベルでは、受取人から1回だけメッセージが届きます。 お問い合わせ 最も安全な QoSレベル 送信者と受信者の間に、4つのシーケンスがあります メッセージ。 詳しくはこちら メッセージは送信者からの受信機に送られ、受信機はありました 送信する そのメッセージに対する認識。 一度にメッセージが送られました。 お問い合わせ ほとんどの アプリケーションは、このサービスレベルの品質を使用します。

持続的なセッション/メッセージキューイング

持続的なセッション間の継続的な接続を参照 クライアント そして、 MQTT メッセージブローカー。 各 MQTT クライアントは、持続的なセッションを保存したり、クリーンにする必要があります。 セッション のために 例えば、MQTTクライアントブローカー、各クライアントに接続されている 出版・出版 トピックへのサブスクライブは、持続的なセッションまたはクリーンセッションを含む必要があります。 ザ・オブ・ザ・ パーシステント インターネットがクライアントに信頼できないときにセッションが使用されます。 MQTT持続セッション できます Connect メッセージを送信し、クリーンなセッションフラグを 0 に設定することで作成されます。 もし、 クライアント CONNECT メッセージを送信するセッションがない場合、新しいPersistentセッションが 作成します。 クライアントに既にセッションがある場合、クライアントはセッションを再起動します。 リリース ネットワーク接続中に存在します。 購読されたクライアントが突然から切断した場合 お問い合わせ ブローカー、それはからそのトピックに公表されたメッセージのいずれかを受け取ることはありません 出版社。

この問題を克服するために、この持続的なセッションまたはクリーンセッションが使用されます。 MQTTブローカー サポート パーシステントセッションのセッション 0(false) と 1(true) をきれいにします。 まず、MQTTクライアント お問い合わせ ブローカーに接続し、この永続的なセッションのブローカーを要求することができます。 ザ・オブ・ザ・ ブローカー すべてのクライアント情報を保存します。 クライアントがトピックを購読する必要がある場合、 お問い合わせ 1 または 2 の QoS レベルを使用し、ブローカーは未配信メッセージを公開します。 アフター 接続解除、クライアント再接続、ブローカーはすべての未配信を送信します メッセージ, クライアントにメッセージキューの方法でブローカーによって保存されているもの。 いつか メッセージ ブローカーは、クライアントが接続時間から切断されていることを検知します。 セッション 期限切れタイマーが始まります。 クライアントが CONNECT メッセージを送信すると、 CleanSession フラグ 1。 永続的なセッションが再接続する前に期限が切れた場合、保存されたメッセージ お問い合わせ ブローカーは廃棄されます。

メッセージの保持

保持されたメッセージは重要なMQTT機能です。 続ける お問い合わせ 将来のクライアント/購読者のためのトピックに関する最新のキーメッセージ。 出版社は、 ブローカー 保持されたメッセージフラグを設定することで、トピックの最後のメッセージを保持します。 あります メニュー 一度に1つのトピックごとのメッセージを保持しました。 保持されたメッセージはMQTTに保存されます クライアント (サーバ) ザ・オブ・ザ・メッセージの保持 MQTTの特長MQTT クライアントの公開を許可する メッセージ クライアントをサブスクライブするために後で配達のために貯えられる。 メッセージの保持は、 MQTT Retainビットの設定 クライアントは、QoS レベルの公開または購読が可能です。 以下 特定のトピックが、保持されたメッセージは、保持されたフラグが 設定する MQTT 3.1.1.の指定で本当。 保持メッセージの最も一般的な使用は、 識別する 新しい加入者に既知のメッセージ。

保持メッセージは、特定の新しい加入者に送信されます トピック, その後、 ブローカーはリクエストを処理し、設定されたクライアントにメッセージを公開します。 お問い合わせ サーバ 先に進む前に保持フラグをクリアする必要があります。その後、クライアントはそれを示す それ自体。 お問い合わせ 保持されたメッセージを削除すると、クライアントは保持されたメッセージをペイロードで空の送信します。 特定のトピックは、サーバーがそのトピックの下に保持されたメッセージを削除します。 それから メッセージ 保持メッセージに有効期限間隔を設定します。 満了間隔の後 時間、 保持されたメッセージは削除されます。 保持されたメッセージ機能は、維持するのに便利です クライアントの最後のメッセージ、特に状態が常に変更されていない場合に役立ちます。 サービス 質は保持されたメッセージに影響を与えません。 保持されたメッセージ機能は、 LWT(ラスト) MQTT でテスト機能します。

最後のウィルとテスト(LWT)とウィル遅延
最終ウィルとテスト(LWT)

最後に、特定のMQTTブローカーに保存されたメッセージです。 仕様 クライアント。 ザ・オブ・ザ・Last Will メッセージ以下を持っている通常のMQTTメッセージです フィールドは トピック、メッセージ、QoS、フラグを保持します。 予期しないシャットダウンがある場合、 最後まで ユーザーは、またはMQTTクライアントに通知するために、Will and Testamentが使用されます。 MQTT クライアントは 使用する メッセージを公開します。 LWTの基本的な技術は、接続している場合 壊れ目, その後、Last Willメッセージを使用して、関心のある加入者に通知するのに役立ちます 彼ら 接続を紛失しました。 例えば、ブローカーが検出したときにMQTT3.1.1で 接続解除, それは、その特定のすべての加入者にLast Willメッセージを送信します トピック。 MQTT で LWT の正しい使用を作ることは、不要な監視の多くを避けます メッセージ

ウィル・ディレイ

2013年以降、「MQTT」という言葉は少し意味がなかった。MQTTの特長 バージョン3.12013年 OASIS指定委員会に提出 お問い合わせ 憲章では、定義へのマイナーな変更のみが受け入れられることを保証します。 お問い合わせ 10月29日 2014年、OASISは標準の維持を追い越した後版3.1.1を発表しました から IBM. Will Delay は、特定のメッセージの送信を遅延させる機能を提供します。 お問い合わせ 接続が中断されます。 接続後、Will Delay のいずれか 間隔はあります 消えた、またはセッションが終了したら、Will メッセージが公開される必要があります。 ネットワーク 接続は、Will 遅延間隔が遅れる前に MQTT クライアントで開かれます こだわり ザ・オブ・ザ・ ウィル遅延間隔が長い場合、メッセージが公開されるべきではありません お問い合わせ セッションの有効期限間隔。 ウィル・ディレイが期待どおりに公開する 間隔はあります セッションの有効期限間隔よりも短い。 クライアントの公開を遅らせるサーバー ウィル 上記のいずれかのWill Delay間隔が切れるか、または消去されるまでメッセージ イベント まずは。 最後のウィールとウィリー・ディレイをデリバリーします。

安心・安心

制御パケットでキープを記述します。常にです。 スケジュール MQTTクライアントの伝送プロセスの開始と終了の間の時間。 安心・安心 秒単位で測定される2バイト整数。 MQTT クライアントは、 責任について 送信の間の時間間隔を超過しないかどうかを確認してください MQTTの特長 パケットの制御 継続的価値が 0 の場合、キーキーキーキーは、キーキーキーキーキーを押します。 オフ また、クライアントは、特定のスケジュールにMQTT制御パケットを送信しません。 ザ・オブ・ザ・ 実績 keep-alive の値はアプリケーション固有のものです。 最大値は 18 時間 12 です。 分、および 15秒。 サーバは、MQTT 制御パケットを受信しないため、Keep-alive 時間 スケジュール 1回半ばまで到達します。 常に生きている値がゼロであるため、クライアントは 閉じる ネットワーク接続 Keep-alive が制御パケットにある場合、 アクセス ブローカーとクライアントの間ではまだ開いて、ブローカーとブローカーを確認しています クライアント 接続します。

Webソケット上のMQTT

WebSocketはコンピュータ通信プロトコルです。 それは提供します 二方向 単一のTCP接続上の同時伝送。 とMQTT オーバー ウェブソケット, すべて ブラウザ MQTT 装置は可能です。 MQTT は、Web ソケット接続を介して転送されます。 ザ・オブ・ザ・ ウェブソケットURL クライアントとサーバーを接続するために使用されます。 単一のWebSocketのデータフレームは含まれています 複数の MQTT は、MQTT プロトコルに影響を与えないパケットを制御します。

次の条件は、WebSocketをWebSocketで使用するために適用されるべきです MQTT、

  • MQTT 制御パケットが WebSocket Connection 経由で転送する準備が整ったら、 それが必要 WebSocketバイナリフレームに送信されます。 これとは別に、ある他のフレーム 受け取られた 受信者はネットワーク接続を閉じる必要があります。
  • MQTT 受信機の制御パケットは WebSocket フレーム内で整列できません 境界線。
  • クライアントは、提供するWebSocketサブプロトコルのリストに「MQTT」を追加する必要があります。 ザ・オブ・ザ・ サーバー 「MQTT」でWebSocketサブプロトコル名を選択および返しました。
ユーザープロパティ

プロパティ(MQTTv5)は、おそらく最も重要な1つです コンビネーション インフォメーション お問い合わせMQTTプロトコルこのMQTTがガイドを始めてから説明し、それらが利用可能 ほとんどの MQTT メッセージタイプ。 CONNECT、CONNACK、PUBLISH、PUBACKのようなMQTT制御パケットで、 PUBREC、 PUBREL, PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK, DISCONNECT, AUTHパケット セットを持っている 変数ヘッダの最後のフィールドにあるユーザのプロパティ。 CONNECT パケットも コンテンツ Willのプロパティフィールドにペイロードが設定されているオプション。 ユーザー プロパティ フィールドはプロパティフィールドの一部です。 プロパティは、使用状況とデータを定義します。 は、 デフォルト値で、MQTT クライアントに追加情報を提供することができます。

CONNECT メッセージには、異なるプロパティフィールドがあります。 ポーランド プロパティフィールドはメッセージタイプに依存するので、メッセージ。 ユーザープロパティは、 お問い合わせ 複数回表示できる名前も複数回表示可能 複数の クライアントとサーバーにメッセージを転送する際に、名前、値のペア。 主にあります のために使用される クライアント間でメタデータを送信する ユーザのプロパティは、ユーザがユーザが有効にできる ソリューション お問い合わせ MQTTプロトコル すべてのメッセージと応答。 彼らは唯一の意味を持っている ユーザの ユーザーのプロパティがユーザーによって定義されるため、有効化。

セッション/メッセージ

セッションの有効期限間隔は、ブローカーの期間を定義します ショップ お問い合わせ その特定のMQTTクライアントのセッション情報。 セッション有効期限は4バイト 整数する 秒単位で表されます。 値が 0 の場合、MQTT 3.1.1 では、セッションの有効期限 間隔はあります ネットワーク接続が閉じられたとき、またセッションが終了します。 セッション エクスパイリー CONNECT パケットの間隔は、セッションが満了したときに MQTT クライアントによって使用されます。 間隔はあります 不在。 セッションが MQTT 制御に一度含まれている以上間隔を超過する場合 パケットと また、CONNECT パケットでは、セッションの有効期限間隔はゼロで、それは として考慮される プロトコルエラー。 非ゼロ時に有効なDICONNECTパケットとして扱いません。 セッション サーバが受信する時間間隔を解放します。 サーバの接続解除の場合、 セッション サーバへ送信することができません。 メッセージの有効期限間隔はあります と同様 セッションの有効期限間隔。 MQTT 5.0 プロトコルによって導入された新機能です。 両方とも お問い合わせ セッションの有効期限とメッセージの有効期限間隔は、容量を改善するために使用することができますMQTTブローカーお問い合わせ

理由コード/認識

Reason のコードは MQTT5 の指定によって導入される新しい特徴です そして、 詳細はこちら MQTT でガイドを始める 1バイトの符号なし値です です。 操作指示の結果に使用する。 成功の完了 操作で 理由コードは 0*80 以下を示します。 成功のコードは 0 です。 理由コード バリュー 失敗を示す 0*80 より大きい。 多くのMQTTパケットには、理由コードが含まれています。 理由 定義済みのプロトコルエラーがコード内で発生したことを示しました。 これらの理由コードは よくある質問 クライアントとブローカーのエラー条件を認めたパケットで運ばれます。 ザ・オブ・ザ・ 理由 コードはネガティブな認識と呼ばれることもあります。 理由コード16でACKを公開 MQTT3.1.1は、マッチした加入者がないことを示しています。 その結果、MQTTv5で、 お問い合わせ トピックが何らかの範囲で使用するかどうかを判断できる。 以下の制御 パケットは許可します 要求された機能が成功したかどうかを判断する購読者。 制御パケット お問い合わせ 変数ヘッダーの部分として単一理由コードはCONNACK、PUBACK、PUBREC、PUBRELです、 PUBCOMPの 接続、およびAUTH。 制御パケットには、複数の理由のコードのリストがあります。 お問い合わせ ペイロードはSUBACKとUNSUBACKです。

スケジュール ハックス お名前 (必須) パケット
0X00の 成功事例 在庫、PUBACK、PUBREC、PUBREL、PUBCOMP、UNSUBACK、AUTH
0X00の 通常の切断 接続解除
0X00の 助成金 QoS 0 フィードバック
1 0X01の 助成金 QoS 1 フィードバック
2 0X02の特長 助成金 QoS 2 サブACk
3 0X04の特長 ウィルメッセージとの接続解除 接続解除
16 日 0X10の特長 マッチング契約なし バック、PUBREC
17 日 0X11の サブスクリプションが存在しません フォロー
24 日 0X18の 認証を続行
25 日 0x19の 再認証 アウス
128 の 0x80の 不特定エラー 在庫、在庫、在庫、在庫、在庫、在庫
129の 0x81の 変形したパケット ナビゲーション、ディスクコネクト
130円 0x82の プロトコルエラー ナビゲーション、ディスクコネクト
131の 0x83の 実装固有のエラー 在庫、在庫、在庫、在庫、在庫、在庫
132の 0x84の サポートされていないプロトコルバージョン コンセプト
133の 0x85の クライアントID(識別子)が有効でない コンセプト
134の 0x86の 悪いユーザー名またはパスワード コンセプト
135の 0x87の 許可されていない 在庫、在庫、在庫、在庫、在庫、在庫
136 の 0x88の サーバーが利用できなくなった コンセプト
137の 0x89の サーバーの忙しい ナビゲーション、ディスクコネクト
138の 0x8Aの 禁止事項 コンセプト
139 の 0x8Bの サーバのシャットダウン ディスコネクト
140 円 0x8Cの 悪い認証方法 ナビゲーション、ディスクコネクト
141の 0x8Dの 生き続けるタイムアウト ディスコネクト
142人0x8Eの セッション ディスコネクト
143 の 0x8Fの トピックフィルタ無効 バックアップ、監視、接続解除
144の 0x90の トピック名 無効 コンソール、PUBACK、PUBREC、DICONNECT
145の 0x91の 使用中のパケット識別子 PUBACK、PUBREC、SUBACK、UNSUBACK
146の 0x92の パケット識別子が見つかりません PUBREL、PUBCOMP
147の 0x93の 受け取る 最高は超過しました ディスコネクト
148の 0x94の トピック 別名で無効 ディスコネクト
149 の 0x95の パケットが大きすぎる ナビゲーション、ディスクコネクト
150円 0x96の メッセージ率が高すぎる ディスコネクト
151の 0x97の クォータは超過しました 在庫、在庫、在庫、在庫、在庫
152号 0x98の 管理行動 ディスコネクト
153の 0x99の ペイロード形式 無効 コンソール、PUBACK、PUBREC、DICONNECT
154 の 0x9A 未サポート ナビゲーション、ディスクコネクト
155の 0x9Bの QoSはサポートしていません ナビゲーション、ディスクコネクト
156の 0x9Cの 別のサーバーを使用する ナビゲーション、ディスクコネクト
157の 0x9Dの サーバーの移動 ナビゲーション、ディスクコネクト
158の 0x9Eの 共有サブスクリプションがサポートされていない バックアップ、接続解除
159の 0x9Fの 接続速度が超過 ナビゲーション、ディスクコネクト
160円 0xA0の 最大接続時間 ディスコネクト
161号 0xA1の サブスクリプション識別子がサポートされていない バックアップ、接続解除
162円 0xA2 ワイルドカードサブスクリプションはサポートされていません バックアップ、接続解除
サーバーの切断

クライアントのみがMQTTv3.1.1で接続解除メッセージを送信できます。 ザ・オブ・ザ・ TCP/IPの特長 サーバが発生した問題が発生した場合は、セッションを終了します。 サーバは送信できます 接続解除 MQTTv5の理由コードと共にクライアントにメッセージを送る。 サーバーの切断は起こります いつか クライアントは、DICONNECT パケットを理由コードで送信します。 切断は最終的なです ステップで MQTTプロセス。 DISCONNECTはクライアントから送信される最後のMQTT制御パケットです。 お問い合わせ サーバ。 サーバーの接続がネットワーク接続の理由を示す 休館日 ネットワーク接続を閉じる前に、クライアントまたはサーバーMAYはDICONNECTを送信 パケット。 もし、 Reason コード 0x00 (Normal) で最初に DISCONNECT パケットを送信しないクライアント 切断) しかし、ネットワーク接続は閉鎖され、接続はWill Messageを持っています。 メッセージ 出版情報

ペイロード形式 / コンテンツタイプ
ペイロード形式

ペイロード フォーマットは、ペイロードを含むことができるすべての MQTT パケットの一部です。メッセージが公開されるときにペイロード フォーマットを指定できるようにします。これは、メッセージの受信者に転送できます。一部の MQTT 制御パケットには、最後の部分にペイロードが含まれます。ペイロード フォーマット フィールドを必要とする制御パケットは、CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK です。PUBLISH 制御パケットでは、ペイロード フォーマット フィールドはオプションです。これは、アプリケーション メッセージと見なされるためです。ペイロード フィールドは、PUBLISH パケットと CONNECT パケットの will プロパティにのみ存在します。サーバーは、アプリケーション メッセージを受信するすべてのサブスクライバーに、ペイロード フォーマット インジケーターを変更せずに送信する必要があります。受信者は、ペイロードが指定されたフォーマットであることを確認できます。PUBACK、PUBREC、または causal code が送信されない場合、ペイロード フォーマットが正しくありません。

コンテンツタイプ

コンテンツタイプは、PUBLISHパケットのWILLプロパティにのみ存在します。 そして、 CONNECT パケット。 MIME(多目的インターネットメールエクステンション - コンテンツを許可する タイプ サーバ側からクライアント側へ送信するデータ) メッセージは 出版情報 メッセージの受信者に転送できます。 サーバは送信しなければなりません お問い合わせ コンテンツタイプを変更することなく、すべての購読者にコンテンツメッセージ。 ザ・オブ・ザ・ コンテンツタイプは パケットに含まれている1回以上は、プロトコルとみなされる エラー。 ザ・オブ・ザ・ コンテンツタイプの値は、アプリケーションメッセージの送信と受信によって定義されます。 できません。 メッセージ転送中にコンテンツタイプをトランクします。

リクエスト/レスポンスパターン

MQTT内のFormerte/responseシステムは応答を提供します タイトル そして、 data 属性に連絡して、レスポンスメッセージが発行者に返されるようにします。 リクエスト クライアントの機能を追加して、サーバーから設定情報を取得する方法 お問い合わせ 応答ヘッダーを設定します。 一部のアプリケーションでは、リクエスト/応答の連絡先をリクエスト/応答する場合があります。 お問い合わせ MQTT。 このバージョンのMQTTには、いくつかの目的のために使用できる3つのプロパティがあります。 フィードバック トピック、相関データ、要求/応答情報。

MQTT クライアントは、要求されたメッセージをトピックに公開します。 転送する すべての購読された顧客。 同じトピック名に登録された複数の回答者があります。 ザ・オブ・ザ・ 応答担当者はリクエストメッセージに基づいてアクションを起こし、応答トピックを公開します お問い合わせ クライアント。 応答メッセージは、どのQOSでも、応答者がセッションを使用することができるか クチコミ インターバルと共有サブスクリプション。 主催者は、その旨を必ず確認する責任を負います。 お問い合わせ 応答トピックで設定したトピック名を公開し、購読する権限 宿泊施設 それは、 回答者は、回答者に対して権威を持っていることを確認するために、回答者の責任です サインアップ 要求されたトピックに、回答者のトピックを公開します。

要求応答の相互作用プロセス:

  • MQTT クライアント (リクエスト) は、応答トピックでリクエストメッセージを公開します。
  • 他のクライアント(responders)は、トピック名と一致するトピックを購読しました 送信する MQTT クライアントはリクエストメッセージを受信しました。
  • 回答者は、存在していたトピック名に対する応答メッセージを公開します。 お問い合わせ また、リクエストメッセージに基づいて適切なアクションを取る
  • 通常のアプリケーションでは、リクエストはレスポンスヘッダに購読します。 お問い合わせ 応答メッセージが届きます。 しかし、他のクライアントは、 フィードバック 応答メッセージが受信され、そのクライアントによって処理されるヘッダー。 お問い合わせ リクエスト メッセージ、複数のクライアント、または誰もが応答メッセージに購読することができます。
共有サブスクリプション

MQTT 5.0 プロトコルでは、新しい機能が共有されるようになりました。 サブスクリプション 複数の加入者の負荷分散機能に相当します。 追加する シェア サブスクリプションサポートにより、加入者は残高をロードすることができます。 それは識別することができます 利用する トピック フィルターの特別な様式。 共有名には「/」、「+」、または「#」のスペシャルが含まれていません。 文字。 $ シェアプレフィックスは、共有サブスクリプションを示します。 共有サブスクリプション できます 複数のサブスクライブ MQTT セッションに関連する。 メッセージの出版物 マッチする トピックフィルタは、サブスクライブセッションの1つにのみ送信されます。 この機能は便利です 所在地: 複数のクライアントは、出版物の処理を並列に共有します。 一般的に、 アプリケーションの使用 サブスクリプションセッションのグループを参照する共有名。

共有サブスクリプションは、代わりにMQTTサーバーの面で定義されます お問い合わせ セッション 共有サブスクリプションがある場合、他のセッションは購読できます お問い合わせ 共有サブスクリプショントピックフィルタ。 できるセッションの1つだけを送信します。 購読する 共有サブスクリプション。 各共有サブスクリプションは、互いに独立したものです。 お問い合わせ 可能です。 オーバーラップフィルタで2つの共有サブスクリプションを持っています。 そのような場合、そのメッセージ お問い合わせ 共有サブスクリプションは別途処理されます。 申請書を送付する場合 お問い合わせ クライアントは、サーバーはクライアントのサブスクリプションのQoSを最大に与える必要があります。 スタンダード クライアントのサブスクライブは、異なるQOSレベルを要求します。

サブスクリプション識別子 & サブスクリプション オプション
サブスクリプション識別子

サブスクリプション中に、クライアントはサブスクリプションを指定できます 識別子。 サブスクリプション識別子は、整数値バイトが続く 購読者の識別子を表します。 サブスクリプション識別子には1つの値があります。 268,435,455. サブスクリプション識別子の値がゼロの場合、プロトコルエラーです。 ザ・オブ・ザ・ サブスクリプション識別子は、クライアントがどのサブスクリプションかを決定することを可能にします サブスクリプション 送信されるメッセージを引き起こしました。 クライアントがサブスクリプションを指定できるとき 識別子 サブスクリプション中に、ブローカーはマッピング関係を確立し、保存します 間の距離 このサブスクリプションとサブスクリプション識別子が正常に作成または作成するとき 変更点 サブスクリプション。 PUBLISHパケットをこのクライアントに送る必要がある場合 サブスクリプション、ブローカーはこのPUBLISHでサブスクリプション識別子を返します パケット。 出版物が結果である場合の多数のサブスクリプション識別子は加えられます 複数のサブスクリプションの同一アイテム。 この場合、注文はそうではありません 重要な。

サブスクリプションオプション

MQTT v5 では、サーバーの動作が利用することで変更されます。 サブスクリプション オプション。 アプリケーションを可能にするために主に限られたサブスクリプションオプションを提供します。 お問い合わせ 含まれるもの このクライアント(ローカルなし)に表示されたメッセージやオプションを送信しないオプション サブスクリプションに保存されたメッセージの処理。 MQTT v5では、サブスクリプションオプションのサポート QoS, ローカルなし, 公開として保持, 処理の保持. 送信しないと便利です 保持される 再接続したときに既存のサブスクリプションへのメッセージ、およびクライアントはいつかわからない お問い合わせ セッションの前の接続でサブスクリプションが完了しました。 それは有用ではない お問い合わせ 顧客が変更を受けたいと思う新しいサブスクリプションのために保存されたメッセージを送信します 通知は初期状態を知りません。 サブスクリプションオプションは、 お問い合わせ サーバが Application Message をクライアントに送信できる最大 QoS レベル。 ザ・オブ・ザ・ サブスクリプション識別子とサブスクリプションオプションは、このMQTTによって明確に説明されます 取得する ガイドを始める

トピック 別名で

Topic AliasはMQTT 5.0プロトコルによって導入された新機能です。 お問い合わせ です。 トピックのサイズを減らすことによって公開されたパケットのサイズを減らすためのメカニズム フィールド。 それは、 トピック名を省略できるようにすることで、MQTT パケットのオーバーヘッドサイズを削減します。 お問い合わせ 小さな整数。 クライアントとサーバーは独立して指定します。, どのように多くのトピックがそれらにエイリアス 許可します。 Topic Aliasはトピックではなくトピックを識別するために使用される整数値です 名前。 お問い合わせ トピック名が長く、同じトピック名が繰り返し使用される場合に便利です。 お問い合わせ ネットワーク接続 トピックエイリアスのマッピングはネットワーク内でのみ存在します 接続と接続 そのネットワーク接続の寿命だけ続きます。 これらのマッピングが使用される場合 によって クライアントとサーバーは、それぞれ独立しています。 ほとんどの場合、彼らはそうではありません 必須ですが、多くのお客様が頻繁にリリースされると、大幅に削減できます。 ネットワーク 交通アクセス

フロー制御

フロー制御は、データのレートを管理するプロセスです トランスミッション 間の距離MQTTクライアント. . 未確認の回数を制御するのに便利です パブリッシュ パケット。 クライアントとサーバーが、保留中の信頼できるメッセージの数を指定できるようにする(QoS > 0 ) 独立。 その後、送信者は、このようなメッセージを送信し、これを以下に学習を停止します クォータ。 ザ・オブ・ザ・ クライアントまたはサーバーは、初期のディスパッチ見積り値よりも多く受けるべきではありません。 ゼロ。 お問い合わせ 他のMQTT制御、パケットは引き続き処理し、クライアントであっても応答しなければなりません そして、 サーバーの引用語句の価値はゼロです。 これは、信頼できるメッセージのレートを制限するために使用されます お問い合わせ 一度にパスに何があるかを制御する。 主に数値の制御に使用されます インフォメーション 信頼できるメッセージの送信。

最高のパケットの長さ

ここでは、最大パケット長を定義しています。 このパケットの長さ 仕様 ヘッダーとそのパケットに送信されたデータを含むパケット全体の大きさ。 許可する クライアントとサーバーを独立して、サポートするパケット容量の最大値を決定します。 送信する セッションパートナーに大きなパケットがエラーです。

任意サーバー機能 可用性

任意サーバー機能 可用性は特徴のセットを定義します ということ お問い合わせ サーバは許可せず、クライアントにこの関数を指定するための仕組みを提供 から サーバ。 サーバー機能の可用性の主な機能は、最大QoS、保持 利用できる、 ワイルドカードサブスクリプション 利用可能、サブスクリプション識別子 利用可能、および共有 サブスクリプション 利用できる。 サーバがこれらの機能を宣言した場合、クライアントは利用できません。 これらを使う 機能はエラーと見なされます。 サーバが機能を有効にすることができないという事実 はじめに MQTTのバージョンは、機能が機能しないクライアントに通知することによって可能になります 許可される。 この機能は、このような好みの行動を報告し、特定の行動を追加することができます 理由 クライアントがこれらの機能の1つを使用した場合のコード。

認証の強化

認証を強化し、認証を実装する チャレンジレスポンスマナー 認証を有効にする仕組みを提供します。 ユーザー名とユーザー名 相互認識を含むパスワード。 高められた認証は信頼します 認証 認証プロセス全体を完了するためのメソッドと認証データ。 ザ・オブ・ザ・ 認証 メソッドは、クライアントとサーバー間で送信されたデータのオブジェクトの合意です。 お問い合わせ 認証データ。 クライアントのデータ転送とプロセスは必須です。 サーバへ 認証を完了します。 これにより、SASL(Simple Authentication and Security Layer)が使用可能 スタイル クライアントとサーバーの両方でサポートされている場合、認証を使用する 再認証 接続内のクライアント。 MQTTは、強化された認証の実装を提供しています。 お問い合わせ クライアントとサーバーの両方で強化された認証の実装が任意です。

サーバは接続を維持します

これにより、サーバーは、サーバーが Keep-alive の値を指定できるようにします。 クライアント お問い合わせ また、サーバーを使用して、サーバーが最大の許容範囲を設定することができます。

この記事がMQTTを有効にするための詳細な説明を提供希望 早割 MQTTでキックスタートする採用者。

お問い合わせ

皆様のお越しをお待ちしております。 お問い合わせ あなたの質問およびフィードバック。