Chuyển đến nội dung chính

TÀI LIỆU ĐƯỢC HỖ TRỢ BỞI AI

Bạn muốn biết điều gì?

MQTT

OV Spark có sẵn MQTT client tích hợp. Nó kết nối đến broker của bạn, trên mạng nội bộ hoặc trên cloud, và:

  • publish mọi kết quả inspection dưới dạng JSON, không cần script nào cả
  • publish một heartbeat và trạng thái online
  • nhận các giá trị, chẳng hạn như số lô hiện tại, vào biến

Hỗ trợ MQTT 3.1.1 và 5, với TCP thuần, TLS hoặc mutual TLS (chứng chỉ client).

Mở Integration > Data Connectors và chọn MQTT.

Tổng quan MQTT: gửi kết quả, nhận giá trị, viết script cho các message của riêng bạn, và các loại broker

Thiết lập​

Thiết lập gồm ba bước.

1. Kết nối đến broker​

Chọn loại broker để điền sẵn các thiết lập thông thường, mà bạn có thể thay đổi:

Loại brokerThông thường
Plant broker (Mosquitto, HiveMQ, EMQX)Port 1883, hoặc 8883 với TLS
Ignition / SCADA (Ignition MQTT Distributor và tương tự)Port 1883
Cloud broker (AWS IoT, Azure, HiveMQ Cloud và tương tự)Port 8883 với TLS
Loại khácBất kỳ broker MQTT 3.1.1 hoặc 5 nào; bạn tự thiết lập từng trường

Kết nối đến broker: địa chỉ, port, phiên bản MQTT, bảo mật và kiểm tra kết nối

Thiết lậpGhi chú
Address và PortTên host hoặc địa chỉ IP của broker. Port mặc định 1883
MQTT version5 (mặc định) hoặc 3.1.1
SecurityNone, TLS, hoặc Mutual TLS (chứng chỉ client). TLS không có chứng chỉ CA sử dụng trust store tích hợp của camera; mutual TLS cần một CA, một chứng chỉ client và một client key
Username và passwordĐể trống nếu broker cho phép kết nối ẩn danh
AdvancedClient ID (mặc định là số serial của camera), keep-alive (30 s) và clean session (bật)

Kiểm tra kết nối chạy một giây sau khi bạn ngừng gõ: nó tra cứu tên host, kết nối đến port, kiểm tra TLS và đăng nhập, từng bước một. Các thiết lập được lưu khi bạn nhấn Save and continue tại mỗi bước, và MQTT vẫn tắt cho đến bước 3.

Sử dụng TLS trên mạng nhà máy

None gửi mọi thứ không mã hóa, bao gồm cả password. Điều đó chấp nhận được trên mạng máy cô lập. Sử dụng TLS nếu lưu lượng đi qua mạng nhà máy hoặc văn phòng, và mutual TLS cho các cloud broker yêu cầu chứng chỉ client.

2. Chọn nội dung cần gửi​

MessageTopic mặc địnhGhi chú
Inspection resultsoverview/<serial>/resultsMột message cho mỗi inspection trong production mode, với QoS bạn chọn (mặc định là 1). Summary bỏ qua detail của từng tool; Full bao gồm cả nó
Heartbeatoverview/<serial>/heartbeatMỗi N giây (5 trở lên, hoặc tắt), với QoS 0
Online statusoverview/<serial>/statusMột {"status":"online"} được retained, và một last-will {"status":"offline"} mà broker gửi nếu camera mất kết nối

Bạn có thể thay đổi từng topic, ví dụ thành plant/line3/results.

3. Bật MQTT​

Bật MQTT lên, rồi theo dõi mọi message được gửi đi tại Monitor > Topics and messages.

Kết quả không được retained

Các message kết quả được publish với retain tắt, nên một subscriber kết nối sau sẽ không nhận được kết quả cũ như thể nó là mới. Để giữ kết quả cuối cùng khả dụng, hãy tự publish nó từ camera script với retain: true, hoặc đọc nó từ HTTP API.

Message kết quả trông như thế nào​

Cùng một document được dùng bởi MQTT, HTTP API và onResult của camera script. Một kết quả Full, rút gọn:

{
"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 cho biết điều gì đã quyết định verdict: các rule, recipe script, hoặc script_error khi script gặp lỗi
  • rules là verdict của các rule, kể cả khi script là bên quyết định
  • vars chứa các biến mà inspection đã lưu
  • image.url lấy hình ảnh qua HTTP API

Heartbeat nhỏ gọn:

{"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"}

Nhận giá trị​

Để đưa một giá trị vào, hãy khai báo một biến với MQTT làm nguồn: topic, và đối với JSON là path đến field. Mỗi inspection sau đó sẽ lưu giá trị mới nhất. Đối với bất kỳ điều gì phức tạp hơn, chẳng hạn như chọn một field từ message của vendor hoặc trả lời các request, hãy sử dụng camera script.

Export đến ở trạng thái tắt

Các thiết lập MQTT đi kèm với recipe export, nhưng password và chứng chỉ không bao giờ được export. Nếu camera nguồn sử dụng credentials mà camera đích không có, MQTT đến ở trạng thái tắt. Ngược lại, nó giữ trạng thái bật hoặc tắt của nguồn, nên một import vào camera có thể truy cập broker ẩn danh có thể bắt đầu publish ngay lập tức. Hãy kiểm tra Data Connectors sau mỗi lần import.

Tiếp theo đi đâu​