AI 驅動文件
您想了解什麼?
MQTT
OV Spark 內建 MQTT 客戶端。它連線到您的 broker(位於您的網路或雲端),並:
- 釋出每個檢測結果(JSON 格式),完全無需編寫指令碼
- 釋出心跳和線上狀態
- 接收值(例如當前批次號)到變數中
它支援 MQTT 3.1.1 和 5,支援普通 TCP、TLS 或雙向 TLS(客戶端證書)。
開啟 Integration > Data Connectors,選擇 MQTT。

設定方法
設定分為三步。
1. 連線到 broker
選擇 broker 型別以填充典型設定,這些設定可修改:
| Broker 型別 | 典型配置 |
|---|---|
| 工廠 broker(Mosquitto、HiveMQ、EMQX) | 埠 1883,或使用 TLS 的 8883 |
| Ignition / SCADA(Ignition MQTT Distributor 及類似產品) | 埠 1883 |
| 雲 broker(AWS IoT、Azure、HiveMQ Cloud 及類似產品) | 埠 8883,使用 TLS |
| 其他 | 任何 MQTT 3.1.1 或 5 broker;所有欄位均需手動設定 |

| 設定 | 說明 |
|---|---|
| 地址和埠 | Broker 的主機名或 IP 地址。預設埠 1883 |
| MQTT 版本 | 5(預設)或 3.1.1 |
| 安全性 | 無、TLS 或雙向 TLS(客戶端證書)。不帶 CA 證書的 TLS 使用相機內建的信任庫;雙向 TLS 需要 CA、客戶端證書和客戶端金鑰 |
| 使用者名稱和密碼 | 如果 broker 允許匿名連線,則留空 |
| 高階 | 客戶端 ID(預設為相機序列號)、保活時間(30 秒)和清除會話(開啟) |
連線檢查在您停止輸入一秒後執行:它會逐步查詢主機名、連線埠、檢查 TLS 並登入。每一步按下儲存並繼續時,設定會被儲存,MQTT 在第 3 步之前保持關閉。
跨工廠網路時請使用 TLS
無會以未加密方式傳送所有內容,包括密碼。這在隔離的裝置網路中可以接受。如果流量跨越工廠或辦公網路,請使用 TLS;對於需要客戶端證書的雲 broker,請使用雙向 TLS。
2. 選擇要傳送的內容
| 訊息 | 預設主題 | 說明 |
|---|---|---|
| 檢測結果 | overview/<serial>/results | 每次生產檢測傳送一條訊息,使用您選擇的 QoS(預設為 1)。摘要不包含每個工具的 detail;完整則包含 |
| 心跳 | overview/<serial>/heartbeat | 每 N 秒一次(5 秒及以上,或關閉),QoS 0 |
| 線上狀態 | overview/<serial>/status | 保留訊息 {"status":"online"},以及遺囑訊息 {"status":"offline"},當相機掉線時由 broker 傳送 |
您可以修改每個主題,例如改為 plant/line3/results。
3. 開啟 MQTT
開啟 MQTT,然後在 Monitor > Topics and messages 下檢視每條訊息的發出情況。
結果訊息不保留
結果訊息的結構
MQTT、HTTP API 和相機指令碼的 onResult 使用同一份文件。一個完整結果(已精簡):
{
"schema_version": 1,
"serial": "5F9FE801",
"id": "01a17216-f035-7ec5-adae-b90b6a0868a8",
"recipe": { "id": 3, "name": "Kit tray" },
"trigger": { "id": 420596, "source": "plc" },
"image": { "width": 2592, "height": 1944, "url": "/api/integration/v1/results/01a17216-f035-7ec5-adae-b90b6a0868a8/image" },
"captured_at": "2026-10-25T08:04:28.341Z",
"processing_ms": 82,
"judgment": "fail",
"pass": false,
"not_inspected": false,
"reason": "serial differs",
"judgment_source": "script",
"rules": { "judgment": "pass", "pass": true, "not_inspected": false },
"vars": { "serial": "SN-24-118734" },
"tools": [
{
"id": "01a15f8b-da07-7e42-8b3e-d3edaff79428",
"type": "classical.barcode",
"name": "Label",
"plc_slot": 1,
"judgment": "pass",
"score": 1,
"execute_ms": 4,
"detail": { "decoded": true, "data": "0104012345678901", "symbology": "data_matrix" }
}
],
"metadata": {},
"tags": [],
"plc_inspection_id": 1234,
"phase": "production"
}
judgment_source指明由誰判定結果:規則、程式指令碼,或指令碼失敗時的script_errorrules為規則的判定結果,即使最終由指令碼決定也會包含vars儲存本次檢測儲存的變數image.url通過 HTTP API 獲取影象
心跳訊息很小:
{"schema_version":1,"serial":"5F9FE801","hostname":"line3-cam","recipe":"Kit tray","phase":"production","uptime_s":3600,"mqtt":"connected","ts":"2026-10-25T08:04:28.341Z"}
接收數值
要引入一個值,請宣告一個以 MQTT 為來源的變數:指定主題,對於 JSON 還需指定欄位路徑。之後每次檢測都會儲存最新的值。如需更復雜的處理,例如從廠商訊息中提取某個欄位或響應請求,請使用相機指令碼。
匯入時預設關閉
MQTT 設定會隨程式匯出一同遷移,但密碼和證書永遠不會被匯出。如果源相機使用了目標相機沒有的憑據,MQTT 匯入後將處於關閉狀態。否則將保留源相機的開關設定,因此匯入到可訪問匿名代理的相機時可立即開始釋出。每次匯入後請檢查 Data Connectors。