Node-REDへのAedes Brokerの導入

ここでは、Aeses Brokerを使ったネットワークの構築と確認実験を行います。

1. Aedes MQTT ブローカーのノードをNode-REDに追加

Aedes MQTT ブローカーのノードのNode-REDへの追加は、こちらをご覧ください

MQTT Brokerノードの追加

 

2. MQTT ブローカーのノードを使ってローカルMQTT ネットワークを構築

MQTT ブローカーはローカルでも動作します。そこで、MQTT ネットワーク構築の練習として、ローカルマシンにMQTTネットワークを構築して、動作を確認してみます。実際に運用する場合には、他のマシンをMQTTにしてもいいですし、他のマシンをパブリッシャやサブスクライバにしてもいいです。

2-1. MQTT ブローカーノードの配置と設定

前項で追加したMQTT ブローカーのノードを図6のようにエディタ上にドラッグして配置します。

図6. MQTT broker ノードの配置

次に、ブローカーノードをダブルクリックして設定画面を表示してみます。ブローカーノードの設定は、特に変更しなくても動作に問題はありません。MQTT のポートは、1883が使用されていることが分かります。”中止”をクリックして、設定完了です。

図7. aedes brokerノードの編集

2-2. MQTT パブリッシュ ノードの配置と設定

ここからMQTT のパブリッシュノードの配置と設定を行います。

まず、MQTT パブリッシュノードをドラッグしてエディタ画面に配置します。次に、MQTT パブリッシュノードの入力に、パブリッシュするデータを出力するノードを接続します。
今回は、インジェクトノードで固定メッセージ” My first MQTT Broker”とパブリッシュすることにします。

図8. MQTT パブリッシュノードの配置

MQTT パブリッシュノードの設定です。MQTT パブリッシュノードをダブルクリックして、設定画面を表示します。

サーバーを新規に追加するために、図9のように①右側の鉛筆マークをクリックします。

 

 

図9. MQTT パブリッシュノードの設定(1)

すると、さらに図10のような設定画面が現れます。サーバの欄に、今回は、①localhostと記入します。MQTT ブローカーが別の機器の場合は、そのMQTTのブローカーのある機器のIPアドレスを記入します。記入が終わったら、右上の②追加ボタンをクリックします。そのあとに出てくる設定画面で、右上の完了ボタンをクリックして、MQTT パブリッシュノードの設定は完了です。

図10. MQTT パブリッシュノードの設定(2)

次に、インジェクトノードの設定を行います。インジェクトノードをダブルクリックして、図11のような設定画面を表示します。①パブリッシュする内容を、msg.payloadの欄に記載します。今回は、”My first MQTT Broker”と記載しました。その後、②右上の完了ボタンを押します。

図11. インジェクトノードの設定画面

以上で、MQTT のパブリッシュ側の設定は完了です。

2-3. MQTT サブスクライブ ノードの配置と設定

ここから、MQTT サブスクライブノードの配置と設定を行います。

まず、図12のように、MQTT サブスクライブノードをドラッグしてエディタ画面に配置します。次に、MQTT サブスクライブノードの出力に、データを利用するノードの記述を行います。
今回は、デバッグノードを繋ぎ、デバッグ画面でサブスクライブした内容をモニタします。

図12. MQTT サブスクライブノードの配置

次に、MQTT サブスクライブノードの設定を行います。MATT サブスクライブノードをダブルクリックすると、図13のような設定画面が現れます。

サーバの設定が必要であれば選択します。今回は、自動でlocalhostが選ばれていましたのでそのままとします。選ばれていない場合は、localhost を選んでください。トピック欄に、①サブスクライブするトピック名を記入します。今回は、”/public”と記入します。記入後、②完了ボタンをクリックします。

図13. MQTT サブスクライブノードの設定画面

以上で、MQTT サブスクラブノードの設定は完了です。

最後に、右上のデプロイボタンをクリックして、ローカルMQTTネットワークの構築が完了しました。

図14. ローカルMQTTネットワークのデプロイ

2-4. MQTT パブリッシング/サブスクライブ実験(1)

