跳到主要内容

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 检查相机网络设置

  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变量任何订阅设备

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. 在 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 Authentication Settings (If Required)

If broker requires authentication:

设置项描述
UsernameMQTT broker 用户名
PasswordMQTT broker 密码
Use TLS启用以建立安全连接(端口 8883)

3.4 Advanced Settings

Connection Options:

SettingRecommended ValueDescription
Keep Alive60 秒心跳间隔
Clean SessionTrue每次连接启动全新会话
Auto ConnectTrue自动重新连接

3.5 Save Broker Configuration

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

翻译后:

  1. 单击 'Add' 以保存 broker 设置
  2. 单击 'Done' 以关闭节点配置
  3. Broker 配置 现已对所有 MQTT 节点可用

Step 4: Configure MQTT Input (Subscribe)

4.1 Set Up MQTT In Node

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

翻译后:

4.1 配置 MQTT In 节点

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

4.2 MQTT In Configuration

Subscription Settings:

SettingExample ValueDescription
ServerCamera MQTT Broker选择已配置的 broker
Topiccamera/commands订阅的主题
QoS0消息传递质量
Outputauto-detect消息格式
NameCommand Listener节点标识

翻译后:

4.2 MQTT In 配置

订阅设置:

设置项示例值描述
ServerCamera MQTT Broker选择已配置的 broker
Topiccamera/commands订阅的主题
QoS0消息传递质量
Outputauto-detect消息格式
NameCommand Listener节点标识

4.3 Topic Naming Conventions

Recommended topic structure:

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

翻译后:

4.3 Topic 命名约定

推荐的主题结构:

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

4.4 Configure Message Processing

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

翻译后:

4.4 配置消息处理

  1. 添加 'debug' 节点 以监控传入消息
  2. 连接: MQTT In → Debug
  3. 将 debug 节点配置为显示完整消息

Step 5: Configure MQTT Output (Publish)

5.1 Add MQTT Out Node

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

翻译后:

5.1 添加 MQTT Out 节点

  1. 将 "mqtt out" 节点 拖放到画布上
  2. 双击进行配置
  3. 选择相同的 broker 配置

5.2 MQTT Out Configuration

Publishing Settings:

SettingExample ValueDescription
ServerCamera MQTT Broker与输入相同的 broker
Topiccamera/responses相机响应的主题
QoS0消息传递质量
RetainFalse不存储最后一条消息
NameResponse Publisher节点标识

翻译后:

5.2 MQTT Out 配置

发布设置:

设置项示例值描述
ServerCamera MQTT Broker与输入相同的 broker
Topiccamera/responses相机响应的主题
QoS0消息传递质量
RetainFalse不存储最后一条消息
NameResponse Publisher节点标识

5.3 Response Topic Structure

Recommended response topics:

Response TypeTopic ExampleUsage
Status updatescamera/statusCamera status information
Resultscamera/resultsInspection results
Acknowledgmentscamera/ackCommand 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:

  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.1 构建出站消息流

创建一个流,用于从相机发布消息:

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

6.2 Build Incoming Message Flow

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.2 构建入站消息流

创建一个独立的流来接收消息:

  1. 添加 'mqtt in' 节点 以订阅
  2. 添加 'debug' 节点 进行监控
  3. 连接: MQTT In → Debug

6.3 配置 Inject Node

  1. 双击 Inject Node
  2. 配置设置:
    • 名称: "发送测试消息"
    • Payload: 时间戳
    • Topic: (留空)
  3. 点击 "Done"

6.4 Configure Function Node

简单消息格式化:

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

  1. 双击 Function Node
  2. 将上面的代码复制到“On Message”选项卡
  3. 名称: "格式化消息"
  4. 点击 "Done"

6.5 Configure MQTT Out Node

  1. 双击 mqtt out node
  2. 选择 broker: Camera MQTT Broker(前面已配置)
  3. Topic: (留空 - 由 function node 设置)
  4. 名称: "发布状态"
  5. 点击 "Done"

6.6 Configure MQTT In Node

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

6.7 Configure Debug Node

  1. 双击 Debug Node
  2. Output: 完整的 msg 对象
  3. 名称: "接收消息"
  4. 点击 "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

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

7.2 Test Internal Communication

测试相机的 MQTT 发布:

  1. 点击注入按钮 发送测试消息
  2. 验证 MQTT Out 节点 显示活动
  3. 检查调试面板,若有外部消息

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 调试技巧

系统性故障排除:

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

成功!您的 MQTT 通信已就绪

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

  • 连接到具备正确认证的 MQTT 代理
  • 订阅主题以接收命令和数据
  • 发布用于状态更新和响应的消息
  • 处理结构化通信的 JSON 消息格式
  • 在网络中断后自动重新连接
  • 支持不同消息优先级的 QoS 级别

持续维护

定期系统检查

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

性能监控

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

下一步

在建立基础 MQTT 通信之后:

  1. 为您的应用实现特定的消息工作流
  2. 设置主题层级以实现有序通信
  3. 增加如 TLS 加密等安全措施
  4. 使用既定的 MQTT 协议与外部系统集成
  5. 为系统健康创建监控看板
自动生成 MQTT 流

The Integration Builder 能够根据简单的英文描述生成完整的 MQTT 通信流。请描述您的消息模式(例如 "publish inspection results to an MQTT topic with pass/fail status and confidence scores"),即可在几秒内获得可用于生产的 Node-RED 流。

🔗 相关链接