MQTTについて調べました

最終更新:2020年8月24日

ESP32の習得途中でMQTTなるワードを知りました。ESP32のサンプルスケッチにはマイクロソフト社の提供するExampleが掲載されています。

MQTTはMessage Queue Telemetry Transportの略で、TCP/IP層で使われるPub/Sub型のデータ配信モデルになります。
1990 年代後半に IBM が考案して開発したプロトコルで、2 者間の非同期通信をサポートします。
非同期メッセージング・プロトコルは、メッセージの送信側と受信側を空間という点でも、時間という点でも切り離すため、信頼できないネットワーク環境内でスケーラブルな性質を発揮します。この仕組みが軽量さと柔軟性の点で申し分のないバランスがとれたネットワーク・プロトコルだとして、IoT(Internet of Things)の世界で重宝され使用されています。

MQTT標準(OASIS標準)はhttps://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.htmlに提供されています。
ここでMQTTの特性が記載されており、『MQTTの特性は、小さいコードフットプリントが必要である、および/またはネットワーク帯域幅が貴重である、マシンツーマシン(M2M)およびインターネットオブシング(IoT)コンテキストでの通信などの制約された環境を含む、多くの状況での使用に最適です。』とされています。

LabVIEWの世界でもこのプロトコルをサポートしたライブラリが提供されています。サードパーティ製です。

MQTTブローカーサーバーは別途用意する必要があるようです。『mosquitto』で構わないようです。

ライブラリ内のExampleである、test.viを起動する。ダイアグラムを開いてブローカの設定をする必要があります。
※多分同一PCで起動した場合は何も変更しなくても接続出来るはずです。
※一旦Disconnectしてしまうとサーバにdisconnectのメッセージが表示されるものの、LabVIEW側の問題で再接続できないようです。一旦Quitすれば良いです。この辺りをどう考えるか?

実際に使ってみたのですが、いまいちMQTTを使う意味合いが判りません。
MQTTが産業界の標準的なプロトコルとして定着すれば、このプロトコルに対応する必要はあります。ModbusとかEtherNet/IPとか、PLCとの遣り取りを独自のプロトコルで実現するよりはこちらの方が後々問題が少ないという考えがあります。※OMROMPLCの場合、FINS プロトコルという独自のモノがあります。細かな制御も可能ですが、移植だとか、新たな周辺機器の追加を考えた場合、汎用で流通しているプロトコルを採用しておくことが優位になる事は明らかです。
ただ、このプロトコルを積極的に採用している市販品が見つかっていません。


戯言(nonsense)に戻る


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

商標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。