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 流。