跳到主要内容

AI 驱动文档

您想了解什么?

MQTT 通信设置

本指南展示了如何使用 Node-RED 配置 OV80i 相机与外部设备之间的 MQTT 通信。MQTT 为物联网应用和远程设备通信提供轻量级、可靠的消息传递。

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

先决条件

  • 已设置并连接的 OV80i 相机系统
  • 相机与 MQTT 代理之间的网络连接
  • 可用的 MQTT 代理(本地或基于云)
  • 对 MQTT 概念(主题、发布/订阅)的基本理解
  • 在相机上配置的活动配方

MQTT 通信概述

MQTT 关键概念:

  • 代理: 路由客户端之间消息的中央服务器
  • 主题: 消息类别(例如,“camera/status”,“commands/trigger”)
  • 发布: 向主题发送消息
  • 订阅: 从主题接收消息
  • QoS: 服务质量级别(0、1、2)

第一步:验证网络配置

1.1 检查相机网络设置

  1. 导航到系统设置
  2. 记录相机 IP 地址(例如,10.250.0.100
  3. 验证与 MQTT 代理的网络连接

1.2 MQTT 代理要求

确保 MQTT 代理可访问:

  • 同一网络: 相机必须能够访问代理 IP 地址
  • 端口访问: 默认 MQTT 端口 1883(或 8883 用于 TLS)
  • 身份验证: 如果代理要求,需提供用户名/密码
  • 防火墙: 允许所需端口的 MQTT 流量

1.3 网络要求

组件IP 地址端口备注
相机10.250.0.100N/A必须能够访问代理
MQTT 代理10.250.0.2001883标准 MQTT 端口
客户端设备10.250.0.xxx可变任何订阅的设备

第二步:访问 Node-RED 编辑器

2.1 导航到 IO 块

  1. 在配方编辑器中打开您的活动配方
  2. 点击 配置 IO 或在面包屑菜单中选择 IO 块 以进入 Node-RED 编辑器

2.2 验证可用的 MQTT 节点

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

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

检查点: 您应该在左侧面板的网络部分看到 MQTT 节点。

第三步:配置 MQTT 代理连接

3.1 添加 MQTT 代理配置

  1. 将 "mqtt in" 节点拖到画布上(用于初始设置)
  2. 双击节点以打开配置
  3. 点击服务器字段旁边的铅笔图标
  4. 点击 "添加新 mqtt-代理"

3.2 配置代理设置

基本代理配置:

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

3.3 认证设置(如有需要)

如果代理需要认证:

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

3.4 高级设置

连接选项:

设置推荐值描述
保持活动60 秒心跳间隔
清除会话每次连接时重新开始
自动连接自动重新连接

3.5 保存代理配置

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

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

4.1 设置 MQTT 输入节点

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

4.2 MQTT 输入配置

订阅设置:

设置示例值描述
服务器相机 MQTT 代理选择已配置的代理
主题camera/commands订阅的主题
QoS0消息传递质量
输出自动检测消息格式
名称命令监听器节点标识符

4.3 主题命名约定

推荐的主题结构:

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

4.4 配置消息处理

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

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

5.1 添加 MQTT 输出节点

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

5.2 MQTT 输出配置

发布设置:

设置示例值描述
服务器相机 MQTT 代理与输入相同的代理
主题camera/responses相机响应的主题
QoS0消息传递质量
保留不存储最后一条消息
名称响应发布者节点标识符

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. 配置设置:
    • 名称: "发送测试消息"
    • 有效载荷: 时间戳
    • 主题: (留空)
  3. 点击 "完成"

6.4 配置 Function 节点

简单消息格式化:

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

  1. 双击 function 节点
  2. 将上述代码 复制到 "On Message" 标签
  3. 名称: "格式化消息"
  4. 点击 "完成"

6.5 配置 MQTT Out 节点

  1. 双击 mqtt out 节点
  2. 选择代理: Camera MQTT Broker(之前配置)
  3. 主题: (留空 - 由 function 节点设置)
  4. 名称: "发布状态"
  5. 点击 "完成"

6.6 配置 MQTT In 节点

  1. 双击 mqtt in 节点
  2. 选择代理: Camera MQTT Broker
  3. 主题: camera/commands
  4. 名称: "命令监听器"
  5. 点击 "完成"

6.7 配置 Debug 节点

  1. 双击 debug 节点
  2. 输出: 完整的 msg 对象
  3. 名称: "接收消息"
  4. 点击 "完成"

6.8 最终流程结构

您的完整流程应为:

输出: Inject → Function → MQTT Out
输入: MQTT In → Debug

第 7 步:部署和测试配置

7.1 部署流程

  1. 点击 "部署" 按钮(右上角)
  2. 验证部署成功 消息
  3. 检查节点状态指示器:
    • 绿色点: 已连接到代理
    • 红色点: 连接失败
    • 黄色点: 正在连接

7.2 测试内部通信

测试相机的 MQTT 发布:

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

7.3 外部测试(可选)

使用外部 MQTT 客户端测试向相机发送命令:

使用命令行工具:

# Send a test command to the camera
mosquitto_pub -h 10.250.0.100 -t "camera/commands" -m "test_command"

预期结果: Debug 节点应在 Node-RED 调试面板中显示接收到的消息。

7.4 验证通信

检查以下方面:

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

第 8 步:故障排除 MQTT 问题

8.1 连接问题

问题症状解决方案
无法连接到代理红色状态指示器检查代理 IP 和端口
身份验证失败连接被拒绝验证用户名/密码
网络超时黄色连接状态检查网络连接
防火墙阻塞无连接尝试打开 MQTT 端口

8.2 消息问题

问题症状解决方案
未接收到消息Debug 显示无内容检查主题订阅
消息未发布外部客户端看不到验证发布主题
消息格式错误解析失败使用简单文本消息
丢失消息间歇性交付检查代理连接

8.3 性能问题

问题症状解决方案
高延迟消息传递延迟检查代理性能
连接中断频繁重新连接调整保持活动设置
消息泛滥代理过载实施消息限流

8.4 调试技巧

系统化故障排除:

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

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

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

  • 连接到 MQTT 代理 并进行适当的身份验证
  • 订阅主题 以接收命令和数据
  • 发布消息 以进行状态更新和响应
  • 处理 JSON 消息格式 以实现结构化通信
  • 在网络中断后自动重新连接
  • 支持多种 QoS 级别 以满足不同的消息优先级

持续维护

定期系统检查

  • 监控 Node-RED 中的代理连接状态
  • 使用测试消息验证消息传递
  • 检查代理日志 以查找任何错误模式
  • 根据需要更新身份验证 凭据

性能监控

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

下一步

在设置基本 MQTT 通信后:

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

集成构建器 可以根据简单的英语描述生成完整的 MQTT 通信流。描述您的消息模式(例如,“将检验结果发布到带有通过/失败状态和置信度分数的 MQTT 主题”),并在几秒钟内获得可投入生产的 Node-RED 流。

🔗 另请参阅