MQTTノードを使う
ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回はMQTTノードを使ってみます。私はMQTTについてはあまり詳しくなく、うっすらIoTの分野で使われていることを聞いたことがある程度です。まずはMQTTについて調べるところから開始しました。
MQTTの概要
Wikipediaによると、こんな感じの説明があります。
- Message Queuing Telemetry Transportの略
- TCP/IPによるPub/Sub型のデータ配信モデル
- 軽量な通信電文
- メッセージブローカーが必要
Pub/Sub型と言えば、トポロジー的にはAWSで言うところのSNSみたいなもんですかね。軽量なのでスペックの低いIoT機器でも扱いやすいということなのでしょう。だいたい理解しました。
ブローカーのインストールと起動
Node-REDのドキュメントに使い方の説明があるので、実際にやってみます。ブローカーが必要なので、まずはmosquittoなるものをインストールおよび起動します。ちなみに、Mac上で作業しています。
$ brew install mosquitto $ mosquitto 1640008513: mosquitto version 2.0.14 starting 1640008513: Using default config. 1640008513: Starting in local only mode. Connections will only be possible from clients running on this machine. 1640008513: Create a configuration file which defines a listener to allow remote access. 1640008513: For more details see https://mosquitto.org/documentation/authentication-methods/ 1640008513: Opening ipv4 listen socket on port 1883. 1640008513: Opening ipv6 listen socket on port 1883. 1640008513: mosquitto version 2.0.14 running
動いたようです。これでlocalhostの1883ポートでブローカーが待ち受けを開始しました。
MQTTノードを使ったフローの作成
いよいよ、フローを作っていきます。「mqtt in」ノードと「mqtt out」ノードを含めて以下のように配置します。
上部のmqtt outノードでブローカーにメッセージを送信しています。一方、下部のmqtt inノードでブローカーが配信したメッセージを受信しています。イメージではノードのステータスが「接続済」となっていますが、現時点ではステータスの表示が違っていても気にしなくて大丈夫です。
mqtt outノードは以下のように設定します。この内、「サーバ」は右上の鉛筆アイコンを選択して編集します。トピックはとりあえず「hoge」の文字を指定しておきます。
続いて、サーバの編集を行います。「サーバ」と言っていますが、実際には「mqtt-brokerノード」の編集画面です。ポイントは以下のとおりです。
- 名前:ブローカーを識別するための適当な文字列を指定します
- サーバ:今回はローカルのブローカーに接続するので「localhost」と入力します
- ポート:デフォルトの「1883」のままにしておきます
- さっき起動したmosquittoと合わせておきます
続いて、mqtt inノードは以下の通りに設定します。
- サーバ:先程設定したmqtt brokerノードの設定を選択します。
- トピック:mqtt outノードと同じく「hoge」と設定します
以上で設定は完了です。設定が正しければ、デプロイするとmqtt inノードとmqtt outノードのステータスに「接続済」と表示されるはずです。
フローを実行すると以下のようなログが出力されます。
- payload:injectノードで設定した時刻が出力されています
- topic:mqtt in/outノードで設定したトピック名「hoge」が出力されています
MQTTクライアントで送信したメッセージをmqtt inノードで受信する
続いて、3rdパーティ製のMQTTクライアントで送信したメッセージをmqtt inノードで受信します。今回利用したMQTTクライアントは「MQTT X」です。ポイントは以下の通りで、最初にインストールしたブローカーmosquittoの待受ポートに接続設定します。
- Host:localhost
- Port:1883
まとめ
ここまで確認したことをまとめます。
- ブローカーをインストール&起動しました
- mqtt in/outノードからブローカーに接続して、メッセージの送受信を確認しました
- 3rdパーティ製MQTTクライアントが送信したメッセージをmqtt inノードで受信できることを確認しました
MQTTノードについてはこんなもんでしょうか。
コメント
コメントを投稿