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 检查摄像头网络设置
- 打开系统设置
- 记录摄像头 IP 地址(例如
192.168.0.100) - 验证到 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 Broker | 192.168.0.200 | 1883,标准 MQTT 端口 |
| 客户端设备 | 192.168.0.xxx | 变动 |
Step 2: 访问 Node-RED 编辑器
2.1 导航至 IO Block
- 在 Recipe Editor 中打开当前活动配方
- 点击 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 配置
- 将 "mqtt in" 节点拖到画布上(用于初始设置)
- 双击该节点以打开配置
- 点击服务器字段旁的铅笔图标 4 点击 "Add new mqtt-broker"
3.2 配置 Broker 设置
基础 Broker 配置:
| 设置项 | 值 | 描述 |
|---|---|---|
| 名称 | Camera MQTT Broker | 描述性标识符 |
| 服务器 | 192.168.0.200 | MQTT broker 的 IP 地址 |
| 端口 | 1883 | 标准 MQTT 端口 |
| 协议 | MQTT V3.1.1 | 建议版本 |
| 客户端 ID | (auto-generate) | 为空时自动生成 |
3.3 身份验证设置(如有需要)
若代理需要身份验证:
| 设置 | 描述 |
|---|---|
| 用户名 | MQTT 代理用户名 |
| 密码 | MQTT 代理密码 |
| 使用 TLS | 启用以实现安全连接(端口 8883) |
3.4 高级设置
连接选项:
| 设置 | 推荐值 | 描述 |
|---|---|---|
| Keep Alive | 60 秒 | 心跳间隔 |
| Clean Session | True | 每次连接时重新开始 |
| Auto Connect | True | 自动重新连接 |
3.5 保存代理配置
- 点击“添加”以保存代理设置
- 点击“完成”以关闭节点配置
- 代理配置 现已可用于所有 MQTT 节点
步骤 4:配置 MQTT 输入(订阅)
4.1 设置 MQTT In 节点
- 选择您添加的“mqtt in”节点
- 双击进行配置
- 配置订阅设置:
4.2 MQTT In 配置
订阅设置:
| 设置 | 示例值 | 描述 |
|---|---|---|
| 服务器 | Camera MQTT Broker | 选择已配置的代理 |
| 主题 | camera/commands | 要订阅的主题 |
| QoS | 0 | 消息传递质量 |
| 输出 | auto-detect | 消息格式 |
| 名称 | Command Listener | 节点标识符 |
4.3 主题命名约定
推荐的主题结构:
| 用途 | 主题示例 | 用途说明 |
|---|---|---|
| 命令 | camera/commands | 接收控制命令 |
| 状态请求 | camera/status/request | 状态信息请求 |
| 配置 | camera/config | 配置变更 |
4.4 配置消息处理
- 添加“debug”节点 以监控传入消息
- 连接: MQTT In → Debug
- 配置 debug 节点 以显示完整消息
步骤 5:配置 MQTT Out(发布)
5.1 添加 MQTT Out 节点
- 将“mqtt out”节点拖到画布上
- 双击进行配置
- 选择相同的代理配置
5.2 MQTT Out 配置
发布设置:
| 设置 | 示例值 | 描述 |
|---|---|---|
| 服务器 | Camera MQTT Broker | 与输入相同的代理 |
| 主题 | camera/responses | 相机响应的主题 |
| QoS | 0 | 消息传递质量 |
| Retain | False | 不存储最后一条消息 |
| 名称 | Response Publisher | 节点标识符 |
5.3 响应主题结构
推荐的响应主题:
| 响应类型 | 主题示例 | 用途 |
|---|---|---|
| 状态更新 | camera/status | 相机状态信息 |
| 结果 | camera/results | 检查结果 |
| 应答 | camera/ack | 命令确认 |
步骤 6:创建基本通信流程
6.1 构建外发消息流
创建一个从相机发布消息的流程:
- 添加“inject”节点 以触发消息
- 添加“function”节点 用于消息格式化
- 添加“mqtt out”节点 用于发布
- 连接: Inject → Function → MQTT Out
6.2 构建入站消息流
创建单独的流程以接收消息:
- 添加“mqtt in”节点 用于订阅
- 添加“debug”节点 用于监控
- 连接: MQTT In → Debug
6.3 配置 Inject Node
- Double-click inject node
- Configure settings:
- Name: "Send Test Message"
- Payload: Timestamp
- Topic: (leave empty)
- 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;
- Double-click function node
- Copy code above into "On Message" tab
- Name: "Format Message"
- Click "Done"
6.5 配置 MQTT Out Node
- Double-click mqtt out node
- Select broker: Camera MQTT Broker (configured earlier)
- Topic: (leave empty - set by function node)
- Name: "Publish Status"
- Click "Done"
6.6 配置 MQTT In Node
- Double-click mqtt in node
- Select broker: Camera MQTT Broker
- Topic:
camera/commands - Name: "Command Listener"
- Click "Done"
6.7 配置 Debug Node
- Double-click debug node
- Output: Complete msg object
- Name: "Incoming Messages"
- 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
- Click "Deploy" button (top-right corner)
- Verify deployment success 信息
- 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:
- Click inject button 发送测试消息
- Verify MQTT Out node 显示活动
- 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 connection | MQTT 节点的绿色状态 | ☐ |
| Message publishing | Inject 触发 MQTT Out 成功 | ☐ |
| Message reception | 调试显示外部消息 | ☐ |
| Reconnection | 网络中断后自动重连 | ☐ |
Step 8: Troubleshooting MQTT Issues
8.1 Connection Problems
| 问题 | 症状 | 解决方案 |
|---|---|---|
| Cannot connect to broker | 红色状态指示灯 | Check broker IP and port |
| Authentication failure | Connection refused | Verify username/password |
| Network timeouts | Yellow connecting status | Check network connectivity |
| Firewall blocking | No connection attempt | Open MQTT ports |
8.2 Message Issues
| 问题 | 症状 | 解决方案 |
|---|---|---|
| No messages received | 调试显示为空 | Check topic subscriptions |
| Messages not publishing | External clients see nothing | Verify publish topics |
| Message format errors | Parsing failures | Use simple text messages |
| Lost messages | Intermittent delivery | Check broker connection |
8.3 性能问题
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 高延迟 | 消息传递延迟 | 检查 broker 性能 |
| 连接中断 | 频繁重新连接 | 调整 keep-alive 设置 |
| 消息泛滥 | 代理过载 | 实现消息节流 |
8.4 调试技巧
系统性故障排除:
- 在 Node-RED 中检查 broker 连接状态
- 监控 Node-RED 调试面板 以了解消息流
- 在处理复杂数据前使用简单文本消息
- 使用 ping 验证网络连通性
- 在使用高级流前先测试基础主题
成功!您的 MQTT 通信已就绪
您的 MQTT 通信系统现在可以:
- 连接到 MQTT brokers 时使用正确的身份验证
- 订阅 topics 以接收命令和数据
- 发布消息 以进行状态更新和响应
- 处理 JSON 消息格式 以实现结构化通信
- 网络中断后自动重新连接
- 为不同的消息优先级支持多种 QoS 级别
持续维护
定期系统检查
- 在 Node-RED 中监控 broker 连接状态
- 使用测试消息验证消息投递
- 检查 broker 日志中是否有错误模式
- 按需更新身份验证凭据
性能监控
- 跟踪消息延迟和投递时间
- 监控 broker 资源使用情况以实现可扩展性
- 分析 topic 使用模式以进行优化
- 基于实际需求审查 QoS 设置
下一步
在建立基本 MQTT 通信之后:
- 为您的应用实现特定的消息工作流
- 设定 topic 层级以实现有序通信
- 添加安全措施,如 TLS 加密
- 使用已建立的 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。