跳到主要内容

MQTT 通信设置

本指南演示如何使用 Node-RED 配置 OV80i 摄像头与外部设备之间的 MQTT 通信。MQTT 支持轻量级且可靠的消息传递,适用于物联网应用和远程设备通信。

何时使用 MQTT 通信: 物联网设备集成、远程监控系统、发布/订阅消息模式、低带宽环境、分布式传感器网络,或需要可靠消息传递并支持自动重连的场景。

先决条件

  • 已设置并连接的 OV80i 摄像头系统
  • 摄像头与 MQTT broker 之间的网络连接
  • 可用的 MQTT broker(本地或云端)
  • 对 MQTT 概念(主题、发布/订阅)有基本了解
  • 摄像头上配置了活动配方

MQTT 通信概述

MQTT 关键概念:

  • Broker: 负责客户端间消息路由的中央服务器
  • Topics(主题): 消息类别(例如 "camera/status"、"commands/trigger")
  • Publish(发布): 向主题发送消息
  • Subscribe(订阅): 接收主题消息
  • QoS: 服务质量等级(0、1、2)

步骤 1:验证网络配置

1.1 检查摄像头网络设置

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

1.2 MQTT Broker 要求

确保 MQTT broker 可访问:

  • 同一网络: 摄像头必须能访问 broker 的 IP 地址
  • 端口访问: 默认 MQTT 端口 1883(TLS 使用 8883)
  • 认证: 如果 broker 需要,配置用户名/密码
  • 防火墙: 允许 MQTT 流量通过所需端口

1.3 网络要求

组件IP 地址端口备注
摄像头10.250.0.100必须能访问 broker
MQTT Broker10.250.0.2001883标准 MQTT 端口
客户端设备10.250.0.xxx可变任何订阅设备

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

2.1 进入 IO Block

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

2.2 验证 MQTT 节点是否可用

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

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

检查点: 左侧面板的网络部分应显示 MQTT 节点。

步骤 3:配置 MQTT Broker 连接

3.1 添加 MQTT Broker 配置

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

3.2 配置 Broker 设置

基本 Broker 配置:

设置说明
名称Camera MQTT Broker描述性标识
服务器192.168.0.200MQTT broker IP 地址
端口1883标准 MQTT 端口
协议MQTT V3.1.1推荐版本
客户端 ID(自动生成)留空自动生成

3.3 认证设置(如需)

如果 broker 需要认证:

设置说明
用户名MQTT broker 用户名
密码MQTT broker 密码
使用 TLS启用安全连接(端口 8883)

3.4 高级设置

连接选项:

设置推荐值说明
Keep Alive60 秒心跳间隔
Clean SessionTrue每次连接重新开始
Auto ConnectTrue自动重连

3.5 保存 Broker 配置

  1. 点击 "Add" 保存配置
  2. 点击 "Done" 关闭节点配置
  3. Broker 配置现可用于所有 MQTT 节点

步骤 4:配置 MQTT 输入(订阅)

4.1 设置 MQTT In 节点

  1. 选择已添加的 "mqtt in" 节点
  2. 双击打开配置
  3. 配置订阅设置:

4.2 MQTT In 配置

订阅设置:

设置示例值说明
服务器Camera MQTT Broker选择已配置的 broker
主题camera/commands订阅的主题
QoS0消息传递质量
输出auto-detect消息格式
名称Command Listener节点标识

4.3 主题命名规范

推荐的主题结构:

用途主题示例说明
命令camera/commands接收控制命令
状态请求camera/status/request请求状态信息
配置camera/config配置变更

4.4 配置消息处理

  1. 添加 "debug" 节点监控接收消息
  2. 连接:MQTT In → Debug
  3. 配置 debug 节点显示完整消息

步骤 5:配置 MQTT 输出(发布)

5.1 添加 MQTT Out 节点

  1. 将 "mqtt out" 节点拖入画布
  2. 双击打开配置
  3. 选择相同的 broker 配置

5.2 MQTT Out 配置

发布设置:

设置示例值说明
服务器Camera MQTT Broker与输入相同的 broker
主题camera/responses摄像头响应主题
QoS0消息传递质量
保留False不保留最后一条消息
名称Response Publisher节点标识

5.3 响应主题结构

推荐的响应主题:

响应类型主题示例说明
状态更新camera/status摄像头状态信息
结果camera/results检测结果
确认camera/ack命令确认

步骤 6:创建基本通信流程

6.1 构建发送消息流程

创建摄像头消息发布流程:

  1. 添加 "inject" 节点触发消息
  2. 添加 "function" 节点格式化消息
  3. 添加 "mqtt out" 节点发布消息
  4. 连接:Inject → Function → MQTT Out

6.2 构建接收消息流程

