メインコンテンツまでスキップ

MQTT ノード

ゲートウェイは、自前の HiveMQ ブローカーを同一マシン上で起動しています(デフォルトポート 1883、TLS 1884)。外部 SCADA / クラウド IoT と接続する際の標準パターンです。

2026.05+ ボックスの broker 接続情報
  • Broker URL: tcp://127.0.0.1:1883 (plain) / ssl://127.0.0.1:1884 (TLS)
  • Username / Password: app.properties の mqtt.server.user / mqtt.server.password — 量産ボックスはボックスごとにランダム(/etc/kopens/credentials.txt で確認)。entrypoint が HiveMQ auth.properties を自動同期します。
  • MQTT 5 対応 (HiveMQ 2025.4): retained / will / session expiry / shared subscriptions のフル機能をサポート。
  • Sparkplug B とブローカーを共有 — spBv1.0/# を同時に購読してモニタリングが可能。

1. ノードの種類​

ノード用途
mqtt inトピックを購読 — メッセージが届くたびにフローが開始される
mqtt outメッセージを発行 (publish)

2. Broker(サーバー)設定 — 一度作成すればすべてのノードで共有​

mqtt in または mqtt out ノードをダブルクリック → Server 欄の右側にある鉛筆アイコン → 新しいブローカー設定。

タブ項目推奨値
ConnectionServer127.0.0.1 (ゲートウェイ自前の HiveMQ) または外部ブローカー IP
Port1883 (TLS の場合は 8883)
Client ID空欄の場合は自動生成。運用環境では固定 ID を推奨 (edge-<gateway-id>-flow1 など)
Keep alive60 秒を推奨
Use TLS外部クラウド接続時に ON
SecurityUsername/Passwordブローカー認証を使用する場合
MessagesLWT (Last Will)edge/<id>/status トピック + ペイロード offline — ゲートウェイが突然停止した際に自動通知
MessagesBirth接続時に edge/<id>/status へ online を retain 発行

3. 発行(mqtt out) — シナリオ: すべてのタグ値をクラウドへ​

inject (1s) ──▶ 태그값 읽기 ──▶ change (topic 만들기) ──▶ mqtt out

change ノード:

動作PropertyTo
Setmsg.topicplant/${msg.payload.tag_id}/value (J-Expression ${...} または mustache)
Setmsg.payload{ "ts": $millis(), "v": msg.payload.value, "q": msg.payload.value_read_status } (JSONata)

mqtt out ノード設定:

項目値
Topic(空欄 → msg.topic を使用)
QoS1 (最低1回は到達を保証) — 通常のテレメトリは 0 でも OK
Retainfalse (リアルタイム値) — 状態性 データであれば true

4. 購読(mqtt in) — シナリオ: 外部から届いた命令でタグに書き込み​

mqtt in (plant/+/cmd) ──▶ change (tag_id/value 추출) ──▶ 태그값 쓰기

mqtt in:

項目値
Topicplant/+/cmd (ワイルドカード + = 1段階)
QoS1
Outputparsed JSON object — ペイロードが自動的にオブジェクト化されます

change:

動作PropertyTo
Setmsg.tag_idmsg.topic.split('/')[1] (JSONata)
Movemsg.payload.value → msg.payload(そのまま書き込みノードへ投入)

これにより、外部 SCADA が plant/TAG_VALVE_01/cmd トピックに {"value":"1"} だけを publish すれば、ゲートウェイが PLC にその値を書き込みます。


5. よくある落とし穴​

症状原因 / 解決策
メッセージが一度も届かないトピックワイルドカード(#/+)のタイポ。MQTT Explorer などの別ツールでトピックツリーを確認
クライアントが頻繁に切断されるClient ID の衝突(他のクライアントが同じ ID で接続) — 固有 ID を付与
Retain メッセージが無限に蓄積される同じトピックに毎回 retain true を publish。retain は状態性 (online/offline, 最終アラーム) にのみ使用
メッセージの順序がおかしいQoS 0 の限界。順序が重要な場合は QoS 1 以上を使用

6. 次のステップ​