MQTT 节点
网关会在同一台机器上运行自己的 HiveMQ 代理(默认端口 1883,TLS 1884)。连接外部 SCADA / 云 IoT 时的标准模式。
2026.05+ 版本盒子的 broker 连接信息
- Broker URL:
tcp://127.0.0.1:1883(明文) /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 共享同一 broker —— 可以同时订阅
spBv1.0/#进行监控。
1. 节点类型
| 节点 | 用途 |
|---|---|
mqtt in | 订阅 主题 —— 每次消息到达时触发流程 |
mqtt out | 发布 (publish) 消息 |
2. Broker(服务器)设置 —— 一次创建,所有节点共享
双击 mqtt in 或 mqtt out 节点 → Server 字段右侧的铅笔图标 → 新建 broker 设置。
| 选项卡 | 项目 | 推荐值 |
|---|---|---|
| 连接 | Server | 127.0.0.1 (网关自身的 HiveMQ) 或外部代理 IP |
| Port | 1883 (TLS 时使用 8883) | |
| Client ID | 留空则自动生成。生产环境中推荐使用 固定 ID (如 edge-<gateway-id>-flow1 等) | |
| Keep alive | 推荐 60 秒 | |
| Use TLS | 连接外部云时开启 | |
| 安全 | Username/Password | 使用代理认证时填写 |
| 消息 | LWT(遗嘱) | edge/<id>/status 主题 + 负载 offline —— 网关意外终止时自动通知 |
| 消息 | Birth | 连接成功时在 edge/<id>/status 上以 retain 方式发布 online |
3. 发布(mqtt out)—— 场景:将所有标签值上传至云端
inject (1s) ──▶ 태그값 읽기 ──▶ change (topic 만들기) ──▶ mqtt out
change 节点:
| 操作 | 属性 | 指向 |
|---|---|---|
| 设置 | msg.topic | plant/${msg.payload.tag_id}/value(J-Expression ${...} 或 mustache) |
| 设置 | msg.payload | { "ts": $millis(), "v": msg.payload.value, "q": msg.payload.value_read_status } (JSONata) |
mqtt out 节点设置:
| 项目 | 值 |
|---|---|
| 主题 | (留空 → 使用 msg.topic) |
| QoS | 1(确保至少送达一次)—— 普通遥测数据设为 0 也可以 |
| 保留 | false(实时值)—— 对于 状态性 数据设为 true |
4. 订阅(mqtt in)—— 场景:通过外部命令写入标签
mqtt in (plant/+/cmd) ──▶ change (tag_id/value 추출) ──▶ 태그값 쓰기
mqtt in:
| 项目 | 值 |
|---|---|
| 主题 | plant/+/cmd(通配符 + = 单层级) |
| QoS | 1 |
| 输出 | parsed JSON object —— 负载自动对象化 |
change:
| 操作 | 属性 | 指向 |
|---|---|---|
| 设置 | msg.tag_id | msg.topic.split('/')[1] (JSONata) |
| 移动 | msg.payload.value → msg.payload | (直接放入写入节点) |
这样,外部 SCADA 只需向 plant/TAG_VALVE_01/cmd 主题发布 ({"value":"1"}),网关便会将该值写入 PLC。
5. 常见陷阱
| 症状 | 原因/解决方法 |
|---|---|
| 消息从未收到 | 主题通配符(#/+)拼写错误。使用 MQTT Explorer 等独立工具确认主题树 |
| 客户端频繁断开 | Client ID 冲突(其他客户端使用了相同 ID)—— 分配唯一 ID |
| 保留消息无限累积 | 对同一主题每次都保留发布 true。保留应该仅用于 状态性 信息 (在线/离线,最后报警) |
| 消息顺序异常 | QoS 0 的限制。若需保证顺序,请使用 QoS 1+ |
6. 下一步
- OPC-UA 节点详解 —— 与外部 OPC-UA 服务器通信
- Sparkplug B 节点详解 —— 自动处理 Sparkplug 规范
- IIoT 示例集