使用 Node-RED 进行 MQTT 通信
最近更新:
介绍
MQTT 是一种轻量级发布/订阅消息协议,广泛用于物联网应用。设备将消息发布到 MQTT broker(消息代理)上的某个 topic(主题),其他客户端通过订阅该主题接收消息。
Node-RED 提供内置 MQTT 节点,可用于接收和处理物联网消息。本教程在 reComputer RK 系列设备上配置 Node-RED,订阅 HiveMQ 公共 MQTT broker 的主题,再从 RK 终端发布 JSON 消息,验证通信流程。
安全说明: 本例使用共享的 HiveMQ 公共 broker,通过 TCP
1883端口连接,不使用 TLS 或身份认证。请仅发送测试数据,不要发送密码、个人信息或生产数据。生产部署应使用启用身份认证和 TLS 的 broker。
准备工作
| 项目 | 要求 |
|---|---|
| 硬件 | reComputer RK 系列设备 |
| 操作系统 | Debian 系 ARM64 Linux |
| Node-RED | 已安装并运行,请先完成 Node-RED 入门 |
| 网络 | 能够通过互联网访问 HiveMQ 公共 MQTT broker |
| 访问方式 | 用于打开 Node-RED 的浏览器,以及 RK 设备终端或 SSH 连接 |
通信流程
reComputer RK Terminal
(mosquitto_pub)
|
| Publish JSON to topic: rk3588/seeed/demo
v
HiveMQ Public MQTT Broker
(broker.hivemq.com:1883)
|
| Subscribe to the same topic
v
Node-RED on reComputer RK
MQTT in --> Debug
|
v
Debug sidebar: received JSON object步骤 1:打开 Node-RED 编辑器
确认 RK 设备上的 Node-RED 服务正在运行:
sudo systemctl status nodered.service --no-pager如有需要,启动服务:
node-red-start如果命令持续显示服务日志,按 Ctrl+C 返回终端即可,Node-RED 仍会在后台运行。
查看设备的局域网 IP 地址:
hostname -I在同一网络中的电脑上打开 Node-RED 编辑器:
http://<RK_DEVICE_IP>:1880将 <RK_DEVICE_IP> 替换为设备的实际 IP 地址。如果安装时启用了编辑器身份认证,请先登录。
步骤 2:添加 MQTT 输入节点
- 打开 Flow 1,或新建一个流程。
- 在左侧节点面板中搜索 mqtt in,将紫色的 mqtt in 节点拖入工作区。
- 双击节点,打开 Edit mqtt in node。
- 点击 Server 旁的添加/编辑按钮,不同版本可能显示为 + 或铅笔图标,创建 MQTT broker 配置。
步骤 3:配置 HiveMQ Broker
在 MQTT broker 配置对话框中填写:
| 设置项 | 值 |
|---|---|
| Name | HiveMQ,可选显示名称 |
| Server | broker.hivemq.com |
| Port | 1883 |
| Protocol | MQTT V3.1.1 |
| Client ID | 留空,使用自动生成的 ID |
| TLS | 不启用 |
| Username / Password | 留空 |

其余选项保持默认。根据编辑器版本,点击 Add 或 Update 保存 broker 配置。
公共 broker 由多个用户共享,应选择不易与其他测试冲突的主题。本例使用
rk3588/seeed/demo。如果更换主题,请同时修改订阅配置和发布命令。
步骤 4:配置 MQTT 订阅
返回 Edit mqtt in node,按下表设置:
| 设置项 | 值 |
|---|---|
| Server | HiveMQ |
| Action | Subscribe to single topic |
| Topic | rk3588/seeed/demo |
| QoS | 0 |
| Output | auto-detect (parsed JSON object, string or buffer) |
| Name | SeeedStudio |

点击 Done 保存节点。
MQTT 主题区分大小写。Node-RED 中的订阅主题必须与命令行发布时使用的主题完全一致。如果改用自定义主题,也需要同步修改步骤 7 中的发布命令。
步骤 5:连接 Debug 并部署
- 在节点面板中搜索 debug,将绿色 debug 节点拖入工作区。
- 将 SeeedStudio(mqtt in)的输出端连接到 debug 节点的输入端。
- 打开 Debug 节点设置,保持输出为
msg.payload。 - 点击 Done,然后点击右上角的 Deploy。
- 打开 Debug messages 侧栏。
流程连接如下:
[SeeedStudio (mqtt in)] ----> [debug node]MQTT 连接建立后,mqtt in 节点下方应显示绿色的 connected 状态。
步骤 6:安装 MQTT 命令行客户端
在 reComputer RK 设备终端中安装 Mosquitto 命令行工具:
sudo apt update
sudo apt install -y mosquitto-clientsmosquitto_pub 用于向 broker 发送 MQTT 消息。Node-RED 已订阅相同主题,因此可以接收消息。
步骤 7:发布 JSON 测试消息
在 RK 终端中执行:
mosquitto_pub \
-h broker.hivemq.com \
-p 1883 \
-t "rk3588/seeed/demo" \
-m '{"device":"RK3588","temperature":25.6}'这条命令通过 HiveMQ 公共 broker,向 rk3588/seeed/demo 主题发布一条 JSON 消息。
如需查看更详细的命令行输出,可添加 -d 参数:
mosquitto_pub -d \
-h broker.hivemq.com \
-p 1883 \
-t "rk3588/seeed/demo" \
-m '{"device":"RK3588","temperature":25.6}'步骤 8:在 Node-RED 中验证接收结果
返回 Node-RED 编辑器,查看 Debug messages 侧栏。MQTT 输入节点应将收到的消息传递给 Debug 节点。
消息应包含以下数据:
{
"device": "RK3588",
"temperature": 25.6
}由于 MQTT 输入节点的 Output 已设为自动检测 JSON,Node-RED 可以将消息内容显示为解析后的 JavaScript 对象。侧栏还会显示主题 rk3588/seeed/demo。

接收到消息后,即可确认以下通信链路:
reComputer RK 终端 → HiveMQ 公共 broker → Node-RED MQTT in → Debug
小结
通过以上步骤,Node-RED 已连接 MQTT broker、订阅主题,并接收从 reComputer RK 设备终端发布的 JSON 消息,可作为 RK 平台上 MQTT 物联网应用的基础。
后续可扩展为传感器数据处理、使用 mqtt out 节点发布消息,或与其他工业协议和仪表盘集成。