跳到主要内容

MQTT 通信设置

本指南介绍如何使用 Node-RED 配置 OV20i 摄像头与外部设备之间的 MQTT 通信。MQTT 提供轻量级、可靠的消息传递,适用于 IoT 应用与远程设备通信。

何时使用 MQTT 通信: IoT 设备集成、远程监控系统、发布/订阅(publish/subscribe)消息模式、低带宽环境、分布式传感网络,或在需要可靠消息传递且支持自动重连时。

先决条件

  • OV20i 摄像头系统已设置并连接
  • 摄像头与 MQTT broker 之间的网络连通性
  • MQTT broker 可用(本地或云端)
  • 对 MQTT 概念(topics、publish/subscribe)有基本理解
  • 摄像头上已配置活动配方

MQTT 通信概览

MQTT 关键概念:

  • Broker(代理服务器):在客户端之间路由消息的集中服务器
  • Topics(主题):消息类别(例如 "camera/status"、"commands/trigger")
  • Publish:向主题发送消息
  • Subscribe:从主题接收消息
  • QoS:服务质量等级(0、1、2)

步骤 1:验证网络配置

1.1 检查摄像头网络设置

  1. 进入 系统设置
  2. 记下 摄像头 IP 地址(例如 192.168.0.100)
  3. 验证到 MQTT broker 的网络连通性

1.2 MQTT Broker 要求

确保 MQTT broker 的可访问性:

  • 同一网络: 摄像头必须能够访问 broker 的 IP 地址
  • 端口访问: 默认 MQTT 端口 1883(TLS 时为 8883)
  • 身份验证: 如 broker 要求,请提供用户名/密码
  • 防火墙: 允许所需端口的 MQTT 流量

1.3 网络需求

组件IP 地址端口备注
摄像头192.168.0.100N/A必须到达 broker
MQTT Broker192.168.0.2001883标准 MQTT 端口
客户端设备192.168.0.xxx变量任何订阅设备

步骤 2:访问 Node-RED 编辑器

2.1 导航至 IO 块

  1. 在 配方编辑器 中打开您当前的活动配方
  2. 在面包屑导航中单击 "IO Block"
  3. 单击 "Configure IO" 进入 Node-RED 编辑器

2.2 验证 MQTT 节点可用

在 Node-RED 调色板中检查 MQTT 节点:

  • mqtt in - 订阅 MQTT 主题
  • mqtt out - 发布到 MQTT 主题

检查点(Checkpoint): 应在左侧面板的 Network(网络)分类中看到 MQTT 节点。

步骤 3:配置 MQTT Broker 连接

3.1 添加 MQTT Broker 配置

  1. 将 "mqtt in" 节点拖放到画布上(用于初始设置)
  2. 双击该节点以打开配置
  3. 单击 Server 字段旁的铅笔图标
  4. 单击 "Add new mqtt-broker"

3.2 配置代理设置

基础代理配置:

设置项取值说明
名称Camera MQTT Broker描述性标识符
服务器192.168.0.200MQTT broker IP 地址
端口1883标准 MQTT 端口
协议MQTT V3.1.1建议版本
Client ID(自动生成)为空时自动生成

3.3 身份验证设置(如需)

如 broker 需要身份验证:

设置项说明
UsernameMQTT broker 用户名
PasswordMQTT broker 密码
Use TLS启用以实现安全连接(端口 8883)

3.4 高级设置

连接选项:

SettingRecommended ValueDescription
Keep Alive60 secondsHeartbeat interval
Clean SessionTrueStart fresh each connection
Auto ConnectTrueReconnect automatically

3.5 保存 Broker 配置

  1. Click "Add" to save broker settings
  2. Click "Done" to close node configuration
  3. Broker configuration is now available for all MQTT nodes

第 4 步:配置 MQTT Input (Subscribe)

4.1 设置 MQTT In 节点

  1. Select the "mqtt in" node you added
  2. Double-click to configure
  3. Configure subscription settings:

4.2 MQTT In 配置

订阅设置:

SettingExample ValueDescription
ServerCamera MQTT BrokerSelect configured broker
Topiccamera/commandsTopic to subscribe to
QoS0Message delivery quality
Outputauto-detectMessage format
NameCommand ListenerNode identifier

4.3 主题命名规范

Recommended topic structure:

PurposeTopic ExampleUsage
Commandscamera/commandsReceive control commands
Status requestscamera/status/requestStatus information requests
Configurationcamera/configConfiguration changes

4.4 配置消息处理

  1. Add "debug" node to monitor incoming messages
  2. Connect: MQTT In → Debug
  3. Configure debug node to show complete message

第 5 步:配置 MQTT Output (Publish)

5.1 添加 MQTT Out 节点

  1. Drag "mqtt out" node onto canvas
  2. Double-click to configure
  3. Select same broker configuration

5.2 MQTT Out 配置

Publishing Settings:

SettingExample ValueDescription
ServerCamera MQTT BrokerSame broker as input
Topiccamera/responsesTopic for camera responses
QoS0Message delivery quality
RetainFalseDon't store last message
NameResponse PublisherNode identifier

5.3 响应主题结构

Recommended response topics:

