MQTT (Message Queuing Telemetry Transport)は、IoTに特化した軽量なデータ配信用プロトコルで、主にクラウドを介したデータ参照を提供するために利用されます。通信量が削減された、必要なデータでメッセージを構成するPub/Sub(出版-購読型)モデルに特化しています。
MQTTコンテナはRT-edge上位通信I/Fコンテナの一種で、RT-edgeの扱うデータタグを、リモート機器から参照できるようにするMQTTプロトコル通信クライアント機能にあたります。
ローカルエリアからクラウドまで対応
MQTTはTCP/IPを使用したプロトコルで、サーバにあたる「MQTTブローカ」との接続によって、データの読みと書きを実現します。MQTTブローカは、無償ソフトウェア、市販有償ソフトウェア、クラウドベースなどの各種形態が提供されていて、これらに接続できます。
接続設定のしやすさ
MQTTコンテナの動作設定はxmlに定義します。接続先ブローカのIPアドレス、ポート番号、接続ユーザ情報を指定します。
データ共有のしやすさ
データ共有もxmlに定義します。MQTTトピック名とRT-Edgeタグ名を指定して、公開する場合はパブリッシュ対象タグの定義、外部参照する場合はサブスクライブ対象タグを定義することになります。
MQTTコンテナを用いる、以下のような仕様のサンプルEdgeシステムを想定して、一連の動作確認フローを解説します。
- RT-edgeが入力したセンサデータをブローカに公開(パブリッシュ)します。
- ローカルエリアネットワーク内にブローカ(サーバ)を設置し、LAN接続します。
- 購読(サブスクライブ)データは、ブローカからMQTTメッセージで届き、Edgeタグが更新されるので、HMI表示に利用します。
MQTTブローカサーバの構築
LAN接続された外部コンピュータに、MQTTブローカを構築します。
■ MQTTブローカサーバの起動
Windowsコマンドプロンプト(cmd.exe)を起動して、次のようにコマンドをタイプしてブローカを起動・常駐させます。
MQTTコンテナ設定(ブローカ接続設定)
RT-Edgeコンピュータでは、接続先のMQTTブローカを定義します。
設定例を以下に示します。
MQTTコンテナ設定(データ設定)
パブリッシュ対象となるEdgeタグと、サブスクリプション対象となるEdgeタグを設定、登録します。
外部からEdgeタグを参照する
オープンソースのデータ参照ツール「MQTT explorer
(http://mqtt-explorer.com/)」などを用いてブローカに接続すれば、Edgeタグを外部からのサブスクライブ動作を確認できます。
■ RT-edge で取り込んだセンサ値が外部公開される
RT-edgeで使われているすべてのEdgeタグは、パブリッシュ対象にすることが可能で、これにより外部コンピュータは値参照できるようになります。
RT-edge I-I/Oコンテナが入力したセンサデータ値のEdgeタグを、パブリッシュ対象 TagRef_OUTに指定すれば、更新されたタイミングでメッセージが自動発行されます。
■ RT-edge APIでEdgeタグをアップデートしてみる
RT-edge ユーザアプリケーションは、APIを使ってEdgeタグの値更新できますが、パブリッシュ対象 TagRef_OUTに指定すれば、更新したタイミングでメッセージが自動発行されます。
外部データをEdgeタグで参照する
外部からサブスクライブしたデータは、RT-Edge標準のタグブラウザツールを用いると変化を参照できます。
■ 手動で外部コンピュータからパブリッシュしてサブスクライブ動作をみる
外部コンピュータからWindowsコマンドプロンプト(cmd.exe)を起動して、次のようにコマンドタイプしてパブリッシュしてみます。
サブスクライブ対象に指定されたEdgeタグ”ESP32/02/temp”の値が、200に変化することがわかります。
同様に下記のコマンドでは、Edgeタグ”ESP32/03/temp”の値が300に変化することがわかります。
MQTTを用いたHMIアプリケーション