AI 驱动文档
您想了解什么?
MQTT
OV Spark Pro 内置 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;需自行设置每个字段 |

| 设置 | 说明 |
|---|---|
| Address 和 Port | broker 的主机名或 IP 地址。默认端口 1883 |
| MQTT version | 5(默认)或 3.1.1 |
| Security | None、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 下查看发送的每条消息。
结果不会保留
结果消息的内容
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_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 导入后将处于关闭状态。否则将保留源端的开关设置,这样若导入到可访问匿名 broker 的相机上,便可立即开始发布。每次导入后请检查 Data Connectors。