reTerminal DM MQTTとNode-RED
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
reTerminal DM MQTTとNode-RED
MQTTについての簡単な情報
MQTTとNode-RED
MQTT(Message Queuing Telemetry Transport)は、マシン間通信(M2M)やモノのインターネット(IoT)の文脈でデバイス間の通信を可能にするために設計された軽量なメッセージングプロトコルです。MQTTは1999年にIBMによって開発され、その後オープンスタンダードとなりました。MQTTは、デバイス間で小さなデータパケットを送信するためのシンプルで効率的な方法として設計されています。このプロトコルは、パブリッシュ/サブスクライブ型のメッセージングパターンを使用しており、メッセージはブローカーに公開され、その後特定のトピックを購読しているすべてのサブスクライバーに配信されます。これにより、デバイスはお互いのIPアドレスやその他のネットワーク詳細を知らなくても通信が可能になります。
MQTTは、低帯域幅や高遅延ネットワークなど、不安定なネットワークで接続されているデバイスに特に有用です。これは、帯域幅の使用量が少なく、オーバーヘッドが低いためです。また、メッセージ配信の信頼性を異なるレベルで保証するQuality of Service(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アプリケーションを簡単かつ直感的に構築する方法を提供します。
MQTTノードをreTerminal DMで始める
MQTTノードはNode-REDに組み込まれているため、ノードをインストールする追加の手順なしで使用できます。ただし、トピックにメッセージを公開または購読するためには、MQTTブローカーが必要です。そのため、以下の手順では、reTerminal DMにローカルMQTTブローカーをインストールし、そのMQTTブローカーを利用してメッセージの送受信を行う方法を説明します。
前提条件
ハードウェア
- 1 x reTerminal DM
- 1 x ホストコンピュータ
ホストコンピュータは、以下のセットアップ手順を実行するためにreTerminal DMとインターネット接続が可能である必要があります。
ソフトウェア
- MQTTブローカー Eclipse Mosquitto
MQTTブローカー Eclipse Mosquitto のインストール
このセクションでは、Eclipse Mosquitto をインストールします。これは、IoTやM2Mアプリケーションで広く使用されているオープンソースのMQTTブローカーです。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
STEP 2: 以下のコマンドを実行してMosquittoをインストールします:
sudo apt-get install mosquitto
STEP 3: 以下のコマンドを実行してMosquittoクライアントツールをインストールします:
sudo apt-get install mosquitto-clients
STEP 4: インストールが完了したら、以下のコマンドを実行してMosquittoサービスを開始します:
sudo systemctl start mosquitto
STEP 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では、MQTT inとMQTT outがあり、それぞれ購読(Subscribe)と公開(Publish)を表します。

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

STEP 2: Modbus Server
とmqtt in
ノードを設定します
STEP 2-1: mqtt in
をダブルクリックしてノードエディタパネル
を開きます

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

鉛筆アイコン
をクリックすると、新しいmqtt-broker設定ノードを追加
する設定パネルが表示されます

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

現時点ではセキュリティ
とメッセージ
タブはそのままにしておいてください。
STEP 2-4: 購読するトピックを設定します。ここではtest-mqtt
を使用し、その他の設定はデフォルトのままにして完了
ボタンをクリックします。

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

まだmqttトピックの公開者を設定していないため、デバッグコンソール
にはメッセージが表示されません。
STEP 3: mqtt out
ノードを設定します
STEP 3-1: mqtt out
ノードをダブルクリックしてノードエディタパネル
を開きます

STEP 3-1: mqtt out
ノードを以下の画像のようにフローエディタ
パネルにドラッグしてください
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: メッセージボックスにthis is the message
と入力し、これをtest-mqtt
トピックに送信するメッセージとして設定します。その後、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を使用したさらなるノードの探索
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートを提供しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。