AI 驱动文档
您想了解什么?
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)
Step 1: 验证网络配置
1.1 检查相机网络设置
- 进入系统设置
- 记下相机 IP 地址(例如
192.168.0.100) - 验证与 MQTT broker 的网络连通性
1.2 MQTT broker 要求
确保 MQTT broker 可访问:
- 同一网络: 相机必须能访问 broker 的 IP 地址
- 端口访问: 默认 MQTT 端口 1883(TLS 时为 8883)
- 认证: 如 broker 要求,请使用用户名/密码
- 防火墙: 在所需端口上允许 MQTT 流量
1.3 网络需求
| 组件 | IP 地址 | 端口 | 备注 |
|---|---|---|---|
| 相机 | 192.168.0.100 | N/A | 必须能访问 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" 节点拖放到画布上(用于初始设置)
- 双击该节点以打开配置
- 在 Server 字段旁点击铅笔图标
- 点击 "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 | (自动生成) | 为空以自动生成 |
3.3 Authentication Settings (If Required)
If broker requires authentication:
| 设置项 | 描述 |
|---|---|
| Username | MQTT broker 用户名 |
| Password | MQTT broker 密码 |
| Use TLS | 启用以建立安全连接(端口 8883) |
3.4 Advanced Settings
Connection Options:
| Setting | Recommended Value | Description |
|---|---|---|
| Keep Alive | 60 秒 | 心跳间隔 |
| Clean Session | True | 每次连接启动全新会话 |
| Auto Connect | True | 自动重新连接 |
3.5 Save Broker Configuration
- Click "Add" to save broker settings
- Click "Done" to close node configuration
- Broker configuration is now available for all MQTT nodes
翻译后:
- 单击 'Add' 以保存 broker 设置
- 单击 'Done' 以关闭节点配置
- Broker 配置 现已对所有 MQTT 节点可用
Step 4: Configure MQTT Input (Subscribe)
4.1 Set Up MQTT In Node
- Select the "mqtt in" node you added
- Double-click to configure
- Configure subscription settings:
翻译后:
4.1 配置 MQTT In 节点
- 选择你添加的 'mqtt in' 节点
- 双击进行配置
- 配置订阅设置:
4.2 MQTT In Configuration
Subscription Settings:
| Setting | Example Value | Description |
|---|---|---|
| Server | Camera MQTT Broker | 选择已配置的 broker |
| Topic | camera/commands | 订阅的主题 |
| QoS | 0 | 消息传递质量 |
| Output | auto-detect | 消息格式 |
| Name | Command Listener | 节点标识 |
翻译后:
4.2 MQTT In 配置
订阅设置:
| 设置项 | 示例值 | 描述 |
|---|---|---|
| Server | Camera MQTT Broker | 选择已配置的 broker |
| Topic | camera/commands | 订阅的主题 |
| QoS | 0 | 消息传递质量 |
| Output | auto-detect | 消息格式 |
| Name | Command Listener | 节点标识 |
4.3 Topic Naming Conventions
Recommended topic structure:
| Purpose | Topic Example | Usage |
|---|---|---|
| Commands | camera/commands | Receive control commands |
| Status requests | camera/status/request | Status information requests |
| Configuration | camera/config | Configuration changes |
翻译后:
4.3 Topic 命名约定
推荐的主题结构:
| 用途 | 主题示例 | 用法 |
|---|---|---|
| 命令 | camera/commands | 接收控制命令 |
| 状态请求 | camera/status/request | 状态信息请求 |
| 配置 | camera/config | 配置变更 |
4.4 Configure Message Processing
- Add "debug" node to monitor incoming messages
- Connect: MQTT In → Debug
- Configure debug node to show complete message
翻译后:
4.4 配置消息处理
- 添加 'debug' 节点 以监控传入消息
- 连接: MQTT In → Debug
- 将 debug 节点配置为显示完整消息
Step 5: Configure MQTT Output (Publish)
5.1 Add MQTT Out Node
- Drag "mqtt out" node onto canvas
- Double-click to configure
- Select same broker configuration
翻译后:
5.1 添加 MQTT Out 节点
- 将 "mqtt out" 节点 拖放到画布上
- 双击进行配置
- 选择相同的 broker 配置
5.2 MQTT Out Configuration
Publishing Settings:
| Setting | Example Value | Description |
|---|---|---|
| Server | Camera MQTT Broker | 与输入相同的 broker |
| Topic | camera/responses | 相机响应的主题 |
| QoS | 0 | 消息传递质量 |
| Retain | False | 不存储最后一条消息 |
| Name | Response Publisher | 节点标识 |
翻译后:
5.2 MQTT Out 配置
发布设置:
| 设置项 | 示例值 | 描述 |
|---|---|---|
| Server | Camera MQTT Broker | 与输入相同的 broker |
| Topic | camera/responses | 相机响应的主题 |
| QoS | 0 | 消息传递质量 |
| Retain | False | 不存储最后一条消息 |
| Name | Response Publisher | 节点标识 |
5.3 Response Topic Structure
Recommended response topics:
| Response Type | Topic Example | Usage |
|---|---|---|
| Status updates | camera/status | Camera status information |
| Results | camera/results | Inspection results |
| Acknowledgments | camera/ack | Command confirmations |
翻译后:
5.3 响应主题结构
推荐的响应主题:
| 响应类型 | 主题示例 | 用途 |
|---|---|---|
| 状态更新 | camera/status | 相机状态信息 |
| 结果 | camera/results | 检验结果 |
| 确认 | camera/ack | 命令确认 |
Step 6: Create Basic Communication Flow
6.1 Build Outgoing Message Flow
Create a flow to publish messages from the camera:
- Add "inject" node for triggering messages
- Add "function" node for message formatting
- Add "mqtt out" node for publishing
- Connect: Inject → Function → MQTT Out
翻译后:
6.1 构建出站消息流
创建一个流,用于从相机发布消息:
- 添加 'inject' 节点 以触发消息
- 添加 'function' 节点 用于消息格式化
- 添加 'mqtt out' 节点 用于发布
- 连接: Inject → Function → MQTT Out
6.2 Build Incoming Message Flow
Create a separate flow to receive messages:
- Add "mqtt in" node for subscribing
- Add "debug" node for monitoring
- Connect: MQTT In → Debug
翻译后:
6.2 构建入站消息流
创建一个独立的流来接收消息:
- 添加 'mqtt in' 节点 以订阅
- 添加 'debug' 节点 进行监控
- 连接: MQTT In → Debug
6.3 配置 Inject Node
- 双击 Inject Node
- 配置设置:
- 名称: "发送测试消息"
- Payload: 时间戳
- Topic: (留空)
- 点击 "Done"
6.4 Configure Function Node
简单消息格式化:
// Format outgoing message
msg.topic = "camera/status";
msg.payload = "Camera online - " + new Date().toISOString();
return msg;
- 双击 Function Node
- 将上面的代码复制到“On Message”选项卡
- 名称: "格式化消息"
- 点击 "Done"
6.5 Configure MQTT Out Node
- 双击 mqtt out node
- 选择 broker: Camera MQTT Broker(前面已配置)
- Topic: (留空 - 由 function node 设置)
- 名称: "发布状态"
- 点击 "Done"
6.6 Configure MQTT In Node
- 双击 mqtt in node
- 选择 broker: Camera MQTT Broker
- Topic:
camera/commands - 名称: "命令监听器"
- 点击 "Done"
6.7 Configure Debug Node
- 双击 Debug Node
- Output: 完整的 msg 对象
- 名称: "接收消息"
- 点击 "Done"
6.8 Final Flow Structure
您的完整流程应为:
Outgoing: Inject → Function → MQTT Out Incoming: MQTT In → Debug
Step 7: Deploy and Test Configuration
7.1 Deploy Flow
- 点击“Deploy”按钮(右上角)
- 验证部署成功 消息
- 检查节点状态指示器:
- Green dot: 已连接到 broker
- Red dot: 连接失败
- Yellow dot: 连接中
7.2 Test Internal Communication
测试相机的 MQTT 发布:
- 点击注入按钮 发送测试消息
- 验证 MQTT Out 节点 显示活动
- 检查调试面板,若有外部消息
7.3 External Testing (Optional)
使用外部 MQTT 客户端向相机发送命令进行测试:
Using command line tools:
# Send a test command to the camera
mosquitto_pub -h 192.168.0.100 -t "camera/commands" -m "test_command"
预期结果: 调试节点应在 Node-RED 调试面板中显示传入的消息。
7.4 Verify Communication
检查以下方面:
| 测试 | 预期结果 | 状态 |
|---|---|---|
| Broker 连接 | MQTT 节点显示绿色状态 | ☐ |
| 消息发布 | Inject 触发 MQTT Out 成功 | ☐ |
| 消息接收 | 调试显示外部消息 | ☐ |
| 重新连接 | 网络中断后的自动重新连接 | ☐ |
Step 8: Troubleshooting MQTT Issues
8.1 Connection Problems
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 无法连接到 broker | 红色状态指示器 | 检查 broker 的 IP 和端口 |
| 身份验证失败 | 连接被拒绝 | 验证用户名/密码 |
| 网络超时 | 黄色连接状态 | 检查网络连通性 |
| 防火墙阻止 | 无连接尝试 | 打开 MQTT 端口 |
8.2 Message Issues
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 未收到消息 | 调试显示为空 | 检查主题订阅 |
| 消息未发布 | 外部客户端未看到内容 | 验证发布主题 |
| 消息格式错误 | 解析失败 | 使用简单文本消息 |
| 消息丢失 | 交付不稳定 | 检查 broker 连接 |
8.3 性能问题
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 高延迟 | 消息传递延迟 | 检查消息代理的性能 |
| 连接中断 | 频繁重连 | 调整 keep-alive 设置 |
| 消息泛滥 | 代理负载过高 | 实现消息限流 |
8.4 调试技巧
系统性故障排除:
- 在 Node-RED 中检查 MQTT 代理连接状态
- 监控 Node-RED 调试面板以观测消息流
- 在处理复杂数据前使用简单文本消息
- 使用 ping 验证网络连通性
- 在进行高级流程前测试基础主题
成功!您的 MQTT 通信已就绪
您的 MQTT 通信系统现在可以:
- 连接到具备正确认证的 MQTT 代理
- 订阅主题以接收命令和数据
- 发布用于状态更新和响应的消息
- 处理结构化通信的 JSON 消息格式
- 在网络中断后自动重新连接
- 支持不同消息优先级的 QoS 级别
持续维护
定期系统检查
- 在 Node-RED 中监控 MQTT 代理连接状态
- 使用测试消息验证消息传递
- 检查代理日志中的错误模式
- 按需更新认证凭据
性能监控
- 跟踪消息延迟及传递时间
- 监控代理资源使用情况以实现可扩展性
- 分析主题使用模式以实现优化
- 根据实际需求审查 QoS 设置
下一步
在建立基础 MQTT 通信之后:
- 为您的应用实现特定的消息工作流
- 设置主题层级以实现有序通信
- 增加如 TLS 加密等安全措施
- 使用既定的 MQTT 协议与外部系统集成
- 为系统健康创建监控看板
The Integration Builder 能够根据简单的英文描述生成完整的 MQTT 通信流。请描述您的消息模式(例如 "publish inspection results to an MQTT topic with pass/fail status and confidence scores"),即可在几秒内获得可用于生产的 Node-RED 流。