跳到主要內容

AI 驅動文件

您想了解什麼?

MQTT

OV Spark Pro 內建 MQTT 客戶端。它可以連線到您所在網路或雲端的 broker,並能:

  • 將每次檢測結果以 JSON 格式釋出,無需編寫任何指令碼
  • 釋出 心跳 和 線上狀態
  • 接收值(例如當前批次號)到變數中

支援 MQTT 3.1.1 和 5,可使用純 TCP、TLS 或雙向 TLS(客戶端證書)。

開啟 Integration > Data Connectors 並選擇 MQTT。

MQTT 概覽:傳送結果、接收值、編寫自定義訊息指令碼以及 broker 型別

設定步驟​

設定分為三步。

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:地址、埠、MQTT 版本、安全性和連線檢查

設定說明
Address 和 Portbroker 的主機名或 IP 地址。預設埠 1883
MQTT version5(預設)或 3.1.1
SecurityNone、TLS 或 Mutual TLS(客戶端證書)。不帶 CA 證書的 TLS 使用相機內建的信任儲存;雙向 TLS 需要 CA、客戶端證書和客戶端金鑰
使用者名稱和密碼如果 broker 允許匿名連線,則留空
Advanced客戶端 ID(預設為相機序列號)、保活時間(30 秒)和清理會話(開啟)

連線檢查會在您停止輸入一秒後執行:它會依次查詢主機名、連線埠、檢查 TLS 並登入。每一步按下儲存並繼續後設定即被儲存,MQTT 在完成第 3 步之前保持關閉狀態。

跨工廠網路時請使用 TLS

None 會以未加密方式傳送所有內容,包括密碼。在隔離的裝置網路中可以使用。如果流量跨越工廠或辦公網路,請使用 TLS;對於需要客戶端證書的雲 broker,請使用雙向 TLS。

2. 選擇要傳送的內容​

訊息預設主題說明
檢測結果overview/<serial>/results每次生產檢測傳送一條訊息,使用您選擇的 QoS(預設 1)。Summary 不包含各工具的 detail;Full 則包含
心跳overview/<serial>/heartbeat每 N 秒一次(5 秒或以上,或關閉),QoS 0
線上狀態overview/<serial>/status保留的 {"status":"online"},以及相機掉線時 broker 傳送的遺囑訊息 {"status":"offline"}

您可以修改每個主題,例如改為 plant/line3/results。

3. 開啟 MQTT​

開啟 MQTT,然後在 Monitor > Topics and messages 下檢視傳送的每條訊息。

結果不會保留

結果訊息在釋出時未啟用 retain,因此後連線的訂閱者不會將舊結果當作新訊息接收。如需保留最新結果,請在相機指令碼中使用 retain: true 自行釋出,或通過 HTTP API 讀取。

結果訊息的內容​

MQTT、HTTP API 和相機指令碼的 onResult 使用相同的文件結構。一個簡化後的 Full 結果示例:

{
"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_error
  • rules 是規則的判定結果,即使最終由指令碼決定也會提供
  • 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 匯入後將處於關閉狀態。否則將保留源端的開關設定,這樣若匯入到可訪問匿名 broker 的相機上,便可立即開始釋出。每次匯入後請檢查 Data Connectors。

後續閱讀​