Response TypeTopic ExampleUsage
Status updatescamera/statusCamera status information
Resultscamera/resultsInspection results
Acknowledgmentscamera/ackCommand confirmations

第 6 步:创建基本通信流

6.1 构建出站消息流

Create a flow to publish messages from the camera:

  1. Add "inject" node for triggering messages
  2. Add "function" node for message formatting
  3. Add "mqtt out" node for publishing
  4. Connect: Inject → Function → MQTT Out

6.2 构建入站消息流

Create a separate flow to receive messages:

  1. Add "mqtt in" node for subscribing
  2. Add "debug" node for monitoring
  3. Connect: MQTT In → Debug

6.3 配置 Inject 节点

  1. Double-click inject node
  2. Configure settings:
    • Name: "Send Test Message"
    • Payload: Timestamp
    • Topic: (leave empty)
  3. Click "Done"

6.4 配置 Function Node

简单消息格式化:

// Format outgoing message
msg.topic = "camera/status";
msg.payload = "Camera online - " + new Date().toISOString();
return msg;

  1. 双击函数节点
  2. 将上方的代码粘贴到“On Message”选项卡中
  3. 名称:格式化消息
  4. 点击“完成”

6.5 配置 MQTT Out Node

  1. 双击 mqtt out node
  2. 选择 broker: Camera MQTT Broker(前面已配置)
  3. Topic:(保持为空 - 由 function node 设置)
  4. 名称:发布状态
  5. 点击“完成”

6.6 配置 MQTT In Node

  1. 双击 mqtt in node
  2. 选择 broker: Camera MQTT Broker
  3. Topic: camera/commands
  4. 名称:命令监听器
  5. 点击“完成”

6.7 配置 Debug Node

  1. 双击 debug node
  2. 输出:完整的 msg 对象
  3. 名称:传入消息
  4. 点击“完成”

6.8 最终流程结构

您的完整流程应为:

输出端: Inject → Function → MQTT Out 输入端: MQTT In → Debug

Step 7: 部署与测试配置

7.1 部署 Flow

  1. 点击“Deploy”按钮(右上角)
  2. 验证部署成功消息
  3. 检查节点状态指示灯:
    • Green dot: 已连接到 broker
    • Red dot: 连接失败
    • Yellow dot: 正在连接

7.2 测试内部通信

测试摄像头的 MQTT 发布:

  1. 点击 inject 按钮 发送测试消息
  2. 验证 MQTT Out node 显示活动
  3. 如有外部消息请检查调试面板

7.3 外部测试 (可选)

使用外部 MQTT 客户端向摄像头发送命令进行测试:

使用命令行工具:

# Send a test command to the camera
mosquitto_pub -h 192.168.0.100 -t "camera/commands" -m "test_command"

预期结果: Debug node 应在 Node-RED 调试面板中显示传入的消息。

7.4 验证通信

检查以下方面:

测试项预期结果状态
Broker 连接MQTT 节点上的绿色状态
消息发布注入将成功触发 MQTT Out
消息接收调试显示外部消息
重新连接网络中断后自动重连

8.1 连接问题

问题症状解决办法
无法连接到 broker红色状态指示灯检查 broker 的 IP 和端口
身份验证失败连接被拒绝验证用户名/密码
网络超时黄色连接状态检查网络连通性
防火墙阻止无连接尝试打开 MQTT 端口

8.2 消息问题

问题症状解决办法
未收到消息调试无显示检查主题订阅
消息未发布外部客户端看不到内容验证发布主题
消息格式错误解析失败使用简单文本消息
消息丢失间歇性传输检查 broker 连接

8.3 性能问题

问题症状解决方案
高延迟消息传递延迟检查 broker 性能
连接中断频繁重新连接调整 keep-alive 设置
消息洪泛Broker 过载实现消息限流

8.4 调试技巧

系统性故障排除:

  1. 在 Node-RED 中检查 broker 连接状态
  2. 监控 Node-RED 调试面板中的消息流
  3. 在传输复杂数据之前使用简单文本消息
  4. 使用 ping 验证网络连通性
  5. 在进行高级流程之前,使用基础主题进行测试

成功!您的 MQTT 通信就绪

您的 MQTT 通信系统现在可以:

  • 使用正确的身份认证连接到 MQTT broker
  • 订阅主题以接收命令和数据
  • 发布消息用于状态更新和响应
  • 处理 JSON 消息格式以实现结构化通信
  • 网络中断后自动重新连接
  • 为不同的消息优先级提供多种 QoS 级别

运行维护

常规系统检查

  • 在 Node-RED 中监控 broker 连接状态
  • 使用测试消息验证消息投递
  • 检查 broker 日志以查找任何错误模式
  • 按需更新认证凭据

性能监控

  • 跟踪消息延迟和投递时间
  • 监控 broker 资源使用情况以实现可扩展性
  • 分析主题使用模式以优化
  • 根据实际需求审查 QoS 设置

下一步

在建立基本 MQTT 通信之后:

  1. 为您的应用实现具体消息工作流程
  2. 设置主题层次结构以实现有序通信
  3. 添加安全措施,如 TLS 加密
  4. 使用已确立的 MQTT 协议与外部系统集成
  5. 创建用于系统健康的监控仪表板

🔗 相关参考