AI 驱动文档
您想了解什么?
MQTT 通信设置
本指南将向您展示如何使用 Node-RED 配置 OV10i 相机与外部设备之间的 MQTT 通信。MQTT 为 IoT 应用程序和远程设备通信提供轻量级、可靠的消息传递。
何时使用 MQTT 通信: IoT 设备集成、远程监控系统、发布/订阅消息模式、低带宽环境、分布式传感器网络,或在需要可靠消息传递和自动重连的情况下。
跳过手动设置
用简单的英语描述您的 MQTT 集成,自动集成构建器 将在几秒钟内为您生成完整的 Node-RED 流程。
先决条件
- 已设置并连接的 OV10i 相机系统
- 相机与 MQTT 代理之间的网络连接
- 可用的 MQTT 代理(本地或基于云)
- 对 MQTT 概念(主题、发布/订阅)的基本理解
- 在相机上配置的活动配方
MQTT 通信概述
MQTT 关键概念:
- 代理: 路由客户端之间消息的中央服务器
- 主题: 消息类别(例如,“camera/status”,“commands/trigger”)
- 发布: 向主题发送消息
- 订阅: 从主题接收消息
- QoS: 服务质量级别(0、1、2)
第 1 步:验证网络配置
1.1 检查相机网络设置
- 导航到系统设置
- 记录相机 IP 地址(例如,
192.168.0.100) - 验证与 MQTT 代理的网络连接
1.2 MQTT 代理要求
确保 MQTT 代理可访问:
- 同一网络: 相机必须能够访问代理 IP 地址
- 端口访问: 默认 MQTT 端口 1883(或 8883 用于 TLS)
- 身份验证: 如果代理需要,提供用户名/密码
- 防火墙: 允许所需端口上的 MQTT 流量
1.3 网络要求
| 组件 | IP 地址 | 端口 | 备注 |
|---|---|---|---|
| 相机 | 192.168.0.100 | N/A | 必须能够访问代理 |
| MQTT 代理 | 192.168.0.200 | 1883 | 标准 MQTT 端口 |
| 客户端设备 | 192.168.0.xxx | 可变 | 任何订阅的设备 |
第 2 步:访问 Node-RED 编辑器
2.1 导航到 IO 块
- 在配方编辑器中打开您的活动配方
- 点击 配置 IO 或在面包屑菜单中选择 IO 块 以进入 Node-RED 编辑器
2.2 验证 MQTT 节点是否可用
检查 Node-RED 调色板中的 MQTT 节点:
- mqtt in - 订阅 MQTT 主题
- mqtt out - 发布到 MQTT 主题
检查点: 您应该在左侧面板的网络部分看到 MQTT 节点。
第 3 步:配置 MQTT 代理连接
3.1 添加 MQTT 代理配置
- 将 "mqtt in" 节点拖到画布上(用于初始设置)
- 双击节点 以打开配置
- 点击服务器字段旁边的铅笔图标
- 点击 "添加新 mqtt-代理"
3.2 配置代理设置
基本代理配置:
| 设置 | 值 | 描述 |
|---|---|---|
| 名称 | Camera MQTT Broker | 描述性标识符 |
| 服务器 | 192.168.0.200 | MQTT 代理 IP 地址 |
| 端口 | 1883 | 标准 MQTT 端口 |
| 协议 | MQTT V3.1.1 | 推荐版本 |
| 客户端 ID | (自动生成) | 留空以自动生成 |
3.3 身份验证设置(如有需要)
如果代理需要身份验证:
| 设置 | 描述 |
|---|---|
| 用户名 | MQTT 代理用户名 |
| 密码 | MQTT 代理密码 |
| 使用 TLS | 启用安全连接(端口 8883) |
3.4 高级设置
连接选项:
| 设置 | 推荐值 | 描述 |
|---|---|---|
| 保持活动 | 60 秒 | 心跳间隔 |
| 清除会话 | 真 | 每次连接时重新开始 |
| 自动连接 | 真 | 自动重新连接 |
3.5 保存代理配置
- 点击 "添加" 保存代理设置
- 点击 "完成" 关闭节点配置
- 代理配置 现在可用于所有 MQTT 节点
第 4 步:配置 MQTT 输入(订阅)
4.1 设置 MQTT 输入节点
- 选择您添加的 "mqtt in" 节点
- 双击进行配置
- 配置订阅设置:
4.2 MQTT 输入配置
订阅设置:
| 设置 | 示例值 | 描述 |
|---|---|---|
| 服务器 | 相机 MQTT 代理 | 选择已配置的代理 |
| 主题 | camera/commands | 订阅的主题 |
| QoS | 0 | 消息传递质量 |
| 输出 | 自动检测 | 消息格式 |
| 名称 | 命令监听器 | 节点标识符 |
4.3 主题命名约定
推荐的主题结构:
| 目的 | 主题示例 | 用法 |
|---|---|---|
| 命令 | camera/commands | 接收控制命令 |
| 状态请求 | camera/status/request | 状态信息请求 |
| 配置 | camera/config | 配置更改 |
4.4 配置消息处理
- 添加 "debug" 节点 以监控传入消息
- 连接: MQTT 输入 → 调试
- 配置调试节点 以显示完整消息
第 5 步:配置 MQTT 输出(发布)
5.1 添加 MQTT 输出节点
- 将 "mqtt out" 节点 拖到画布上
- 双击进行配置
- 选择相同的代理 配置
5.2 MQTT 输出配置
发布设置:
| 设置 | 示例值 | 描述 |
|---|---|---|
| 服务器 | 相机 MQTT 代理 | 与输入相同的代理 |
| 主题 | camera/responses | 相机响应的主题 |
| QoS | 0 | 消息传递质量 |
| 保留 | 假 | 不存储最后一条消息 |
| 名称 | 响应发布者 | 节点标识符 |
5.3 响应主题结构
推荐的响应主题:
| 响应类型 | 主题示例 | 用法 |
|---|---|---|
| 状态更新 | camera/status | 相机状态信息 |
| 结果 | camera/results | 检查结果 |
| 确认 | camera/ack | 命令确认 |
第 6 步:创建基本通信流程
6.1 构建输出消息流程
创建一个从相机发布消息的流程:
- 添加 "inject" 节点 以触发消息
- 添加 "function" 节点 以格式化消息
- 添加 "mqtt out" 节点 以发布
- 连接: Inject → Function → MQTT 输出
6.2 构建输入消息流程
创建一个单独的流程以接收消息:
- 添加 "mqtt in" 节点 以订阅
- 添加 "debug" 节点 以监控
- 连接: MQTT 输入 → 调试
6.3 配置注入节点
- 双击注入节点
- 配置设置:
- 名称: "发送测试消息"
- 负载: 时间戳
- 主题: (保持为空)
- 点击 "完成"
6.4 配置函数节点
简单消息格式化:
// Format outgoing message
msg.topic = "camera/status";
msg.payload = "Camera online - " + new Date().toISOString();
return msg;
- 双击函数节点
- 将上述代码 复制到 "消息到达时" 标签
- 名称: "格式化消息"
- 点击 "完成"
6.5 配置 MQTT 输出节点
- 双击 mqtt 输出节点
- 选择代理: 相机 MQTT 代理(之前配置)
- 主题: (保持为空 - 由函数节点设置)
- 名称: "发布状态"
- 点击 "完成"
6.6 配置 MQTT 输入节点
- 双击 mqtt 输入节点
- 选择代理: 相机 MQTT 代理
- 主题:
camera/commands - 名称: "命令监听器"
- 点击 "完成"
6.7 配置调试节点
- 双击调试节点
- 输出: 完整的 msg 对象
- 名称: "接收消息"
- 点击 "完成"
6.8 最终流程结构
您的完整流程应为:
输出: 注入 → 函数 → MQTT 输出
输入: MQTT 输入 → 调试
第 7 步:部署和测试配置
7.1 部署流程
- 点击 "部署" 按钮(右上角)
- 验证部署成功 消息
- 检查节点状态指示器:
- 绿色点: 已连接到代理
- 红色点: 连接失败
- 黄色点: 正在连接
7.2 测试内部通信
测试相机的 MQTT 发布:
- 点击注入按钮 发送测试消息
- 验证 MQTT 输出节点 显示活动
- 检查调试面板 是否有外部消息
7.3 外部测试(可选)
使用外部 MQTT 客户端测试向相机发送命令:
使用命令行工具:
# Send a test command to the camera
mosquitto_pub -h 192.168.0.100 -t "camera/commands" -m "test_command"
预期结果: 调试节点应在 Node-RED 调试面板中显示接收到的消息。
7.4 验证通信
检查以下方面:
| 测试 | 预期结果 | 状态 |
|---|---|---|
| 代理连接 | MQTT 节点上显示绿色状态 | ☐ |
| 消息发布 | 注入成功触发 MQTT 输出 | ☐ |
| 消息接收 | 调试显示外部消息 | ☐ |
| 重新连接 | 网络中断后自动重新连接 | ☐ |
第 8 步:故障排除 MQTT 问题
8.1 连接问题
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 无法连接到代理 | 红色状态指示器 | 检查代理 IP 和端口 |
| 身份验证失败 | 连接被拒绝 | 验证用户名/密码 |
| 网络超时 | 黄色连接状态 | 检查网络连接 |
| 防火墙阻塞 | 无连接尝试 | 打开 MQTT 端口 |
8.2 消息问题
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 未接收到消息 | 调试显示无内容 | 检查主题订阅 |
| 消息未发布 | 外部客户端未看到内容 | 验证发布主题 |
| 消息格式错误 | 解析失败 | 使用简单文本消息 |
| 丢失消息 | 不稳定的交付 | 检查代理连接 |
8.3 性能问题
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 高延迟 | 消息传递延迟 | 检查代理性能 |
| 连接中断 | 经常重新连接 | 调整保持活动设置 |
| 消息洪泛 | 代理过载 | 实施消息限流 |
8.4 调试技术
系统化故障排除:
- 检查 Node-RED 中的代理连接状态
- 监控 Node-RED 调试面板 以查看消息流
- 在复杂数据之前使用简单文本消息
- 使用 ping 验证网络连接
- 在高级流程之前测试基本主题
成功!您的 MQTT 通信已准备就绪
您的 MQTT 通信系统现在可以:
- 连接到具有适当身份验证的 MQTT 代理
- 订阅主题 以接收命令和数据
- 发布消息 以进行状态更新和响应
- 处理 JSON 消息格式 以实现结构化通信
- 在网络中断后自动重新连接
- 支持多种 QoS 级别 以满足不同消息优先级
持续维护
定期系统检查
- 监控 Node-RED 中的代理连接状态
- 使用测试消息验证消息传递
- 检查代理日志 以查找任何错误模式
- 根据需要更新身份验证 凭据
性能监控
- 跟踪消息延迟 和交付时间
- 监控代理资源使用情况 以实现可扩展性
- 分析主题使用模式 以进行优化
- 根据实际需求审查 QoS 设置
下一步
在设置基本 MQTT 通信后:
- 为您的应用程序实施特定的消息工作流
- 设置主题层次结构 以实现有序通信
- 添加安全措施 如 TLS 加密
- 使用已建立的 MQTT 协议与外部系统集成
- 创建监控仪表板 以查看系统健康状况
自动生成 MQTT 流
集成构建器 可以根据普通英语描述生成完整的 MQTT 通信流。描述您的消息模式(例如,“将检验结果发布到带有合格/不合格状态和置信度分数的 MQTT 主题”),并在几秒钟内获得可投入生产的 Node-RED 流。