跳到主要内容

AI 驱动文档

您想了解什么?

MQTT 通信设置

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

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

先决条件

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

MQTT 通信概览

MQTT 关键概念:

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

Step 1: 验证网络配置

1.1 检查摄像头网络设置

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

1.2 MQTT Broker 要求

确保 MQTT broker 可访问:

  • 同一网络: 摄像头必须能够访问 MQTT broker 的 IP 地址
  • 端口访问: 默认 MQTT 端口 1883(TLS 时为 8883)
  • 认证: 如 broker 要求,使用用户名/密码
  • 防火墙: 允许在所需端口上进行 MQTT 通信

1.3 网络需求

设置项值/示例备注
组件192.168.0.100必须访问 broker
MQTT Broker192.168.0.2001883,标准 MQTT 端口
客户端设备192.168.0.xxx变动

Step 2: 访问 Node-RED 编辑器

2.1 导航至 IO Block

  1. 在 Recipe Editor 中打开当前活动配方
  2. 点击 Configure IO 或选择 IO Block" 在面包屑菜单中进入 Node-RED 编辑器

2.2 验证 MQTT 节点是否可用

在 Node-RED 方案板中检查 MQTT 节点:

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

检查点: 应在左侧面板的 Network 部分看到 MQTT 节点。

Step 3: 配置 MQTT Broker 连接

3.1 添加 MQTT Broker 配置

  1. 将 "mqtt in" 节点拖到画布上(用于初始设置)
  2. 双击该节点以打开配置
  3. 点击服务器字段旁的铅笔图标 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(auto-generate)为空时自动生成

3.3 身份验证设置(如有需要)

若代理需要身份验证:

设置描述
用户名MQTT 代理用户名
密码MQTT 代理密码
使用 TLS启用以实现安全连接(端口 8883)

3.4 高级设置

连接选项:

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

3.5 保存代理配置

  1. 点击“添加”以保存代理设置
  2. 点击“完成”以关闭节点配置
  3. 代理配置 现已可用于所有 MQTT 节点

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

4.1 设置 MQTT In 节点

  1. 选择您添加的“mqtt in”节点
  2. 双击进行配置
  3. 配置订阅设置:

4.2 MQTT In 配置

订阅设置:

设置示例值描述
服务器Camera MQTT 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 Out(发布)

5.1 添加 MQTT Out 节点

  1. 将“mqtt out”节点拖到画布上
  2. 双击进行配置
  3. 选择相同的代理配置

5.2 MQTT Out 配置

发布设置:

设置示例值描述
服务器Camera MQTT Broker与输入相同的代理
主题camera/responses相机响应的主题
QoS0消息传递质量
RetainFalse不存储最后一条消息
名称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 Node

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

6.4 配置 Function Node

Simple message formatting:

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

  1. Double-click function node
  2. Copy code above into "On Message" tab
  3. Name: "Format Message"
  4. Click "Done"

6.5 配置 MQTT Out Node

  1. Double-click mqtt out node
  2. Select broker: Camera MQTT Broker (configured earlier)
  3. Topic: (leave empty - set by function node)
  4. Name: "Publish Status"
  5. Click "Done"

6.6 配置 MQTT In Node

  1. Double-click mqtt in node
  2. Select broker: Camera MQTT Broker
  3. Topic: camera/commands
  4. Name: "Command Listener"
  5. Click "Done"

6.7 配置 Debug Node

  1. Double-click debug node
  2. Output: Complete msg object
  3. Name: "Incoming Messages"
  4. Click "Done"

6.8 Final Flow Structure

Your complete flow should be:

Outgoing: Inject → Function → MQTT Out
Incoming: MQTT In → Debug

Step 7: Deploy and Test Configuration

7.1 Deploy Flow

  1. Click "Deploy" button (top-right corner)
  2. Verify deployment success 信息
  3. Check node status indicators:
    • Green dot: Connected to broker
    • Red dot: Connection failed
    • Yellow dot: Connecting

7.2 Test Internal Communication

Test the camera's MQTT publishing:

  1. Click inject button 发送测试消息
  2. Verify MQTT Out node 显示活动
  3. Check debug panel 如果你有外部消息

7.3 External Testing (Optional)

Test with external MQTT client to send commands to camera:

Using command line tools:

# 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 Verify Communication

Check these aspects:

测试项预期结果状态
Broker connectionMQTT 节点的绿色状态
Message publishingInject 触发 MQTT Out 成功
Message reception调试显示外部消息
Reconnection网络中断后自动重连

Step 8: Troubleshooting MQTT Issues

8.1 Connection Problems

问题症状解决方案
Cannot connect to broker红色状态指示灯Check broker IP and port
Authentication failureConnection refusedVerify username/password
Network timeoutsYellow connecting statusCheck network connectivity
Firewall blockingNo connection attemptOpen MQTT ports

8.2 Message Issues

问题症状解决方案
No messages received调试显示为空Check topic subscriptions
Messages not publishingExternal clients see nothingVerify publish topics
Message format errorsParsing failuresUse simple text messages
Lost messagesIntermittent deliveryCheck broker connection

8.3 性能问题

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

8.4 调试技巧

系统性故障排除:

  1. 在 Node-RED 中检查 broker 连接状态
  2. 监控 Node-RED 调试面板 以了解消息流
  3. 在处理复杂数据前使用简单文本消息
  4. 使用 ping 验证网络连通性
  5. 在使用高级流前先测试基础主题

成功!您的 MQTT 通信已就绪

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

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

持续维护

定期系统检查

  • 在 Node-RED 中监控 broker 连接状态
  • 使用测试消息验证消息投递
  • 检查 broker 日志中是否有错误模式
  • 按需更新身份验证凭据

性能监控

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

下一步

在建立基本 MQTT 通信之后:

  1. 为您的应用实现特定的消息工作流
  2. 设定 topic 层级以实现有序通信
  3. 添加安全措施,如 TLS 加密
  4. 使用已建立的 MQTT 协议与外部系统集成
  5. 创建用于系统健康状况的监控仪表板
自动生成 MQTT 流

The Integration Builder 可以根据简要英文描述生成完整的 MQTT 通信 flows。描述您的消息模式(例如 "publish inspection results to an MQTT topic with pass/fail status and confidence scores")并在几秒钟内获得一个 production-ready Node-RED flow。

🔗 相关链接