フロー (Node-RED) — はじめに
/ui/flow メニューから、ゲートウェイに内蔵された Node-RED 環境にアクセスできます。
Node-RED は、ブロック(ノード)をドラッグ&ドロップで接続してデータの流れを作るローコードツールです。ゲートウェイのタグ値を読み書きし、MQTT/HTTP で外部システムと連携し、アラーム・ロギング・演算といった自動化を描くことができます。
Node-RED 4.1.10 + Node.js 20 (いずれも image 内に global インストール)。コンテナの初回起動時に userDir.seed
(image-baked の既定 flows + node_modules + plantpulse-edge / node-red-contrib-opcua ノード) が
/data1/pp-data/node-userdir/ へ自動コピーされます (2 回目以降の起動ではユーザー flow を保持)。
image upgrade 後もユーザー flow はそのまま維持されます。
PlantPulse 専用ノード (pp-tag-value-read / pp-tag-value-write / pp-opc-* / pp-tag-list)
は image の node/conf/plantpulse-edge-nodes/ を絶対パスの symlink で接続 — entrypoint が毎回の
起動で保証します (relative path だった旧 native の symlink がコンテナでは壊れる問題を事前に回避)。
자주 하는 작업 → 새 PLC 연결 추가 / 태그 등록 まで完了し、1 つ以上のタグがリアルタイムで収集されている状態から始めてください。Node-RED はそのタグ値を入力として使用します。
1. アクセス
ブラウザでゲートウェイに接続した後、左メニューの フロー (Node-RED) を選択するか、直接 http://<gateway>/ui/flow に移動します。
2. 画面構成
| 領域 | 説明 |
|---|---|
| 左側 パレット | 使用できるノードの一覧。カテゴリ別に並びます。엣지 カテゴリにゲートウェイ専用ノードが含まれます。 |
| 中央 ワークスペース | ノードをドラッグして配置し、ワイヤで接続します。タブ(複数フロー)単位で分けられます。 |
| 右側 サイドバー | info タブで選択したノードのヘルプ、debug タブで debug ノードの出力ログを確認できます。 |
| 右上 Deploy | 変更を実際に動作させるには、必ず Deploy ボタンを押す必要があります。 |
3. 基本操作 — 覚えておくと便利なショートカット
| 操作 | 方法 |
|---|---|
| ノード追加 | パレットからワークスペースへドラッグ |
| ノード設定 | ノードをダブルクリック → 右パネルで編集 → Done |
| ノード接続(ワイヤ) | ノードの出力点(右側)をドラッグして、別のノードの入力点(左側)に置く |
| ワイヤの切断 | ワイヤをクリックして選択後 Delete |
| 複数選択 | Shift ドラッグで範囲選択、または Ctrl/Cmd + 클릭 で追加選択 |
| コピー / 貼り付け | Ctrl/Cmd + C / Ctrl/Cmd + V |
| 検索 | Ctrl/Cmd + F — パレットでノード名を検索 |
| フローのインポート | メニュー → インポート → JSON を貼り付け (本ドキュメントの例をそのまま import 可能) |
ノードを追加/削除/変更しても、Deploy を押すまでゲートウェイはその変更を認識しません。赤い点 (●) が表示されたノードは「未保存の変更あり」を意味します。
4. メッセージ(msg)の基本構造
ノード間を流れるデータは、常に msg という JavaScript オブジェクトです。最もよく使うフィールド:
| フィールド | 意味 |
|---|---|
msg.payload | 本文(主なデータ)。数値/文字列/オブジェクト/バッファのいずれも可 |
msg.topic | トピック(分類ラベル)。MQTT/Switch/Join などでよく使用 |
msg.timestamp | タイムスタンプ (必要なときに自分で設定) |
msg._msgid | Node-RED が自動的に付与する一意の ID — トレース用 |
ほとんどのノードは msg.payload だけで動作します。
5. Edge ノード — ひと目で (ゲートウェイ専用)
パレット左側の 엣지 カテゴリに、ゲートウェイが独自登録した 2 つのノードがあります。ほぼすべての IIoT フローの 入力/出力 となります。
| アイコン | ノード | 英語名 | 動作 | 呼び出す REST |
|---|---|---|---|---|
| ⬇ | タグ値読み取り (pp-tag-read) | read tag value | 1 つのタグの 現在値 を取得 (キャッシュまたは PLC の直接 read) | GET /api/v1/tag/{tagId}/value |
| ⬆ | タグ値書き込み (pp-tag-write) | write tag value | 1 つのタグへ 値を書き込む (PLC に即時反映) | POST /api/v1/tag/{tagId}/value |
inject (1s) ──▶ 태그값 읽기 ──▶ 처리 (function/switch/...) ──▶ 태그값 쓰기 / mqtt out / debug / file ...
ノードの探し方 — パレットの検索欄に read tag または 엣지 を入力 → この 2 つのノードのみが絞り込まれます。淡いパステルブルーの色です。
| ノード設定でよく空欄にする項目 | 動的に設定する方法 |
|---|---|
| Tag ID | フロー中に msg.tagId = 'TAG_...' で動的に指定 (1 つのノードを複数タグで再利用) |
| Value (書き込みノード) | msg.value または msg.payload でフロー中に設定 |
実設備に直接書き込みを適用する前に、外部シミュレータまたは テストタグ で十分に検証してください。write 権限は運用チームと合意したタグにのみ与えます。
詳細なフィールド / 入出力 / 全プロトコル対応表 → Edge カテゴリ (タグ読み取り/書き込み)
6. 最初のフロー — Hello World
目標: 5 秒ごとに 1 つのタグを読み取り、Debug サイドバーに出力する。
- パレットから
injectノードをドラッグ → ダブルクリック →Repeat: intervalevery 5 seconds→ Done 엣지→태그값 읽기ノードをドラッグ → Tag ID に実際のタグ (例:TAG_TEST_00042) を入力 → Done- パレットから
debugノードをドラッグ - 3 つのノードを
inject → 태그값 읽기 → debugの順にワイヤで接続 - 右上の Deploy をクリック
- 右サイドバーの debug タブを開き、5 秒ごとに値が出力されるか確認
このパターン(周期トリガー → 読み取り → 処理)が、すべての IIoT フローの基本形です。
7. 次のステップ
左メニューの順に:
- 基本ノードの使い方 — IIoT でよく使う 14 個のノードの機能
- Edge ノード (タグ読み取り/書き込み) — ゲートウェイ専用ノード (上記 5 節「ひと目で」の詳細版)
- MQTT ノード詳細 — Broker 設定 / Pub / Sub / LWT / Birth
- OPC-UA ノード詳細 — Endpoint / Item / Client / Subscribe / Browse
- Sparkplug B ノード詳細 — Group / Edge / Birth-Death / 送受信
- IIoT 例集 — 現場でよく作る 12 のパターン
- トラブルシューティング — よく陥る落とし穴
8. さらに詳しく
- OPC-UA ノードビューア (
/ui/opcua) で、現在ゲートウェイが保持しているすべてのタグ/値/ノード ID をひと目で確認。→ OPC-UA ノードビューアを使う - REST API そのものは
고급 / 통합 파트너용 → REST APIの章を参照。Node-RED のpp-tag-read/pp-tag-writeは、その API の薄いラッパーです。 - Node-RED 公式マニュアル:
<https://nodered.org/docs/>