LoginSignup
1
2

More than 5 years have passed since last update.

MQTTを使って、IOT通信環境紹介1-IOTとMQTTの基本概念

Last updated at Posted at 2019-02-05

1、IOTとは何ですか?
 モノのインターネット(IoT)は、英国のRFID(Radio Frequency Identification)の分野における技術の先駆者であるKevin Ashtonによって造られた用語で、ユビキタスセンサーを介して現実の世界をインターネットに接続するシステムを考案しました。モノのインターネットはインターネットを元にに構築され、人と人がつながっているインターネットとは異なり、それはマシンとマシンの間の相互接続(M2M)に焦点を当てています。

2、IOT機器のデータ特性とネットワークアーキテクチャ
 IOTシステムは、リアルタイムで様々な端末装置からデータを受信することだけでなく、いつでも装置に制御コマンドを送信することも要求されます。これには、IOTデバイスのデータフォーマットが短くてスリムで解析しやすいことが必要です。さらに、通信プロトコル自体が軽量、スケーラブルで、ネットワークとデバイスの不安定に対処できることも必要です。
 IoTデバイスは通常、工場、病院、駅、空港などの集合箇所または自動車、石油パイプライン、風力発電などのような分散した設備に配置されます。これには、さまざまなワイヤレス(赤外線、Bluetooth、WIFI、3G、4G、5G、衛星)および有線通信技術を使用してリモートサーバーにデータを送信できることが必要です。
 IoTデバイスの密度を考慮すると、エッジコンピューティングノードを導入することで大量の生データを効果的にフィルタリングし、一次処理されたより綺麗なデータを中央ビジネス処理プラットフォームに流入することを可能にします。このようにして、中枢ネットワークのトラフィックを減少し、さらに、主処理プラットフォームの効率も向上させることもできます。

IOTネット構成図:
image.png

4、MOTTについて
 現在のIOTプロトコルの中で、最も競争力があり、一番広く使用されている通信プロトコルは、IBM社は1999年提出したMQTTです。2011年にMOTTのオープンソースプロジェクトPahoを設立し、Eclipseソフトウェア財団に寄付しました。MQTTプロトコルは非常に軽量で拡張性が高く、上記のIOT問題を有効的に解決することができます。現在、モノのインターネット(Internet of Things)の通信規格の1つになりました。

5、MOTTプロトコルメッセージ構造
 MOTTプロトコルのメッセージ構造は、他のネットワーク通信プロトコルと比較して非常に単純で明確であり、主に次の3つの部分から構成されています。
プロトコル構造:固定ヘッダ+可変ヘッダ+ペイロード

MOTTプロトコル構造図:
image.png

メッセージの詳細な説明については公式文書をご参照してください。
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html

6、MOTTプロトコルの動作原理(PUBとSUBモデル)
 MQTTプロトコルは、ネットワーク内で2つのエンティティタイプ、メッセージブローカとクライアントを定義します。ブローカは、クライアントからすべてのメッセージを受信し、それらを関連するターゲットクライアントにルーティングするサーバーです。基本的にQoS0,QoS1,QoS2など三つのサービス品質が提供できます。クライアントとは、メッセージの生産と消費する側です。クライアントは、同時に、自分で生産したメッセージも消費できます。
 クライアントがプロキシに接続します。エージェント内の任意のメッセージ「トピック」を購読できます。この接続は、機密メッセージを送信するための単純なTCP / IP接続、または暗号化されたTLS接続です。
 クライアントは、メッセージとトピックをブローカに送信することによって、トピックのメッセージを公開します。その後、ブローカはそのトピックを購読しているすべてのクライアントにメッセージを転送します。

MQTTアーキテクチャ図:
image.png

6、MOTTプロトコルによって提供されるQoSモデル
■QOS 0 – Only Once
 メッセージはTCP / IPネットワークを介して送信されます。 応答はありません、そして、再送の仕組みはプロトコルで定義されません。 メッセージは一度サーバーに到着するか、まったく到着しないことがあります。

QOS-0処理図:
image.png

■QOS 1 – At Least Once
 サーバーはメッセージを受信し、PUBACKフラッグを設定することによって確認されます。伝送障害がある場合、送信者はメッセージヘッダのDUPビットを設定してからメッセージを再度送信します。 メッセージは少なくとも1回サーバーに到着することが保証されます。
クライアントがPUBACKメッセージを受信しない場合(それがアプリケーション定義のタイムアウトであるか失敗であるかにかかわらず、その後通信セッションが再開されるかどうか)、クライアントは再度PUBLISHメッセージを送信してDUPビットを設定します。クライアントから重複データを受信すると、サーバはメッセージを購読者に再送信し、新たなのPUBACKレスポンスメッセージを返信します。

QOS-1処理図:
image.png

■QOS 2 – Only Once
 QoSレベル1で付加された処理フローは、重複メッセージが受信側に配信されないようにします。 これは最高レベルの伝送であり、重複メッセージが許可されていない場合に使用されます。 これによりネットワークトラフィックが増加しますが、メッセージの内容が重要であるため通常は許容されます。QoSレベル2では、ヘッダーにメッセージIDがあります。

QOS-2処理図
image.png

次回は流行なオープンソースソシューションを選択して、実際のMQTTのサーバーを構築します。
興味のある方は、今回の基本概念を理解して、ぜひ、実感してみてください。
https://qiita.com/MichaelYang/items/d4d69e12c40b97bdf0ff

参考資料:
https://en.wikipedia.org/wiki/MQTT
https://thenewstack.io/mqtt-protocol-iot/
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/
https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/02-ControlPacketFormat.html
http://www.steves-internet-guide.com/understanding-mqtt-qos-levels-part-1/
http://www.steves-internet-guide.com/understanding-mqtt-qos-2/

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2