创建接收消息的独立流程:

  1. 添加 "mqtt in" 节点订阅消息
  2. 添加 "debug" 节点监控消息
  3. 连接:MQTT In → Debug

6.3 配置 Inject 节点

  1. 双击 inject 节点
  2. 配置:
    • 名称: "Send Test Message"
    • 负载: 时间戳
    • 主题: (留空)
  3. 点击 "Done"

6.4 配置 Function 节点

简单消息格式化:

// 格式化发送消息
msg.topic = "camera/status";
msg.payload = "Camera online - " + new Date().toISOString();
return msg;

  1. 双击 function 节点
  2. 将上述代码复制到 “On Message” 标签页
  3. 名称: "Format Message"
  4. 点击 "Done"

6.5 配置 MQTT Out 节点

  1. 双击 mqtt out 节点
  2. 选择 broker:Camera MQTT Broker(之前配置)
  3. 主题: (留空,由 function 节点设置)
  4. 名称: "Publish Status"
  5. 点击 "Done"

6.6 配置 MQTT In 节点

  1. 双击 mqtt in 节点
  2. 选择 broker:Camera MQTT Broker
  3. 主题: camera/commands
  4. 名称: "Command Listener"
  5. 点击 "Done"

6.7 配置 Debug 节点

  1. 双击 debug 节点
  2. 输出: 完整 msg 对象
  3. 名称: "Incoming Messages"
  4. 点击 "Done"

6.8 最终流程结构

完整流程应为:

发送: Inject → Function → MQTT Out
接收: MQTT In → Debug

步骤 7:部署并测试配置

7.1 部署流程

  1. 点击右上角 "Deploy" 按钮
  2. 确认部署成功消息
  3. 检查节点状态指示:
    • 绿色点: 已连接 broker
    • 红色点: 连接失败
    • 黄色点: 正在连接

7.2 测试内部通信

测试摄像头 MQTT 发布功能:

  1. 点击 inject 按钮发送测试消息
  2. 确认 MQTT Out 节点有活动
  3. 检查 debug 面板是否有外部消息

7.3 外部测试(可选)

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

命令行示例:

# 向摄像头发送测试命令
mosquitto_pub -h 10.250.0.100 -t "camera/commands" -m "test_command"

预期结果: Node-RED debug 面板应显示接收到的消息。

7.4 验证通信

检查以下项目:

测试预期结果状态
Broker 连接MQTT 节点显示绿色状态
消息发布Inject 成功触发 MQTT Out
消息接收Debug 显示外部消息
重连功能网络中断后自动重连

步骤 8:MQTT 问题排查

8.1 连接问题

问题症状解决方案
无法连接 broker红色状态指示检查 broker IP 和端口
认证失败连接被拒绝验证用户名/密码
网络超时黄色连接中状态检查网络连通性
防火墙阻断无连接尝试开放 MQTT 端口

8.2 消息问题

问题症状解决方案
无消息接收Debug 无输出检查订阅主题
消息未发布外部客户端无消息验证发布主题
消息格式错误解析失败使用简单文本消息
消息丢失传递不稳定检查 broker 连接

8.3 性能问题

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

8.4 调试技巧

系统化排查:

  1. 检查 Node-RED 中 broker 连接状态
  2. 监控 Node-RED debug 面板消息流
  3. 先用简单文本消息测试
  4. 使用 ping 验证网络连通性
  5. 先测试基础主题,再扩展复杂流程

成功!您的 MQTT 通信已准备就绪

您的 MQTT 通信系统现可:

  • 连接带认证的 MQTT broker
  • 订阅主题接收命令和数据
  • 发布消息传递状态更新和响应
  • 支持 JSON 消息格式实现结构化通信
  • 网络中断后自动重连
  • 支持多种 QoS 等级满足不同消息优先级

持续维护

定期系统检查

  • 监控 Node-RED 中 broker 连接状态
  • 使用测试消息验证消息传递
  • 检查 broker 日志中的错误模式
  • 根据需要更新认证凭据

性能监控

  • 跟踪消息延迟和传递时间
  • 监控 broker 资源使用情况以保证扩展性
  • 分析主题使用模式以优化配置
  • 根据实际需求调整 QoS 设置

后续步骤

完成基本 MQTT 通信配置后:

  1. 为应用实现特定消息工作流
  2. 建立主题层级结构以组织通信
  3. 添加安全措施,如 TLS 加密
  4. 使用标准 MQTT 协议集成外部系统
  5. 创建监控仪表盘以监测系统健康

相关文档

  • 教程: 使用 MQTT 通信触发
  • 操作指南: TCP 通信设置
  • 操作指南: RS-232 通信设置
  • 教程: PLC 集成完整流程
  • 参考: Node-RED 逻辑块指南