AI 驅動文件
您想了解什麼?
MQTT 通訊設定
本指南向您展示如何使用 Node-RED 在 OV10i 攝像頭與外部裝置之間配置 MQTT 通訊。MQTT 為物聯網應用和遠端裝置通訊提供輕量、可靠的訊息傳輸。
何時使用 MQTT 通訊: 物聯網裝置整合、遠端監控系統、釋出/訂閱訊息模式、低頻寬環境、分散式感測器網路,或者需要具有自動重連的可靠訊息傳遞時。
跳過手動設定
用簡單的英文描述您的 MQTT 整合,Auto-Integration Builder 將在幾秒內為您生成完整的 Node-RED 流程。
先決條件
- OV10i 攝像頭系統已設定並連線
- 攝像頭與 MQTT broker 之間的網路連通性
- 可用的 MQTT broker(本地或基於雲)
- 對 MQTT 概念的基本理解(topics、publish/subscribe)
- 攝像頭上已配置活動程式
MQTT 通訊概覽
MQTT 關鍵概念:
- Broker: 在客戶端之間路由訊息的中央伺服器
- Topics: 訊息類別(例如 "camera/status"、"commands/trigger")
- Publish: 向 topic 傳送訊息
- Subscribe: 從 topic 接收訊息
- QoS: 服務質量級別(0、1、2)
第一步:驗證網路配置
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 | 不適用 | 必須能到達 broker |
| MQTT Broker | 192.168.0.200 | 1883 | 標準 MQTT 埠 |
| 客戶端裝置 | 192.168.0.xxx | 可變 | 任何訂閱的裝置 |
第二步:訪問 Node-RED 編輯器
2.1 導航至 IO模組
- 在程式編輯器中開啟您的活動程式
- 點選 Configure IO 或在麵包屑選單中選擇 IO Block,進入 Node-RED 編輯器
2.2 驗證 MQTT 節點可用
檢查 Node-RED 調色盤中的 MQTT 節點:
- mqtt in - 訂閱 MQTT topics
- mqtt out - 釋出到 MQTT topics
檢查點: 您應在左側面板的 Network 部分看到 MQTT 節點。
第三步:配置 MQTT Broker 連線
3.1 新增 MQTT Broker 配置
- 將 "mqtt in" 節點拖動到畫布上(用於初始設定)
- 雙擊節點開啟配置
- 點選 Server 欄位旁的鉛筆圖示
- 點選 "Add new mqtt-broker"
3.2 配置 Broker 設定
基本 Broker 配置:
| 設定 | 值 | 說明 |
|---|---|---|
| Name | Camera MQTT Broker | 描述性識別符號 |
| Server | 192.168.0.200 | MQTT broker IP 地址 |
| Port | 1883 | 標準 MQTT 埠 |
| Protocol | MQTT V3.1.1 | 推薦版本 |
| Client ID | (自動生成) | 留空以自動生成 |
3.3 身份驗證設定(如需要)
如果代理需要身份驗證:
| 設定 | 描述 |
|---|---|
| Username | MQTT 代理使用者名稱 |
| Password | MQTT 代理密碼 |
| Use TLS | 啟用安全連線(埠 8883) |
3.4 高階設定
連線選項:
| 設定 | 推薦值 | 描述 |
|---|---|---|
| Keep Alive | 60 秒 | 心跳間隔 |
| Clean Session | True | 每次連線重新開始 |
| Auto Connect | True | 自動重新連線 |
3.5 儲存代理配置
- 點選"Add" 儲存代理設定
- 點選"Done" 關閉節點配置
- 代理配置現在可用於所有 MQTT 節點
第 4 步:配置 MQTT 輸入(訂閱)
4.1 設定 MQTT In 節點
- 選擇您新增的"mqtt in"節點
- 雙擊進行配置
- 配置訂閱設定:
4.2 MQTT In 配置
訂閱設定:
| 設定 | 示例值 | 描述 |
|---|---|---|
| Server | Camera MQTT Broker | 選擇已配置的代理 |
| Topic | camera/commands | 要訂閱的主題 |
| QoS | 0 | 訊息傳遞質量 |
| Output | auto-detect | 訊息格式 |
| Name | Command Listener | 節點識別符號 |
4.3 主題命名約定
推薦的主題結構:
| 用途 | 主題示例 | 使用場景 |
|---|---|---|
| 命令 | camera/commands | 接收控制命令 |
| 狀態請求 | camera/status/request | 狀態資訊請求 |
| 配置 | camera/config | 配置變更 |
4.4 配置訊息處理
- 新增"debug"節點以監控傳入訊息
- 連線: MQTT In → Debug
- 配置 debug 節點以顯示完整訊息
第 5 步:配置 MQTT 輸出(釋出)
5.1 新增 MQTT Out 節點
- 將"mqtt out"節點拖動到畫布上
- 雙擊進行配置
- 選擇相同的代理配置
5.2 MQTT Out 配置
釋出設定:
| 設定 | 示例值 | 描述 |
|---|---|---|
| Server | Camera MQTT Broker | 與輸入相同的代理 |
| Topic | camera/responses | 相機響應的主題 |
| QoS | 0 | 訊息傳遞質量 |
| Retain | False | 不儲存最後一條訊息 |
| Name | Response Publisher | 節點識別符號 |
5.3 響應主題結構
推薦的響應主題:
| 響應型別 | 主題示例 | 使用場景 |
|---|---|---|
| 狀態更新 | camera/status | 相機狀態資訊 |
| 結果 | camera/results | 檢查結果 |
| 確認 | camera/ack | 命令確認 |
第 6 步:建立基本通訊流程
6.1 構建傳出訊息流程
建立一個流程以從相機發布訊息:
- 新增"inject"節點用於觸發訊息
- 新增"function"節點用於訊息格式化
- 新增"mqtt out"節點用於釋出
- 連線: Inject → Function → MQTT Out
6.2 構建傳入訊息流程
建立一個獨立的流程以接收訊息:
- 新增"mqtt in"節點用於訂閱
- 新增"debug"節點用於監控
- 連線: MQTT In → Debug
6.3 配置 Inject 節點
- 雙擊 inject 節點
- 配置設定:
- Name: "Send Test Message"
- Payload: Timestamp
- Topic: (留空)
- 點選 "Done"
6.4 配置 Function 節點
簡單的訊息格式化:
// Format outgoing message
msg.topic = "camera/status";
msg.payload = "Camera online - " + new Date().toISOString();
return msg;
- 雙擊 function 節點
- 將上述程式碼複製到 "On Message" 選項卡
- Name: "Format Message"
- 點選 "Done"
6.5 配置 MQTT Out 節點
- 雙擊 mqtt out 節點
- 選擇 broker: Camera MQTT Broker(先前已配置)
- Topic: (留空 - 由 function 節點設定)
- Name: "Publish Status"
- 點選 "Done"
6.6 配置 MQTT In 節點
- 雙擊 mqtt in 節點
- 選擇 broker: Camera MQTT Broker
- Topic:
camera/commands - Name: "Command Listener"
- 點選 "Done"
6.7 配置 Debug 節點
- 雙擊 debug 節點
- Output: Complete msg object
- Name: "Incoming Messages"
- 點選 "Done"
6.8 最終流程結構
完整的流程應為:
傳送方向: Inject → Function → MQTT Out 接收方向: MQTT In → Debug
第 7 步:部署並測試配置
7.1 部署流程
- 點選 "Deploy" 按鈕(右上角)
- 確認部署成功訊息
- 檢查節點狀態指示燈:
- 綠點: 已連線到 broker
- 紅點: 連線失敗
- 黃點: 正在連線
7.2 測試內部通訊
測試相機的 MQTT 釋出功能:
- 點選 inject 按鈕傳送測試訊息
- 確認 MQTT Out 節點顯示活動狀態
- 檢查 debug 面板中是否有外部訊息
7.3 外部測試(可選)
使用外部 MQTT 客戶端向相機傳送命令:
使用命令列工具:
# Send a test command to the camera
mosquitto_pub -h 192.168.0.100 -t "camera/commands" -m "test_command"
預期結果: debug 節點應在 Node-RED 除錯面板中顯示接收到的訊息。
7.4 驗證通訊
檢查以下方面:
| 測試 | 預期結果 | 狀態 |
|---|---|---|
| Broker 連線 | MQTT 節點顯示綠色狀態 | ☐ |
| 訊息釋出 | Inject 成功觸發 MQTT Out | ☐ |
| 訊息接收 | Debug 顯示外部訊息 | ☐ |
| 重新連線 | 網路中斷後自動重連 | ☐ |
第 8 步:MQTT 問題故障排除
8.1 連線問題
| 問題 | 症狀 | 解決方案 |
|---|---|---|
| 無法連線到 broker | 紅色狀態指示燈 | 檢查 broker IP 和埠 |
| 身份驗證失敗 | 連線被拒絕 | 驗證使用者名稱/密碼 |
| 網路超時 | 黃色連線中狀態 | 檢查網路連通性 |
| 防火牆阻止 | 無連線嘗試 | 開放 MQTT 埠 |
8.2 訊息問題
| 問題 | 症狀 | 解決方案 |
|---|---|---|
| 未收到訊息 | Debug 無顯示 | 檢查主題訂閱 |
| 訊息未釋出 | 外部客戶端未收到 | 驗證釋出主題 |
| 訊息格式錯誤 | 解析失敗 | 使用簡單文字訊息 |
| 訊息丟失 | 傳輸不穩定 | 檢查 broker 連線 |
8.3 效能問題
| 問題 | 症狀 | 解決方案 |
|---|---|---|
| 高延遲 | 訊息傳遞延遲 | 檢查 broker 效能 |
| 連線中斷 | 頻繁重連 | 調整 keep-alive 設定 |
| 訊息氾濫 | broker 過載 | 實施訊息節流 |
8.4 除錯技巧
系統化故障排除:
- 在 Node-RED 中檢查 broker 連線狀態
- 監控 Node-RED 除錯面板以檢視訊息流
- 在處理複雜資料前使用簡單的文字訊息
- 使用 ping 驗證網路連通性
- 在進行高階流程前使用基本主題進行測試
成功!您的 MQTT 通訊已就緒
您的 MQTT 通訊系統現在可以:
- 連線到 MQTT broker 並進行適當的身份驗證
- 訂閱主題以接收命令和資料
- 釋出訊息以進行狀態更新和響應
- 處理 JSON 訊息格式以實現結構化通訊
- 在網路中斷後自動重連
- 支援多種 QoS 級別以適應不同訊息優先順序
日常維護
定期系統檢查
- 在 Node-RED 中監控 broker 連線狀態
- 使用測試訊息驗證訊息傳遞
- 檢查 broker 日誌以發現錯誤模式
- 根據需要更新身份驗證憑據
效能監控
- 跟蹤訊息延遲和傳遞時間
- 監控 broker 資源使用情況以評估可擴充套件性
- 分析主題使用模式以進行最佳化
- 根據實際需求審查 QoS 設定
後續步驟
完成基本 MQTT 通訊設定後:
- 為您的應用實施特定的訊息工作流
- 設定主題層次結構以實現有組織的通訊
- 新增安全措施,例如 TLS 加密
- 使用已建立的 MQTT 協議與外部系統整合
- 建立監控儀表板以監控系統健康狀況
自動生成 MQTT 流程
Integration Builder 可以根據純英文描述生成完整的 MQTT 通訊流程。描述您的訊息模式(例如,"將檢測結果釋出到 MQTT 主題,包含 pass/fail 狀態和置信度分數"),即可在幾秒內獲得一個可用於生產的 Node-RED 流程。