[Node-RED]第2章:VPSのNode-REDプログラミング

続いて、Node-REDの設定を進めていきます。

目的:PLC や Raspberry Pi からのデータをクラウドVPSで受信・可視化した

Step 1:VPSのNode-REDに MQTT ブローカを導入

Raspberry PiやPLCからMQTTでデータを送信

Mosquittoインストール(VPS上で実行):

sudo apt update
sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto

ファイアウォール許可:MQTTは1883を使用する
sudo ufw allow 1883/tcp

mosquitto.confに以下の記述を追記しておかないと接続状態にならないので注意

以下のファイルを開く

sudo nano /etc/mosquitto/mosquitto.conf

以下を追記して、Ctrl+o , Ctrl + x

listener 1883
allow_anonymous true

mosquittoの再起動

sudo systemctl restart mosquitto

ーーーーーーーーーーーーーーーーーーーーーーーここから補足ーーーーーーーーーーーーーー

✅ Mosquitto(MQTTブローカ)の役割

一言でいうと:

「センサやPLCなどから送られたデータを受け取り、それを必要な相手に配信する」メッセンジャー

MQTTの構成図とMosquittoの位置づけ

[センサ/PLC] ←→ [Mosquitto(ブローカ)] ←→ [Node-RED]
↑ ↓
Raspberry Pi ブラウザやスマホの画面表示

✅ なぜMosquittoが必要なのか?

役割説明
📡 データ受信の中心(ハブ)複数の送信元(ラズパイ、PLCなど)からのデータをまとめて受け取る
🔁 Pub/Sub通信の制御「publish(送信)」と「subscribe(購読)」の仕組みを中継
🧩 Node-REDなどと連携Node-REDのmqtt inノードでデータをリアルタイムに受け取れる
🔐 セキュア通信にも対応認証(ユーザー名/パスワード)やTLS(HTTPS相当)での暗号化も可能
軽量で高速IoT向けに非常に最適化されたプロトコルなので、ラズパイでも動作可

✅ MQTT通信のイメージ(Pub/Subモデル)

操作具体例
ラズパイが「温度28.5°C」を factory/temp トピックで publishmosquitto_pub や Pythonなど
Node-REDが factory/temp トピックを subscribemqtt in ノードで受信してグラフ化

✅ 具体的にNode-REDでどう使う?

1. mqtt in ノードを設置

→ トピック例:factory/temp

2. サーバ設定:

  • サーバ:localhost(VPS内にMosquittoを立てるなら)
  • ポート:1883
  • 認証なしでOK(初期)

3. debugui_chartにつなげる

→ データをリアルタイム表示

✅ まとめ:Mosquittoを導入すべき理由

理由内容
💡 通信のハブになるラズパイやPLCからのデータを集約してNode-REDへ
💬 IoT通信の標準的手段MQTTは軽量かつ多くの機器でサポートされている
🔄 Node-REDと直結できるmqtt in/out ノードで簡単連携
🔐 将来的にセキュリティ強化も可能パスワード認証やTLS対応も可能

ーーーーーーーーーーーーーーーーーーーーーーーここまで補足ーーーーーーーーーーーーーー

Step 2:VPSのNode-REDで MQTT受信 → 可視化

準備:Node-REDのUI(エディタ)にアクセス

ブラウザから以下にアクセスしてください:
http://<VPSのIPアドレス>:1880

✅ MQTT入力ノードの設定

左側のノードパレットから mqtt in をドラッグ

ダブルクリックで設定画面を開く

Server: localhost:1883

Topic: factory/temp(任意、外部送信側と合わせる)

QoS: 0(標準でOK)

※サーバの設定は初回なら「新規追加」で以下を設定:

項目
サーバlocalhost(または 127.0.0.1
ポート1883
クライアントID空欄でOK
認証無効(未設定でOK)

✅ 可視化(ダッシュボード)

1. ui_gauge または ui_chart を使用

 node-red-dashboard インストール

cd ~/.node-red
npm install node-red-dashboard

再起動:
node-red-stop
node-red-start

例フロー構成:
[mqtt in (factory/temp)] → [json] → [ui_gauge]

json ノードは文字列データ({"value":28.5})をオブジェクト化します
ui_gauge ノードの「値」には msg.payload.value を指定

ダッシュボード確認:

ブラウザでアクセス:

http://<VPSのIPアドレス>:1880/ui

ここまででVPS側のNode-REDの設定は完了です。

次回はRaspberry Pi側の設定を行っていきます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする