reTerminal DM MQTT with Node-RED
MQTTについての簡単な情報
MQTT & Node-RED
MQTT(Message Queuing Telemetry Transport)は、マシン・ツー・マシン(M2M)やモノのインターネット(IoT)環境でデバイス間の通信を可能にするために設計された軽量メッセージングプロトコルです。MQTTは1999年にIBMによって開発され、後にオープンスタンダードとなりました。MQTTは、デバイス間で小さなデータパケットを送信するシンプルで効率的な方法として設計されています。パブリッシュ/サブスクライブメッセージングパターンを使用し、メッセージがブローカーに公開され、特定のトピックにサブスクライブしたすべてのサブスクライバーに配信されます。これにより、デバイスは互いのIPアドレスやその他のネットワーク詳細を知ることなく、相互に通信することができます。MQTTは、低帯域幅や高遅延ネットワークなどの信頼性の低いネットワークでデバイスが接続されている状況で特に有用です。これは、少ない帯域幅を使用し、オーバーヘッドが低いためです。また、メッセージ配信の異なる信頼性レベルを可能にするサービス品質(QoS)レベルもサポートしています。MQTTは、そのシンプルさと効率性により、IoTおよびM2Mアプリケーションで人気の選択肢となっており、幅広いデバイスとプラットフォームでサポートされています。
MQTTブローカーは、MQTTベースのIoTまたはM2Mネットワーク内のデバイス間でのMQTTメッセージ交換の中心点として機能するサーバーです。デバイスによって公開されたメッセージを受信し、同じトピックにサブスクライブした他のデバイスに配信します。
MQTTは、Node-REDがサポートする多くのプロトコルの1つであり、MQTTベースのIoTアプリケーションを構築するための優れたツールとなっています。Node-REDはMQTT用の組み込みノードを提供し、ユーザーがMQTTブローカーに接続してメッセージを公開またはサブスクライブできるようにします。MQTTノードは、Node-REDインターフェースを使用して簡単に設定でき、ユーザーはブローカーアドレス、ポート、クライアントID、ユーザー名、パスワードを指定できます。ノードはまた、信頼性のあるメッセージ配信を確保するために設定できるMQTT QoSレベルもサポートしています。Node-REDでは、ユーザーは受信MQTTメッセージを処理し、メッセージペイロードに基づいてさまざまなアクションを実行するフローを作成できます。例えば、フローは温度センサーのMQTTトピックにサブスクライブし、温度値を解析し、温度が特定の閾値を超えた場合にアラートを送信することができます。Node-REDはまた、HTTPエンドポイント、データベース、クラウドサービスなど、他のIoTサービスやデバイスとの統合のためのさまざまなノードを提供します。これにより、ユーザーは幅広いデバイスやサービスと通信できる複雑なIoTアプリケーションを簡単に構築できます。
全体的に、Node-REDは、組み込みMQTTノードと他のIoTサービスおよびデバイスのサポートにより、MQTTベースのIoTアプリケーションを構築するためのシンプルで直感的な方法を提供します。
reTerminal DMでMQTTノードを始める
MQTTノードはNode-REDに組み込まれているため、ノードをインストールする追加の手順なしでMQTTノードを使用できます。ただし、トピックにメッセージを発行または購読するためにはmqttブローカーが必要です。そのため、以下の手順では、reTerminal DMにローカルMQTTブローカーをインストールし、メッセージの送受信にMQTTブローカーを活用する方法を説明します。
前提条件
ハードウェア
- 1 x reTerminal DM
- 1 x ホストコンピュータ
ホストコンピュータは、以下のセットアップ手順を実行するために、reTerminal DMへのインターネット接続が可能である必要があります。
ソフトウェア
- MQTTブローカー Eclipse Mosquitto
MQTTブローカー Eclipse Mosquitto のインストール
このセクションでは、IoTおよびM2Mアプリケーションで広く使用されているオープンソースのMQTTブローカーであるEclipse Mosquittoをインストールします。これはEclipse Foundationによって開発され、Eclipse Public Licenseの下で利用可能です。Mosquittoは軽量で効率的に設計されており、低電力デバイスや限られたネットワーク帯域幅の環境での使用に適しています。最新のMQTT 5.0プロトコルと、MQTT 3.1.1などの以前のバージョンをサポートしています。
まず最初に、SSH経由でreTerminal DMにアクセスする知識を復習してください。手順はこちらで確認できます。
SSHでreTerminal DMにアクセスできたら、以下の手順に進むことができます:
STEP 1: 以下のコマンドを実行してパッケージリストを更新します:
sudo apt-get update
ステップ2:以下のコマンドを実行してMosquittoをインストールします:
sudo apt-get install mosquitto
STEP 3: Install the Mosquitto client tools by running the following command:
sudo apt-get install mosquitto-clients
ステップ4:インストールが完了したら、以下のコマンドを実行してMosquittoサービスを開始できます:
sudo systemctl start mosquitto
ステップ5:Mosquittoが実行されているかどうかを確認するには、以下のコマンドを実行します:
sudo systemctl status mosquitto
デフォルトでは、MosquittoはMQTTトラフィック用にポート1883
でリッスンするように設定されています。Mosquittoクライアントツールを使用してトピックを購読することで、インストールをテストできます:
新しいSSHセッションを開き、以下のコマンドを実行してトピックを購読します:
mosquitto_sub -h localhost -t test
別のSSHセッションで、以下のコマンドを実行して同じトピックにメッセージを発行します:
mosquitto_pub -h localhost -t test -m "Hello, world!"
最初のSSHセッションウィンドウでmosquitto_subコマンドを実行した場所に「Hello, world!」というメッセージが表示されるはずです。
これで完了です!reTerminal DMにMosquittoを正常にインストールし、Mosquittoクライアントツールを使用してテストしました。次に、Node-REDを使用したMQTT通信の方法について詳しく見ていきましょう。
reTerminal DMでのMQTTノード
Node-REDには、それぞれSubscribeとPublishを表すMQTT inとMQTT outがあります。

