本章节介绍 Inteagle 支持的设备类型及其技术参数。
设备列表
| 类型 | 说明 | 文档 |
|---|---|---|
| 视觉位移计(VDM) | 非接触式位移监测设备 | 查看详情 → |
更多设备类型持续更新中…
视觉位移计是 Inteagle 研发的非接触式位移监测设备,可以实时监测目标结构物的位移变化。
说明:有两种方式:MQTT和modbus. modbus接入方式正在开发中。
| 文档 | 说明 |
|---|---|
| 快速入门 | 5 分钟接入 VDM 设备数据 |
| API参考 | API 列表、错误码、数据格式 |
| 型号 | 视觉传感器 | 云台类型 | 说明 |
|---|---|---|---|
| V1 | 单目 | 无 | 固定式,基础款 |
| V2W | 双目 | 无 | 固定式,视野加倍 |
| V2K | 双目 | 无 | 固定式,安装时可自由选择视野角度 |
| O1 | 单目 | 单轴 | 旋转式,仅水平方向可旋转 |
| X1 | 单目 | 双轴 | 旋转式,水平和竖向方向均可旋转 |
| X2W | 双目 | 双轴 | 旋转式,水平和竖向方向均可旋转,视野加倍 |
说明:
- 旋转式型号具有巡航监测功能
- 双目型号有
sensorId参数
本指南帮助您快速接入 VDM 位移数据,适用于系统集成开发者。
flowchart LR
A[1. App 配置<br>MQTT 连接] --> B[2. 订阅<br>设备主题]
B --> C[3. 设备上线<br>上报属性]
C --> D[4. 接收<br>位移数据]
D --> E[5. 接收告警<br>可选]通过 App 配置设备连接到您的 MQTT 服务器:
配置完成后,从设备标签或 App 获取:
XXXXXXXXXXXXvdm/{deviceId}/rpc/resp # RPC 响应
vdm/{deviceId}/telemetry # 遥测数据:累积位移变化、温湿度等环境数据、电压等设备状态数据
vdm/{deviceId}/attributes # 属性上报
vdm/{deviceId}/event # 事件通知
vdm/{deviceId}/3A # 预警、告警和行动等3A(Alert, Alarm和Action)通知
vdm/{deviceId}/image # 图片
示例(设备 ID 为 XXXXXXXXXXXX):
vdm/XXXXXXXXXXXX/telemetry
vdm/XXXXXXXXXXXX/3A
设备连接 MQTT 后,自动上报只读属性到 attributes 主题:
{
"deviceId": "XXXXXXXXXXXX",
"deviceModel": "V1",
"fwVer": "1.2.3",
"measureStatus": "Idle"
}
收到属性上报表示设备已上线,可据此判断设备连接状态。
设备测量运行时,自动推送位移数据:
{
"disp": {
"t": 1734567890,
"d": {
"1": {
"type": "local",
"dx": [0.01, 0.02, 0.03],
"dy": [0.00, 0.01, 0.01]
}
}
}
}
| 字段 | 说明 |
|---|---|
t | Unix 时间戳(秒) |
1 | 标靶 ID |
dx | X 方向累积位移变化(mm) |
dy | Y 方向累积位移变化(mm) |
import paho.mqtt.client as mqtt
import json
DEVICE_ID = "XXXXXXXXXXXX"
BROKER = "mqtt.example.com"
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
if "disp" in data:
t = data["disp"]["t"]
# 遍历所有标靶(动态数量,只包含有数据的标靶)
for target_id, values in data["disp"]["d"].items():
dx = values.get("dx", [])
dy = values.get("dy", [])
print(f"[{t}] 标靶{target_id}: dx={dx}, dy={dy}")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883)
client.subscribe(f"vdm/{DEVICE_ID}/telemetry")
client.loop_forever()const mqtt = require('mqtt');
const DEVICE_ID = 'XXXXXXXXXXXX';
const client = mqtt.connect('mqtt://mqtt.example.com');
client.on('connect', () => {
client.subscribe(`vdm/${DEVICE_ID}/telemetry`);
});
client.on('message', (topic, message) => {
const data = JSON.parse(message.toString());
if (data.disp) {
const { t, d } = data.disp;
// 遍历所有标靶(动态数量,只包含有数据的标靶)
for (const [targetId, values] of Object.entries(d)) {
console.log(`[${t}] 标靶${targetId}:`, values);
}
}
});设备监测的标靶如果有累积位移变化超出了预先设置的3A(Alert, Alarm和Action)阈值,设备会自动报警。
| 类型 | 说明 |
|---|---|
DISPLACEMENT_EXCEEDED | 累积位移变化超限告警 |
TARGET_LOST | 标靶丢失告警 |
DEVICE_OFFLINE | 设备离线告警 |
LOW_BATTERY | 低电量告警 |
STORAGE_NEAR_FULL | 存储即将满 |
Q: 没有收到数据?
Q: 数据频率是多少?
sampleFreq)Q: 如何启动/停止测量?
详细 API 请参考各型号手册:
本章节介绍 VDM 设备的完整API参考,包括通信协议、API 列表、错误码等技术细节。
| 参数 | 值 |
|---|---|
| 协议 | MQTT v3.1.1 |
| Payload | JSON |
| 主题 | 方向 | 说明 |
|---|---|---|
vdm/{deviceId}/rpc/req | 下行 | RPC 指令 |
vdm/{deviceId}/rpc/resp | 上行 | RPC 响应 |
vdm/{deviceId}/telemetry | 上行 | 遥测数据 |
vdm/{deviceId}/attributes | 上行 | 属性上报 |
vdm/{deviceId}/event | 上行 | 事件上报 |
vdm/{deviceId}/3A | 上行 | 告警上报 |
vdm/{deviceId}/image | 上行 | 图片数据 |
| API | V1 | V2W | V2K | O1 | X1 | X2W |
|---|---|---|---|---|---|---|
| 基础 API | ||||||
| getAttr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| setAttr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| reboot | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| syncTime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 标靶管理 | ||||||
| initRefTargets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| addTargets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| getTargets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| setTargets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| deleteTargets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 测量控制 | ||||||
| startMeasurement | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| stopMeasurement | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| setLightLevel | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| getLightLevel | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| snapshot | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存储 | ||||||
| getStorageInfo | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| queryTelemetry | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uploadS3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 电机控制 | ||||||
| setMotorAngle | - | - | - | ✓ | ✓ | ✓ |
| getMotorAngle | - | - | - | ✓ | ✓ | ✓ |
| setMotorZero | - | - | - | ✓ | ✓ | ✓ |
| enableMotor | - | - | - | ✓ | ✓ | ✓ |
| disableMotor | - | - | - | ✓ | ✓ | ✓ |
| 巡航控制 | ||||||
| getCruisePaths | - | - | - | ✓ | ✓ | ✓ |
| setCruisePoint | - | - | - | ✓ | ✓ | ✓ |
| removeCruisePoint | - | - | - | ✓ | ✓ | ✓ |
| startPatrol | - | - | - | ✓ | ✓ | ✓ |
| stopPatrol | - | - | - | ✓ | ✓ | ✓ |
| getPatrolStatus | - | - | - | ✓ | ✓ | ✓ |
| 码 | 说明 | 适用型号 |
|---|---|---|
| 0 | 成功 | 全部 |
| 1 | 参数无效 | 全部 |
| 2 | 缺少必填参数 | 全部 |
| 100 | 标靶不存在 | 全部 |
| 102 | 标靶初始化失败 | 全部 |
| 104 | 标靶丢失 | 全部 |
| 200 | 测量未启动 | 全部 |
| 201 | 测量已在运行 | 全部 |
| 300 | 电机不可用 | O1, X1, X2W |
| 302 | 电机运动中 | O1, X1, X2W |
| 303 | 电机到达限位 | X1, X2W |
| 310 | 垂直电机不可用 | O1 |
| 400 | 巡航功能不可用 | O1, X1, X2W |
| 403 | 巡航已在运行 | O1, X1, X2W |
设备通过 image 主题上报图片。
主题: vdm/{deviceId}/image
Payload 结构:
[Header (8+ 字节)] + [JPEG 二进制数据]
| 偏移 | 长度 | 字段 | 说明 |
|---|---|---|---|
| 0 | 1 | version | 协议版本,当前 0x01 |
| 1 | 1 | headerLen | Header 总长度(字节) |
| 2 | 1 | sensorId | 视觉传感器 ID(单目为 0,双目为 0 或 1) |
| 3 | 1 | type | 图片类型(见下表) |
| 4 | 4 | timestamp | Unix 时间戳(uint32, 大端) |
| 8+ | - | imageData | JPEG 二进制数据 |
图片类型 (type):
| 值 | 类型 | 说明 |
|---|---|---|
| 0 | snapshot | RPC 触发的快照 |
| 1 | 3A | 告警触发的抓图 |
| 2 | periodic | 定时抓图 |
01 08 00 01 67 72 B3 D6 FF D8 FF E0 ...
│ │ │ │ └──────────┴─ timestamp: 1735533526
│ │ │ └─ type: 1 (3A)
│ │ └─ sensorId: 0
│ └─ headerLen: 8
└─ version: 1
| 项目 | 规格 |
|---|---|
| 格式 | JPEG |
| 最大分辨率 | 1280×720 (720p) |
| 典型大小 | 50KB - 200KB |
未来版本可在 timestamp 后追加字段,并相应增加 headerLen。解析时根据 headerLen 跳过不识别的字段,保证向后兼容。
型号: V1 | 版本: 1.0 | 更新: 2026-01-08
V1 是单目固定式视觉位移计。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
获取设备属性。不带 keys 参数时返回全部属性。
请求:
{"reqId": 1, "method": "getAttr", "params": {}}
或指定属性:
{"reqId": 1, "method": "getAttr", "params": {"keys": ["status", "sampleFreq"]}}
响应:
{
"reqId": 1,
"code": 0,
"data": {
"deviceId": "XXXXXXXXXXXX",
"deviceModel": "V1",
"fwVer": "1.2.3",
"resolution": "3840x2160",
"measureStatus": "Idle",
"sampleFreq": 10,
"exposure": "Middle",
"brightnessThr": 225,
"reportMetrics": ["dx", "dy"]
}
}
属性列表:
| 属性 | 类型 | 读写 | 说明 |
|---|---|---|---|
deviceId | String | R | 设备 ID |
deviceModel | String | R | 型号 |
fwVer | String | R | 固件版本 |
measureStatus | String | R | 测量状态 |
sampleFreq | Float | RW | 采样频率 (Hz) |
exposure | String | RW | 曝光档位:High/Middle/Low |
brightnessThr | Integer | RW | 发光强度阈值 (0-255) |
reportMetrics | Array | RW | 上报指标 |
设置设备属性。
请求:
{"reqId": 1, "method": "setAttr", "params": {
"sampleFreq": 5,
"reportMetrics": ["dx", "dy"]
}}
响应:
{"reqId": 1, "code": 0}
初始化参考标靶。会清除已有标靶。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
targets | Array | 是 | 标靶配置 |
targets[].targetId | String | 否 | 标靶 ID(不填则自动生成) |
targets[].roi | Object | 是 | ROI 区域 |
targets[].distance | Float | 是 | 测量距离 (m) |
请求:
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [{
"targetId": "1",
"roi": {"x": 1000, "y": 500, "width": 400, "height": 400},
"distance": 5.0
}]
}}
响应:
{"reqId": 1, "code": 0, "data": {"targetIds": ["1"]}}
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "2", "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["2"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"},
{"targetId": "2", "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0, "status": "tracking"}
]
}}
标靶状态:
| 状态 | 说明 |
|---|---|
tracking | 正常跟踪 |
lost | 标靶丢失 |
idle | 未启动测量 |
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [
{"targetId": "1", "distance": 5.5}
]
}}
响应:
{"reqId": 1, "code": 0}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
响应:
{"reqId": 1, "code": 0}
启动测量。
请求:
{"reqId": 1, "method": "startMeasurement", "params": {}}
响应:
{"reqId": 1, "code": 0}
停止测量。
请求:
{"reqId": 1, "method": "stopMeasurement", "params": {}}
响应:
{"reqId": 1, "code": 0}
设置补光灯发光挡位。
请求:
{"reqId": 1, "method": "setLightLevel", "params": {"level": 1}}
响应:
{"reqId": 1, "code": 0}
获取补光灯发光挡位。
请求:
{"reqId": 1, "method": "getLightLevel", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {"level": 1}}
测量运行时,设备按采样频率上报位移数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"type": "local","dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
d | - | 标靶数据字典 |
type | - | 数据的坐标系是全局还是局部。 |
dx | mm | X 方向位移变化 |
dy | mm | Y 方向位移变化 |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 报警 |
| 3 | action | 行动 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "measurementStarted",
"ts": 1734567890,
"data": {}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
订阅: vdm/{deviceId}/rpc/resp
订阅: vdm/{deviceId}/telemetry
订阅: vdm/{deviceId}/attributes
订阅: vdm/{deviceId}/event
订阅: vdm/{deviceId}/3A
订阅: vdm/{deviceId}/image
发布到 vdm/{deviceId}/rpc/req:
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}
{"reqId": 2, "method": "startMeasurement", "params": {}}
从 vdm/{deviceId}/telemetry 接收:
{"disp": {"t": 1734567890, "d": {"1": {"type": "local", "dx": [0.01, 0.02], "dy": [0.00, 0.01]}}}}
型号: V2W / V2W4M | 版本: 1.0 | 更新: 2026-01-08
V2W 系列是双目固定式视觉位移计,支持双视觉传感器同步测量。配合另一台设备可实现 3D 空间位移融合计算。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
双目设备需要指定 sensorId 参数。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
targets | Array | 是 | 标靶配置 |
targets[].targetId | String | 否 | 标靶 ID |
targets[].sensorId | Integer | 是 | 视觉传感器 ID (0 或 1) |
targets[].roi | Object | 是 | ROI 区域 |
targets[].distance | Float | 是 | 测量距离 (m) |
请求(V2W):
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0}
]
}}
请求(V2W4M):
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 500, "y": 300, "width": 200, "height": 200}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 600, "y": 350, "width": 200, "height": 200}, "distance": 5.0}
]
}}
注意: V2W4M 分辨率为 2560×1440,ROI 坐标需相应调整。
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "3", "sensorId": 0, "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["3"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"}
]
}}
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [
{"targetId": "1", "distance": 5.5}
]
}}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
设置补光灯发光挡位。V2W 为双目设备,有两个补光灯。
请求(批量设置不同发光强度):
{"reqId": 1, "method": "setLightLevel", "params": {
"lights": [
{"id": 0, "brightness": 5000},
{"id": 1, "brightness": 8000}
]
}}
请求(全部相同发光强度):
{"reqId": 1, "method": "setLightLevel", "params": {"brightness": 5000}}
支持配置 3D 融合上报指标。
请求:
{"reqId": 1, "method": "setAttr", "params": {
"reportMetrics": ["dx", "dy", "dz","tilt"]
}}
测量运行时,设备按采样频率上报位移数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02],"dy":[0.00,0.01],"dz":[0.01,0.02],"tilt":[0.00,0.01]}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
dx | mm | X 方向累积位移变化 |
dy | mm | Y 方向累积位移变化 |
dz | mm | Z 方向累积位移变化 |
tilt | 倾斜角 | ″(角秒) |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 告警 |
| 3 | action | 行动 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "measurementStarted",
"ts": 1734567890,
"data": {}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}
]
}}
{"reqId": 2, "method": "setAttr", "params": {"reportMetrics": ["dx", "dy", "sx", "sy", "sz"]}}
{"reqId": 3, "method": "startMeasurement", "params": {}}
型号: V2K | 版本: 1.0 | 更新: 2026-01-08
V2K 是双目固定式视觉位移计,双视觉传感器可独立调整角度,适用于需要灵活监测角度的场景。
与 V2W 的区别: V2K 双视觉传感器可朝向不同方向,因此各标靶距离可能不同。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
双视觉传感器可独立配置不同距离。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
targets | Array | 是 | 标靶配置 |
targets[].targetId | String | 否 | 标靶 ID |
targets[].sensorId | Integer | 是 | 视觉传感器 ID (0 或 1) |
targets[].roi | Object | 是 | ROI 区域 |
targets[].distance | Float | 是 | 测量距离 (m) |
请求(不同距离):
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 800, "y": 600, "width": 400, "height": 400}, "distance": 8.0}
]
}}
V2K 双视觉传感器可朝向不同方向,因此各标靶距离可能不同。
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "3", "sensorId": 0, "roi": {"x": 600, "y": 400, "width": 400, "height": 400}, "distance": 5.5}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["3"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"},
{"targetId": "2", "sensorId": 1, "roi": {"x": 800, "y": 600, "width": 400, "height": 400}, "distance": 8.0, "status": "tracking"}
]
}}
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [
{"targetId": "1", "distance": 5.5}
]
}}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
支持配置 3D 融合上报指标。
请求:
{"reqId": 1, "method": "setAttr", "params": {
"reportMetrics": ["dx", "dy", "sx", "sy", "sz"]
}}
| 指标 | 说明 |
|---|---|
dx, dy | 2D 位移 |
sx, sy, sz | 3D 空间位移(双设备融合) |
测量运行时,设备按采样频率上报累积位移变化数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02],"dy":[0.00,0.01],"sx":[0.01,0.02],"sy":[0.00,0.01],"sz":[0.00,0.00]}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
dx, dy | mm | 2D 位移 |
sx, sy, sz | mm | 3D 空间位移(双设备融合) |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 告警 |
| 3 | action | 紧急 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "measurementStarted",
"ts": 1734567890,
"data": {}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 800, "y": 600, "width": 400, "height": 400}, "distance": 8.0}
]
}}
{"reqId": 2, "method": "setAttr", "params": {"reportMetrics": ["dx", "dy", "sx", "sy", "sz"]}}
{"reqId": 3, "method": "startMeasurement", "params": {}}
型号: O1 | 版本: 1.0 | 更新: 2026-01-08
O1 是单目单轴旋转式视觉位移计,支持水平方向云台控制和巡航。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
| 方法 | 说明 |
|---|---|
setMotorAngle | 设置电机角度(仅 pan) |
getMotorAngle | 获取电机角度 |
setMotorZero | 设置电机零点 |
enableMotor | 启用电机 |
disableMotor | 禁用电机 |
| 方法 | 说明 |
|---|---|
getCruisePaths | 获取巡航路径 |
setCruisePoint | 设置巡航点 |
removeCruisePoint | 移除巡航点 |
startPatrol | 启动巡航 |
stopPatrol | 停止巡航 |
getPatrolStatus | 获取巡航状态 |
初始化参考标靶。
请求:
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "2", "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["2"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"}
]
}}
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [{"targetId": "1", "distance": 5.5}]
}}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
设置电机角度。
注意: O1 仅支持水平 (pan) 方向,不支持 tilt 参数。
参数:
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
pan | Float | -180 ~ 180 | 水平角度 (°) |
speed | Integer | 1-100 | 转动速度 (%) |
请求:
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "speed": 50}}
获取当前电机角度。
请求:
{"reqId": 1, "method": "getMotorAngle", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {"pan": 45.0}}
设置巡航点。
注意: O1 巡航点仅支持 pan 角度。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
pathId | Integer | 是 | 路径 ID |
pointId | Integer | 是 | 巡航点 ID |
pan | Float | 是 | 水平角度 |
targets | Array | 是 | 标靶 ID 列表 |
dwellTime | Integer | 否 | 停留时间 (秒) |
请求:
{"reqId": 1, "method": "setCruisePoint", "params": {
"pathId": 1,
"pointId": 1,
"pan": 45.0,
"targets": ["1"],
"dwellTime": 60
}}
启动巡航。
请求:
{"reqId": 1, "method": "startPatrol", "params": {"pathId": 1}}
停止巡航。
请求:
{"reqId": 1, "method": "stopPatrol", "params": {}}
测量运行时,设备按采样频率上报位移数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
dx | mm | X 方向位移 |
dy | mm | Y 方向位移 |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 告警 |
| 3 | action | 紧急 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "cruisePointReached",
"ts": 1734567890,
"data": {"pathId": 1, "pointId": 1}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
motorMoved | 电机移动完成 | {"pan": 45.0} |
cruisePointReached | 到达巡航点 | {"pathId": 1, "pointId": 1} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
| 300 | 电机不可用 |
| 302 | 电机运动中 |
| 310 | 垂直电机不可用(O1 不支持) |
| 400 | 巡航功能不可用 |
| 403 | 巡航已在运行 |
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0}}
{"reqId": 2, "method": "initRefTargets", "params": {
"targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}
{"reqId": 3, "method": "setCruisePoint", "params": {
"pathId": 1, "pointId": 1, "pan": 0, "targets": ["1"], "dwellTime": 60
}}
{"reqId": 4, "method": "startMeasurement", "params": {}}
型号: X1 | 版本: 1.0 | 更新: 2026-01-08
X1 是单目双轴旋转式视觉位移计,支持水平和垂直云台控制及自动巡航。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
| 方法 | 说明 |
|---|---|
setMotorAngle | 设置电机角度 |
getMotorAngle | 获取电机角度 |
setMotorZero | 设置电机零点 |
enableMotor | 启用电机 |
disableMotor | 禁用电机 |
| 方法 | 说明 |
|---|---|
getCruisePaths | 获取巡航路径 |
setCruisePoint | 设置巡航点 |
removeCruisePoint | 移除巡航点 |
startPatrol | 启动巡航 |
stopPatrol | 停止巡航 |
getPatrolStatus | 获取巡航状态 |
初始化参考标靶。
请求:
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "2", "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["2"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"}
]
}}
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [{"targetId": "1", "distance": 5.5}]
}}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
设置电机角度。
参数:
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
pan | Float | -180 ~ 180 | 水平角度 (°) |
tilt | Float | -90 ~ 90 | 垂直角度 (°) |
speed | Integer | 1-100 | 转动速度 (%) |
请求:
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "tilt": -10.0, "speed": 50}}
获取当前电机角度。
请求:
{"reqId": 1, "method": "getMotorAngle", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {"pan": 45.0, "tilt": -10.0}}
设置巡航点。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
pathId | Integer | 是 | 路径 ID |
pointId | Integer | 是 | 巡航点 ID |
pan | Float | 是 | 水平角度 |
tilt | Float | 是 | 垂直角度 |
targets | Array | 是 | 标靶 ID 列表 |
dwellTime | Integer | 否 | 停留时间 (秒) |
请求:
{"reqId": 1, "method": "setCruisePoint", "params": {
"pathId": 1,
"pointId": 1,
"pan": 45.0,
"tilt": -10.0,
"targets": ["1"],
"dwellTime": 60
}}
启动巡航。
请求:
{"reqId": 1, "method": "startPatrol", "params": {"pathId": 1}}
停止巡航。
请求:
{"reqId": 1, "method": "stopPatrol", "params": {}}
测量运行时,设备按采样频率上报位移数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
dx | mm | X 方向位移 |
dy | mm | Y 方向位移 |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 告警 |
| 3 | action | 紧急 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "cruisePointReached",
"ts": 1734567890,
"data": {"pathId": 1, "pointId": 1}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
motorMoved | 电机移动完成 | {"pan": 45.0, "tilt": -10.0} |
cruisePointReached | 到达巡航点 | {"pathId": 1, "pointId": 1} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
| 300 | 电机不可用 |
| 302 | 电机运动中 |
| 303 | 电机到达限位 |
| 400 | 巡航功能不可用 |
| 403 | 巡航已在运行 |
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0, "tilt": 0}}
{"reqId": 2, "method": "initRefTargets", "params": {
"targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}
{"reqId": 3, "method": "setCruisePoint", "params": {
"pathId": 1, "pointId": 1, "pan": 0, "tilt": 0, "targets": ["1"], "dwellTime": 60
}}
{"reqId": 4, "method": "startMeasurement", "params": {}}
型号: X2W / X2W4M | 版本: 1.0 | 更新: 2026-01-08
X2W 系列是双目旋转式视觉位移计,支持双轴云台和自动巡航,适用于多点巡航监测场景。
| 方法 | 说明 |
|---|---|
getAttr | 获取属性 |
setAttr | 设置属性 |
reboot | 重启设备 |
syncTime | 同步时间 |
| 方法 | 说明 |
|---|---|
initRefTargets | 初始化标靶 |
addTargets | 添加标靶 |
getTargets | 获取标靶列表 |
setTargets | 更新标靶配置 |
deleteTargets | 删除标靶 |
| 方法 | 说明 |
|---|---|
startMeasurement | 启动测量 |
stopMeasurement | 停止测量 |
setLightLevel | 设置补光灯发光挡位 |
getLightLevel | 获取补光灯发光挡位 |
snapshot | 获取快照 |
| 方法 | 说明 |
|---|---|
getStorageInfo | 获取存储信息 |
queryTelemetry | 查询历史数据 |
uploadS3 | 上传数据到 S3 |
| 方法 | 说明 |
|---|---|
setMotorAngle | 设置电机角度 |
getMotorAngle | 获取电机角度 |
setMotorZero | 设置电机零点 |
enableMotor | 启用电机 |
disableMotor | 禁用电机 |
| 方法 | 说明 |
|---|---|
getCruisePaths | 获取巡航路径 |
setCruisePoint | 设置巡航点 |
removeCruisePoint | 移除巡航点 |
startPatrol | 启动巡航 |
stopPatrol | 停止巡航 |
getPatrolStatus | 获取巡航状态 |
双目设备需要指定 sensorId 参数。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
targets | Array | 是 | 标靶配置 |
targets[].targetId | String | 否 | 标靶 ID |
targets[].sensorId | Integer | 是 | 视觉传感器 ID (0 或 1) |
targets[].roi | Object | 是 | ROI 区域 |
targets[].distance | Float | 是 | 测量距离 (m) |
请求(X2W):
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0}
]
}}
请求(X2W4M):
{"reqId": 1, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 500, "y": 300, "width": 200, "height": 200}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 600, "y": 350, "width": 200, "height": 200}, "distance": 5.0}
]
}}
注意: X2W4M 分辨率为 2560×1440,ROI 坐标需相应调整。
在已有标靶基础上添加新标靶。
请求:
{"reqId": 1, "method": "addTargets", "params": {
"targets": [
{"targetId": "3", "sensorId": 0, "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
]
}}
响应:
{"reqId": 1, "code": 0, "data": {"addedIds": ["3"]}}
获取当前标靶列表。
请求:
{"reqId": 1, "method": "getTargets", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"}
]
}}
更新已有标靶的配置。
请求:
{"reqId": 1, "method": "setTargets", "params": {
"targets": [{"targetId": "1", "distance": 5.5}]
}}
删除指定标靶。
请求:
{"reqId": 1, "method": "deleteTargets", "params": {
"targetIds": ["2"]
}}
设置电机角度。
参数:
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
pan | Float | -180 ~ 180 | 水平角度 (°) |
tilt | Float | -90 ~ 90 | 垂直角度 (°) |
speed | Integer | 1-100 | 转动速度 (%) |
请求:
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "tilt": -10.0, "speed": 50}}
获取当前电机角度。
请求:
{"reqId": 1, "method": "getMotorAngle", "params": {}}
响应:
{"reqId": 1, "code": 0, "data": {"pan": 45.0, "tilt": -10.0}}
设置巡航点。
参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
pathId | Integer | 是 | 路径 ID |
pointId | Integer | 是 | 巡航点 ID |
pan | Float | 是 | 水平角度 |
tilt | Float | 是 | 垂直角度 |
targets | Array | 是 | 标靶 ID 列表 |
dwellTime | Integer | 否 | 停留时间 (秒) |
请求:
{"reqId": 1, "method": "setCruisePoint", "params": {
"pathId": 1,
"pointId": 1,
"pan": 45.0,
"tilt": -10.0,
"targets": ["1", "2"],
"dwellTime": 60
}}
支持配置 3D 融合上报指标。
请求:
{"reqId": 1, "method": "setAttr", "params": {
"reportMetrics": ["dx", "dy", "dz", "tilt"]
}}
| 指标 | 说明 |
|---|---|
dx | X方向累积位移变化 |
dy | Y方向累积位移变化 |
dz | Z方向累积位移变化 |
tilt | 倾斜角度变化 |
测量运行时,设备按采样频率上报位移数据。
主题: vdm/{deviceId}/telemetry
{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02],"dy":[0.00,0.01],"dz":[0.01,0.02],"tilt": 0.01}}}}
| 字段 | 单位 | 说明 |
|---|---|---|
t | 秒 | Unix 时间戳 |
dx | mm | X方向累积位移变化 |
dy | mm | Y方向累积位移变化 |
dz | mm | Z方向累积位移变化 |
tilt | ″(角秒) | 倾斜角度变化 |
位移超限时通过 3A 主题上报。
主题: vdm/{deviceId}/3A
{
"3A": "DISPLACEMENT_EXCEEDED",
"level": 2,
"targetId": "1",
"value": 12.5,
"threshold": 10.0,
"ts": 1734567890
}
告警级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 0 | - | 恢复 |
| 1 | alert | 预警 |
| 2 | alarm | 告警 |
| 3 | action | 紧急 |
设备状态变化时通过 event 主题上报。
主题: vdm/{deviceId}/event
{
"event": "cruisePointReached",
"ts": 1734567890,
"data": {"pathId": 1, "pointId": 1}
}
事件类型:
| 事件 | 说明 | data 内容 |
|---|---|---|
measurementStarted | 测量开始 | {} |
measurementStopped | 测量停止 | {} |
TARGET_LOST | 标靶丢失 | {"targetId": "1"} |
targetRecovered | 标靶恢复 | {"targetId": "1"} |
motorMoved | 电机移动完成 | {"pan": 45.0, "tilt": -10.0} |
cruisePointReached | 到达巡航点 | {"pathId": 1, "pointId": 1} |
| 码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数无效 |
| 2 | 缺少必填参数 |
| 100 | 标靶不存在 |
| 102 | 标靶初始化失败 |
| 104 | 标靶丢失 |
| 200 | 测量未启动 |
| 201 | 测量已在运行 |
| 300 | 电机不可用 |
| 302 | 电机运动中 |
| 303 | 电机到达限位 |
| 400 | 巡航功能不可用 |
| 403 | 巡航已在运行 |
1. 设置巡航点 1 (pan=0, tilt=0)
└─ 初始化标靶 1, 2
2. 设置巡航点 2 (pan=45, tilt=-10)
└─ 初始化标靶 3
3. 启动巡航
└─ 设备自动在各点之间循环
└─ 每个点停留 dwellTime 秒进行测量
4. 接收遥测数据
└─ 位移数据包含当前巡航点的标靶
{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0, "tilt": 0}}
{"reqId": 2, "method": "initRefTargets", "params": {
"targets": [
{"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
{"targetId": "2", "sensorId": 1, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}
]
}}
{"reqId": 3, "method": "setCruisePoint", "params": {
"pathId": 1, "pointId": 1, "pan": 0, "tilt": 0, "targets": ["1", "2"], "dwellTime": 60
}}
{"reqId": 4, "method": "startMeasurement", "params": {}}