Skip to main content

reTerminal DM MQTT with Node-RED

MQTTについての簡単な情報

pir


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 ホストコンピュータ
note

ホストコンピュータは、以下のセットアップ手順を実行するために、reTerminal DMへのインターネット接続が可能である必要があります。

ソフトウェア

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があります。

フローの編集

note

以下の手順はチュートリアル目的のためのものです。mqtt-inを使用して、mqtt outが同じトピックに公開したメッセージからメッセージを購読します。

STEP 1: mqtt inFlow Editorパネルにドラッグします

STEP 2: Modbus Servermqtt inノードを設定します

STEP 2-1: mqtt inをダブルクリックしてNode editor panelを開きます

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

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

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

note

現在のところ、SecurityMessagesタブはそのままにしておくことができます。

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 paneldebug consoleを開きます

STEP 2-5-4: Deployボタンをクリックしてフローをデプロイします

note

まだ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 を使用してより多くのノードを探索する

技術サポートと製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを用意しています。

Loading Comments...