フローの編集
以下の手順はチュートリアル目的のためのものです。mqtt-inを使用して、mqtt outが同じトピックに公開したメッセージからメッセージを購読します。
STEP 1: mqtt in
をFlow Editor
パネルにドラッグします

STEP 2: Modbus Server
とmqtt in
ノードを設定します
STEP 2-1: mqtt in
をダブルクリックしてNode editor panel
を開きます

STEP 2-2: サーバー設定オプションの鉛筆
アイコンをクリックします

鉛筆
アイコンをクリックすると、Add new mqtt-broker config node
設定パネルが表示されます

STEP 2-3: Connection
タブで以下のフィールドを適切に設定してください

現在のところ、Security
とMessages
タブはそのままにしておくことができます。
STEP 2-4: 購読するトピックを設定します。ここではtest-mqtt
を使用し、その他はすべてデフォルトのままにして、Done
ボタンをクリックします。

STEP 2-5: 以下の手順ではdebug
ノードを紹介します。この場合、mqtt in
から購読したトピック出力を表示およびデバッグするために使用されます。下の画像に示すとおりです
STEP 2-5-1: debug
ノードをFlow Editor
パネルにドラッグしてください
STEP 2-5-2: debug
ノードをmqtt in
ノードに接続します
STEP 2-5-3: Option and Config panel
の小さなバグボタン
をクリックして、Option and Config panel
でdebug console
を開きます
STEP 2-5-4: Deploy
ボタンをクリックしてフローをデプロイします

まだmqttトピックパブリッシャーを設定していないため、debug console
にはメッセージが表示されません
STEP 3: mqtt out
ノードを設定します
STEP 3-1: mqtt out
ノードをダブルクリックしてNode editor panel
を開きます

STEP 3-1: 下の画像に示すように、mqtt out
ノードをFlow Editor
パネルにドラッグしてください
STEP 3-1-1: STEP 2-3:
で設定したのと同じサーバー(localhost:1883
)を選択する必要があります
STEP 3-1-2: STEP 2-4:
のトピック設定と同じトピック名(test-mqtt
)を設定する必要があります。
STEP 3-1-3: 同様に、QoSはmqtt in
設定と同じ2
に合わせる必要があります
STEP 3-1-4: Done
をクリックして設定を完了します

STEP 4: inject
ノードを設定します
STEP 4-1: inject
ノードをFlow Editor
パネルにドラッグします

STEP 4-2: inject
ノードをダブルクリックしてNode editor panel
を開くと、inject
ノードのデフォルト設定が表示されます
STEP 4-2-1: msg.topic行のx
をクリックして削除します
STEP 4-2-2: msg.payload
行のtimestamp
オプションをクリックしてドロップダウンリストを開きます

STEP 4-2-3: ドロップダウンリストでstring
オプションを選択します

STEP 4-2-4: メッセージボックスにtest-mqtt
トピックに送信するメッセージとしてthis is the message
と入力し、Done
をクリックします

STEP 4-2-5: inject
ノードをmqtt out
ノードに接続し、Deploy
をクリックします

最終結果
おめでとうございます!reTerminal DMとNode-REDでMQTTプロトコルを使用する方法を正常に体験し、学習しました。最終結果は下の画像に示すようになるはずです

以下のJSONコードをコピーしてノードをインポートできます
[
{
"id": "8d317d539464f080",
"type": "tab",
"label": "MQTT",
"disabled": false,
"info": "",
"env": []
},
{
"id": "128fa85f993944d6",
"type": "mqtt in",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"datatype": "auto-detect",
"broker": "b6a7c986cb61ea54",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 300,
"y": 220,
"wires": [
[
"a022e0bf3404fdd9"
]
]
},
{
"id": "a022e0bf3404fdd9",
"type": "debug",
"z": "8d317d539464f080",
"name": "debug 2",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 500,
"y": 220,
"wires": []
},
{
"id": "9d0098383c96ee8b",
"type": "mqtt out",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "b6a7c986cb61ea54",
"x": 520,
"y": 320,
"wires": []
},
{
"id": "3c967b7d5cc112fc",
"type": "inject",
"z": "8d317d539464f080",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "3",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "this is the message",
"payloadType": "str",
"x": 340,
"y": 320,
"wires": [
[
"9d0098383c96ee8b"
]
]
},
{
"id": "b6a7c986cb61ea54",
"type": "mqtt-broker",
"name": "",
"broker": "localhost",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]
reTerminal DM で node-RED を使用してより多くのノードを探索する
技術サポートと製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを用意しています。