さて、ここからは上記で構築したローカルMQTTネットワークの動作の確認を行います。デプロイが完了し、MQTT のサーバ名やトピックス名が合致していると、図15に示したように、MQTT のブローカーノードやパブリッシュノード、サブスクライブノードに接続していることを表す緑色の四角が現れます。この状態で、インジェクトのボタンを押すと、右側のデバッグ画面に”My first MQTT Broker”の文字が表示されます。インジェクタからパブリッシャに文字列が送られ、MQTT のブローカーを介して、サブスクライバに送られます。そして、デバッグノードの送られた文字がデバッグ画面に表示されたことが分かります。実験成功です。

MQTT ブローカーが別の機器でもIPの設定が異なるだけで、動作は同じです。

図15. ローカルMQTTネットワークの動作実験画面

2-5. MQTT パブリッシング/サブスクライブ実験(2)

次に、トピックスが異なる場合に、混信することなく、パブリッシャのトピックスの内容が、同じトピックスをサブスクライブしているサブスクライバに届くかの確認実験をしてみます。

図15に追加で、同じようにパブリッシュノードとサブスクライブノードを1つずつ配置し、トピックス名を変えて設定します。

追加分は、図16に示すように、トピックス名を”/local”としています。その後、デプロイします。

そして、トピックス”/public”のインジェクトボタンを押します。すると、図16のデバッグ画面の上段のように、”My first MQTT Broker”の文字が表示されました。次に、トピックス”/local”のインジェクトボタンを押すとデバッグ画面の下段のように”This is my local message.”と表示されました。それぞれのボタンでそれぞれのパブリッシュノードからそれぞれの文字列がMQTT ブローカーにパブリッシュされた結果だということが分かります。

では、サブスクライバに正しく届いているかどうかを確認します。デバッグノードの文字の上にカーソルを持って行くと、その文字を出力したデバッガが赤枠で表示されます。

図16では、上段のトピックス”/public”からパブリッシュされた文字にカーソルを合わせています。この場合、トピックス”/public”のMQTT サブスクライバにつながったデバッグノードが赤枠で表示されていますので、”My first MQTT Broker”の文字列は、正しくトピックス”/public”にサブスクライブされていることが分かりました。

図16. ローカルMQTTネットワークのトピック違いの動作実験(1)

 

同様に、図17に示すように、下段側の文字列にカーソルを合わせてみると、トピックス”/local”のサブスクライブノードに接続されたデバッグノードから出力されていることが分かります。文字列”This is my local message.”は、正しくトピックス”/local”にサブスクライブされたことが分かりました。

図17. ローカルMQTTネットワークのトピック違いの動作実験(2)

以上のように、Node-RED上で簡単にMQTT ブローカーを作成し、データの転送ができることが確認できました。

3. Aedes MQTTの認証(ユーザー名/パスワード設定)

Aedes MQTT Brokerは、ユーザー名とパスワード設定による認証をサポートしています。
ここでは、ユーザー名とパスワード設定による認証を使用した通信実験を行ってみます。

3-1. MQTT in/out ノードのパスワード設定方法

・ サーバーのプロパティのセキュリティ タブで設定します。

① MQTT in/outのいずれかをダブルクリックし、プロパティ設定画面を開きます。
② サーバーの横の鉛筆マークをクリックします。

③ セキュリティのタブをクリックします。

④ ユーザ名を入力します。
⑤ パスワードを入力します。
⑥ 入力し終わったら、「更新」を押します。

⑦ 「完了」を押します。
⑧ 「デプロイ」を押します。

3-2. Aedes MQTT brokerノードのパスワード設定方法

・ 同様にサーバーのプロパティのセキュリティ タブで設定します。

① Aedes MQTT brokerノードをダブルクリックし、プロパティ設定画面を開きます。
② Securityタブを選択します。

③ ユーザ名を入力します。
④ パスワードを入力します。
⑤ 入力し終わったら、「更新」を押します。

⑥ 「デプロイ」を押します。

3-3. 通信動作確認

① Injectノードのボタンを押し、“Hello world!!”をパブリッシングします。
② サブスクライブされて、“Hello world!!”がデバッグ画面に表示されます。

3-4. 通信動作実験:ユーザ名をわざと変える

・ 認証の有効性を確認するために、brokerのユーザー名を変更して動作を確認します。

① Aedes MQTT brokerノードのユーザ名を”Test-User-01”から”Test-User-02”に変えてデプロイします。

② MQTT in/outノードともに、接続中になったままで、接続済にならず、通信ができません。
  認証が有効であることが確認できました。