这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

文档

Inteagle 设备 API 文档

欢迎使用 Inteagle 设备 API 文档。

快速导航

平台端 API

适用于通过 Inteagle 结构健康监测平台获取设备数据的场景。开始对接 →

直连设备

适用于自建 MQTT 服务器,直接接收设备数据的场景。查看设备类型 →

1 - 引言

Inteagle 设备 API 对接指南

本文档介绍如何对接 Inteagle 监测设备。

API 对接方式

Inteagle 提供两种数据对接方式,客户可根据业务需求和开发能力选择不同的接入方式。

说明

  • 建议不熟悉设备的客户前期采用平台对接方式获取数据和控制设备,接入更简单便捷,成本更低。
  • 对设备的使用已经比较熟悉或者有更高需求的客户请联系鹰腾工作人员开通直连设备的权限。
  • 有数据保密要求的客户请联系鹰腾工作人员开通直连设备的权限。
方式适用场景协议
平台对接通过 Inteagle 结构健康监测平台SDK + MQTT
直连设备自建 MQTT 服务器,直连设备MQTT

平台对接

适用于通过 Inteagle 结构健康监测平台获取设备数据的场景。

  • 平台托管,无需维护基础设施
  • 提供数据存储、告警、可视化等增值服务
  • 客户通过 SDK 查询数据和控制设备

查看平台端 API →

直连设备

适用于搭建自有 MQTT 服务器,直接接收设备数据的场景。

  • 设备直连,延迟最低
  • 需要自行管理设备连接和数据存储
  • 参考各设备类型的 MQTT 协议文档

查看设备 API →

支持的设备类型

类型说明文档
视觉位移计(VDM)非接触式位移监测设备查看详情 →

更多设备类型持续更新中…

2 - 平台端 API

通过 Inteagle 结构健康监测平台对接

本章节介绍如何将您的系统与 Inteagle 结构健康监测平台对接。

推荐方式:使用 SDK

强烈推荐使用官方 Java SDK 进行开发,SDK 封装了认证、API 调用、数据解析等功能,简化开发流程。

// Maven 依赖
<dependency>
    <groupId>com.inteagle</groupId>
    <artifactId>shm-sdk</artifactId>
    <version>0.3.1</version>
</dependency>

// 快速使用
InteagleClient client = InteagleClient.builder()
    .apiEndpoint("https://api.shm.inteagle.com")
    .credentials(accessKey, secretKey)
    .build();

// 查询项目
List<Project> projects = client.projects().list();

Go SDK 即将推出,敬请期待。

详见 SDK 仓库快速入门

对接方式

方式用途协议
SDK(推荐)项目/设备/数据查询HTTP
MQTT 订阅实时数据推送MQTT

文档导航

文档说明
核心概念数据模型与业务流程
快速入门SDK 使用教程
MQTT 订阅实时数据推送
数据字典字段与枚举定义

2.1 - 核心概念

理解 Inteagle 结构健康监测平台的数据模型与业务流程

理解平台的核心概念有助于更高效地使用SDK和API。

数据模型

Inteagle 结构健康监测平台采用三层数据模型:

graph TD
    subgraph L1["第一层 - 租户层"]
        A[客户 Customer]
    end

    subgraph L2["第二层 - 项目层"]
        B[项目 Project]
    end

    subgraph L3["第三层 - 数据采集层"]
        C1[监测点<br/>Monitoring Point<br/>业务视角]
        C2[设备<br/>Device<br/>物理设备]
    end

    subgraph DATA["数据层"]
        D1[监测点数据<br/>dx dy tilt]
        D2[设备原始数据<br/>标靶坐标]
    end

    A -->|1:N 包含| B
    B -->|1:N 包含| C1
    B -->|1:N 包含| C2
    C1 -->|1:N 产生| D1
    C2 -->|1:N 上报| D2
    C1 <-.->|N:M 多对多映射| C2

    style A fill:#e1f5ff,stroke:#01579b,stroke-width:3px
    style B fill:#fff4e1,stroke:#e65100,stroke-width:3px
    style C1 fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    style C2 fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    style D1 fill:#e8f5e9,stroke:#1b5e20,stroke-width:1px
    style D2 fill:#e8f5e9,stroke:#1b5e20,stroke-width:1px

核心特点:

  1. 第一层(租户层):客户级数据隔离
  2. 第二层(项目层):一个项目对应一个监测工程
  3. 第三层(数据采集层)
    • 监测点:业务视角,反映监测需求
    • 设备:物理设备,采集原始数据
    • 关键:监测点 ↔ 设备 是多对多映射关系

层级关系

层级说明用途ID
客户租户隔离数据权限控制cust_abc123
项目监测工程业务组织单元proj_abc123
监测点业务测点展示监测指标(如位移、倾斜)pt_xyz789
设备物理设备采集原始数据dev_001

核心实体

项目 (Project)

监测工程的顶层容器,对应一个实际的工程项目(如桥梁监测、边坡监测)。

属性:

  • 项目名称、编号
  • 监测类型(桥梁/隧道/边坡/环境等)
  • 地理位置
  • 起止日期

包含:

  • 多个监测点(类型取决于监测场景)
  • 多个设备

典型项目场景:

场景 1:桥梁监测项目

graph TD
    P1[桥梁监测项目]
    P1 --> PT1["位移监测点 x10"]
    P1 --> PT2["倾斜监测点 x4"]
    P1 --> PT3["应变监测点 x8"]
    P1 --> PT4["环境监测点 x2"]
    P1 --> D1["设备: V2K x6, X1 x4, O1 x8"]

    style P1 fill:#fff4e1
    style PT1 fill:#f3e5f5
    style PT2 fill:#f3e5f5
    style PT3 fill:#f3e5f5
    style PT4 fill:#f3e5f5
    style D1 fill:#e1f5ff

场景 2:隧道监测项目

graph TD
    P2[隧道监测项目]
    P2 --> PT1["收敛监测点 x15"]
    P2 --> PT2["沉降监测点 x20"]
    P2 --> D2["设备: V2K x10, X1 x5"]

    style P2 fill:#e3f2fd
    style PT1 fill:#f3e5f5
    style PT2 fill:#f3e5f5
    style D2 fill:#e1f5ff

场景 3:环境监测项目

graph TD
    P3[环境监测项目]
    P3 --> PT1["环境监测点 x5"]
    P3 --> D3["环境传感器 x5"]

    style P3 fill:#e8f5e9
    style PT1 fill:#f3e5f5
    style D3 fill:#e1f5ff

监测点 (Monitoring Point)

业务视角的测量点,聚合了来自设备的监测指标。

特点:

  • 业务导向:反映实际的监测需求(如"3号桥墩位移")
  • 指标聚合:可从多个设备/通道汇总数据
  • 多对多关系
    • 一个监测点可以从多个设备的数据组合而成
    • 一个设备可以为多个监测点提供数据(如视觉位移计设备可为多个监测点提供数据)
  • 场景化配置:不同监测场景下,监测点关注的指标类型不同

监测点类型与场景:

监测场景监测点类型典型指标应用示例
桥梁/结构监测位移监测点dx, dy, dz, settlement桥墩位移、梁体沉降
倾斜监测点tilt桥塔倾斜、墩台倾角
应变监测点strain, stress主梁应变、关键截面应力
裂缝监测点crack, crackRate混凝土裂缝宽度
隧道/基坑监测收敛监测点dx, dy隧道净空收敛
沉降监测点dz, settlement地表沉降、周边建筑沉降
边坡/地质监测深层位移监测点dz (分层)深层土体位移
裂缝监测点crack边坡裂缝发展
环境监测环境监测点temperature, humidity, pressure施工环境、设备工作环境

详细监测点类型参见 数据字典 - 监测点类型

示例 1:多设备融合 → 一个监测点(3D 空间位移)

典型应用:通过两台视觉位移计的三角测量,融合计算出 3D 空间位移。

graph TD
    PT[监测点<br/>桥墩A-3D位移监测点<br/>输出: dx, dy, dz]
    D1[设备1 V2W<br/>标靶1]
    D2[设备2 V2W<br/>标靶1]
    L1[local坐标<br/>dx1, dy1]
    L2[local坐标<br/>dx2, dy2]
    FUSION[三维融合算法]

    D1 -->|测量| L1
    D2 -->|测量| L2
    L1 --> FUSION
    L2 --> FUSION
    FUSION -->|计算| PT

    style PT fill:#fff4e1,stroke:#e65100,stroke-width:3px
    style D1 fill:#e1f5ff
    style D2 fill:#e1f5ff
    style FUSION fill:#ffe0b2,stroke:#f57c00,stroke-width:2px

两台设备各自测量标靶在自己 local 坐标系下的 dx, dy,通过三维融合算法(空间几何计算)得到 global 坐标系下的完整 3D 位移(dx, dy, dz)。

示例 2:一个设备 → 多个监测点

graph TD
    D[设备 dev_001<br/>V2K 2靶位移计]
    T1[标靶1]
    T2[标靶2]
    PT1[监测点A<br/>桥墩A位移]
    PT2[监测点B<br/>桥墩B位移]

    D --> T1
    D --> T2
    T1 --> PT1
    T2 --> PT2

    style D fill:#e1f5ff
    style PT1 fill:#fff4e1
    style PT2 fill:#fff4e1

设备 (Device)

物理传感器/采集设备,上报原始测量数据。

VDM 视觉位移计系列:

所有 视觉位移计设备均基于视觉测量原理,可测量多个标靶。不同型号在视觉传感器数量(单目/双目)、云台功能(固定式/旋转式)、连接方式(有线/无线)上有所差异。

型号分类:

  • 固定式:V1(单目)、V2K(双目)、V2W(双目) - 安装角度固定或可手动调整
  • 旋转式:O1(单目单轴)、X1(单目双轴)、X2W(双目双轴) - 支持云台控制和自动巡航

详细型号规格参见 数据字典 - 设备类型


遥测数据 (Telemetry)

遥测数据是设备上报的时序监测数据,是平台的核心数据类型。

HTTP API 响应格式

通过 HTTP API 查询历史遥测数据时,返回按指标分组的时间序列:

字段类型说明
tsLong时间戳(毫秒级 Unix 时间戳)
valueNumber测量值

示例:

{
  "dx": [
    { "ts": 1735560000000, "value": 0.05 },
    { "ts": 1735563600000, "value": 0.06 }
  ],
  "dy": [
    { "ts": 1735560000000, "value": 0.02 },
    { "ts": 1735563600000, "value": 0.03 }
  ]
}

注意:MQTT 实时推送格式不同,详见 MQTT 数据订阅

时间戳约定

约定说明
单位毫秒(milliseconds)
时区UTC(接口返回的时间戳均为 UTC)
格式Unix 时间戳,如 1735560000000

时间转换示例:

UTC 时间戳: 1735560000000
UTC 时间:   2024-12-30T12:00:00Z
北京时间:   2024-12-30 20:00:00 (UTC+8)

告警系统 (Alarm)

告警系统采用四态状态模型,支持完整的告警生命周期管理。

告警生命周期

stateDiagram-v2
    [*] --> ACTIVE_UNACK: 触发告警
    ACTIVE_UNACK --> ACTIVE_ACK: 确认
    ACTIVE_UNACK --> CLEARED_UNACK: 自动清除
    ACTIVE_ACK --> CLEARED_ACK: 自动清除
    CLEARED_UNACK --> CLEARED_ACK: 确认
    CLEARED_ACK --> [*]: 归档

告警状态说明

状态活跃已确认说明
ACTIVE_UNACK新告警,待处理
ACTIVE_ACK已确认,处理中
CLEARED_UNACK已恢复,未确认
CLEARED_ACK已恢复,已确认

告警级别 (3A 体系)

平台采用 3A 告警级别体系:

级别颜色说明典型响应
ALERT🟡 黄色预警关注,无需立即处理
ALARM🟠 橙色报警需要处理
ACTION🔴 红色紧急立即行动

详细告警定义参见 数据字典 - 告警级别

告警触发流程

sequenceDiagram
    participant D as 设备
    participant I as Inteagle平台
    participant C as 第三方云平台

    D->>I: 上报遥测数据
    I->>I: 检查告警规则
    alt 超过阈值
        I->>I: 创建告警 (ACTIVE_UNACK)
        I-->>C: MQTT 推送告警
    end
    alt 恢复正常
        I->>I: 清除告警 (CLEARED_*)
        I-->>C: MQTT 推送清除
    end

数据访问方式

Inteagle 提供 SDK,集成了 HTTP 和 MQTT 两种通道,配合使用获取完整的数据能力。

SDK 集成的两种通道

通道协议用途SDK 方法
查询通道HTTP查询项目、监测点、设备、历史数据client.projects(), client.telemetry()
订阅通道MQTT接收实时遥测、告警推送client.subscribe()

典型使用流程

  1. 初始化:通过 HTTP 查询项目、监测点列表
  2. 加载历史:通过 HTTP 查询历史遥测数据
  3. 实时更新:通过 MQTT 订阅接收实时数据推送

下一步

根据您的需求选择阅读路径:

目标推荐阅读
快速体验对接快速入门 - SDK 使用教程
实时监控MQTT 订阅 - 实时数据订阅指南
了解字段含义数据字典 - 完整的字段定义

2.2 - 快速入门

SDK 使用教程

本指南帮助您快速使用 SDK 对接 Inteagle 结构健康监测平台。

前置条件

  • 已获取 Access Key 和 Secret Key(联系销售获取)

SDK 安装

SDK 仓库https://github.com/inteagle-vision/shm-sdk

Java SDK

<dependency>
    <groupId>com.inteagle</groupId>
    <artifactId>shm-sdk</artifactId>
    <version>0.3.1</version>
</dependency>
dependencies {
    implementation 'com.inteagle:shm-sdk:0.3.1'
}

Go SDK

Go SDK 即将推出,敬请期待。


快速开始

1. 创建客户端

import com.inteagle.shm.InteagleClient;

InteagleClient client = InteagleClient.builder()
    .apiEndpoint("https://api.shm.inteagle.com")
    .credentials("your-access-key", "your-secret-key")
    .build();

2. 查询项目

// 查询项目列表
List<Project> projects = client.projects().list();

for (Project project : projects) {
    System.out.println("项目: " + project.getName());
    System.out.println("ID: " + project.getId());
}

// 查询项目详情
Project project = client.projects().get("project-id");

3. 查询监测点

// 查询项目下的监测点
List<MonitoringPoint> points = client.points().listByProject("project-id");

for (MonitoringPoint point : points) {
    System.out.println("监测点: " + point.getName());
}

// 查询监测点详情
MonitoringPoint point = client.points().get("point-id");

4. 查询设备

// 查询项目下的设备
List<Device> devices = client.devices().listByProject("project-id");

// 查询设备详情
Device device = client.devices().get("device-id");
System.out.println("设备状态: " + (device.isOnline() ? "在线" : "离线"));

5. 查询遥测数据

// 查询监测点最新数据
TelemetryResult latest = client.telemetry()
    .entity("POINT", "point-id")
    .latest();

System.out.println("dx: " + latest.getValue("dx"));
System.out.println("dy: " + latest.getValue("dy"));

// 查询历史数据
long endTs = System.currentTimeMillis();
long startTs = endTs - 24 * 60 * 60 * 1000; // 最近24小时

TelemetryResult history = client.telemetry()
    .entity("POINT", "point-id")
    .timeRange(startTs, endTs)
    .metrics("dx", "dy")
    .query();

6. 查询告警

// 查询活动告警
List<Alarm> alarms = client.alarms()
    .projectId("project-id")
    .status("ACTIVE")
    .list();

for (Alarm alarm : alarms) {
    System.out.println("告警: " + alarm.getType());
    System.out.println("级别: " + alarm.getSeverity());
}

7. 查询告警规则

// 查询项目的告警规则
List<AlarmRule> rules = client.alarmRules()
    .projectId("project-id")
    .list();

for (AlarmRule rule : rules) {
    System.out.println("规则: " + rule.getName());
    System.out.println("启用: " + rule.isEnabled());
}

命令行工具

SDK 提供命令行工具 shm-cli,方便调试和测试:

# 配置凭证
shm-cli config --access-key YOUR_KEY --secret-key YOUR_SECRET

# 查询项目
shm-cli projects list

# 查询监测点
shm-cli points list --project PROJECT_ID

# 查询遥测数据
shm-cli telemetry latest --entity-type POINT --entity-id POINT_ID

# 查询告警规则
shm-cli alarm-rules list --project PROJECT_ID

下一步

2.3 - MQTT 数据订阅

实时数据推送

Inteagle 结构健康监测平台提供 MQTT 实时数据推送服务。

连接信息

参数
服务器broker.shm.inteagle.com
端口8883 (TLS)
协议MQTT 3.1.1 / 5.0

认证

参数
用户名客户 ID
密码Access Token
Client ID自定义(建议:{customerId}_{appName}

Topic 结构

inteagle/{customerId}/p/{projectId}              # 项目所有数据
inteagle/{customerId}/p/{projectId}/mp/{pointId} # 监测点数据
inteagle/{customerId}/p/{projectId}/d/{deviceId} # 设备数据

订阅示例:

# 项目所有数据
inteagle/cust_abc123/p/proj_abc/#

# 所有监测点
inteagle/cust_abc123/p/proj_abc/mp/+

# 单个设备
inteagle/cust_abc123/p/proj_abc/d/dev_001

消息格式

所有消息包含 type 字段区分数据类型:

遥测数据

{
  "type": "telemetry",
  "ts": 1735560000000,
  "payload": {
    "pointId": "point_001",
    "data": {"dx": 0.05, "dy": 0.02}
  }
}

告警

{
  "type": "3A",
  "ts": 1735560000000,
  "payload": {
    "id": "alm_001",
    "severity": "alert",
    "status": "ACTIVE_UNACK",
    "originator": {"entityType": "POINT", "id": "point_001"},
    "detail": {"metric": "dx", "value": 12.5, "threshold": 10.0}
  }
}

代码示例

import paho.mqtt.client as mqtt
import json

def on_connect(client, userdata, flags, rc):
    print(f"Connected: {rc}")
    client.subscribe("inteagle/cust_abc123/p/proj_abc/#")

def on_message(client, userdata, msg):
    data = json.loads(msg.payload.decode())
    if data['type'] == 'telemetry':
        print(f"遥测: {data['payload']}")
    elif data['type'] == '3A':
        print(f"告警: {data['payload']['severity']}")

client = mqtt.Client()
client.username_pw_set("cust_abc123", "your_token")
client.tls_set()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.shm.inteagle.com", 8883)
client.loop_forever()

QoS 建议

数据类型QoS说明
遥测0允许少量丢失
告警1确保送达

2.3.1 - 项目与监测点数据

项目聚合数据与监测点数据格式

项目和监测点数据是面向业务的数据视图。

Topic 结构

inteagle/{customerId}/p/{projectId}              # 项目所有数据
inteagle/{customerId}/p/{projectId}/mp/{pointId} # 监测点数据
参数说明示例
{customerId}客户 IDcust_abc123
{projectId}监测项目 IDproj_abc
{pointId}监测点 IDpoint_001

订阅示例

# 某项目所有数据
inteagle/cust_abc123/p/proj_abc/#

# 某监测点所有数据
inteagle/cust_abc123/p/proj_abc/mp/point_001

# 项目下所有监测点数据
inteagle/cust_abc123/p/proj_abc/mp/+

监测点数据

Topic: inteagle/{customerId}/p/{projectId}/mp/{pointId}

遥测数据

{
  "type": "telemetry",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "POINT",
      "id": "point_001"
    },
    "disp": {
      "dx": 0.05,
      "dy": 0.02,
      "dz": 0.01
    },
    "tilt": 0.5
  }
}

payload 字段说明

字段类型说明
entityEntityRef实体引用(类型 + ID)
disp, tilt, …Object/Number指标数据(按需配置)

注意:监测点名称、项目名称等元数据通过 HTTP API 获取。

常见指标

指标说明单位
dxX 方向累积位移变化mm
dyY 方向累积位移变化mm
dzZ 方向累积位移变化mm
tilt倾斜角″(角秒)
strain应变με

注意:监测点指标是按需配置的,不同监测点可能包含不同的指标组合。有些数据需要从 设备实体 订阅(如视觉位移计的图片)。

告警数据

告警格式参见 告警消息

监测点告警示例:

{
  "type": "3A",
  "ts": 1735560000000,
  "payload": {
    "id": "alm_20251230_001",
    "alarmType": "DISPLACEMENT_EXCEEDED",
    "severity": "alert",
    "status": "ACTIVE_UNACK",
    "originator": {
      "type": "POINT",
      "id": "point_001"
    },
    "detail": {
      "metric": "dx",
      "value": 12.5,
      "threshold": 10.0,
      "message": "X方向位移超限"
    }
  }
}

设备数据

如需订阅设备原始数据(环境、图像等),请参见 设备数据格式

2.3.2 - 设备数据格式

不同设备类型的数据格式

设备数据通过 Topic inteagle/{customerId}/p/{projectId}/d/{deviceId} 推送。

通用消息结构

所有 MQTT 消息采用统一的包装结构:

{
  "type": "telemetry | 3A | event | image | attributes",
  "ts": 1735560000000,
  "payload": {
    ...
  }
}
字段类型说明
typeString消息类型
tsLongUnix 毫秒时间戳
payloadObject具体数据内容

开发者可以统一解析:

const { type, ts, payload } = message;
switch(type) {
  case 'telemetry': handleTelemetry(payload); break;
  case '3A':        handleAlarm(payload); break;
  case 'event':     handleEvent(payload); break;
  case 'image':     handleImage(payload); break;
  case 'attributes': handleAttributes(payload); break;
}

消息类型

type说明payload 内容
telemetry遥测数据位移、环境、状态
3A告警告警详情
event事件事件类型和数据
image图像图片 URL 和元数据
attributes属性变更变更的属性

告警消息 (3A)

{
  "type": "3A",
  "ts": 1735560000000,
  "payload": {
    "id": "alm_20251230_001",
    "alarmType": "LOW_BATTERY",
    "severity": "alarm",
    "status": "ACTIVE_UNACK",
    "originator": {
      "entityType": "DEVICE",
      "id": "dev_001"
    },
    "detail": {
      "metric": "pwr.battery",
      "value": 3.2,
      "threshold": 3.5,
      "message": "电池电压低"
    }
  }
}

payload 字段说明

字段类型必填说明
idString告警唯一标识
alarmTypeString告警类型(见数据字典)
severityString告警级别
statusString告警状态
originator.entityTypeString实体类型:DEVICEPOINT
originator.idString实体 ID
detail.metricString触发告警的指标
detail.valueNumber触发时的实际值
detail.thresholdNumber阈值
detail.messageString告警描述

告警级别 (severity)

说明
ALERT预警
ALARM报警
ACTION紧急

告警状态 (status)

说明
ACTIVE_UNACK触发未确认
ACTIVE_ACK触发已确认
CLEARED_UNACK恢复未确认
CLEARED_ACK恢复已确认

事件消息 (event)

事件分为通用事件(所有设备)和设备事件(取决于设备能力)。

{
  "type": "event",
  "ts": 1735560000000,
  "payload": {
    "deviceId": "dev_001",
    "eventType": "DEVICE_ONLINE",
    "data": {}
  }
}

payload 字段说明

字段类型说明
deviceIdString设备 ID
eventTypeString事件类型
dataObject事件相关数据

通用事件类型

eventType说明
DEVICE_ONLINE设备上线
DEVICE_OFFLINE设备离线

设备特有事件参见各设备文档。

属性变更消息 (attributes)

{
  "type": "attributes",
  "ts": 1735560000000,
  "payload": {
    "deviceId": "dev_001",
    "data": {
      "firmwareVersion": "2.1.0"
    }
  }
}

2.3.2.1 - VDM 视觉位移计

VDM 视觉位移计设备数据格式

VDM(Visual Displacement Meter)视觉位移计是 Inteagle 核心监测设备,支持多标靶位移测量。

遥测数据

视觉位移计设备遥测数据包含位移、环境、状态信息:

{
  "type": "telemetry",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "disp": {
      "1": {
        "dx": 0.05,
        "dy": 0.02,
        "dz": 0.01,
        "tilt": 0.05
      },
      "2": {
        "dx": 0.03,
        "dy": 0.01
      }
    },
    "env": {
      "temperature": 25.5,
      "humidity": 60.0,
      "pressure": 101.3
    },
    "status": {
      "signal": {
        "type": "4G",
        "rssi": -75
      },
      "pwr": {
        "battery": 3.7,
        "inputDC": 12.1
      },
      "storage": {
        "percent": 45
      }
    }
  }
}

位移数据 (disp)

字段类型说明
dispObject按标靶 ID 组织的位移数据
dx, dy, dzNumber累积位移变化 (mm)
tiltNumber倾斜变化角度(″ 角秒)

环境数据 (env)

部分 VDM 型号支持环境数据采集:

字段类型单位说明
temperatureNumber°C温度
humidityNumber%RH相对湿度
pressureNumberkPa大气压

状态数据 (status)

字段类型说明
signal.typeString网络类型:4G, Ethernet
signal.rssiInteger信号强度 (dBm)
pwr.batteryNumber电池电压 (V)
pwr.inputDCNumberDC 输入电压 (V)
storage.percentInteger存储使用率 (%)

告警

设备告警格式参见 告警消息

视觉位移计设备告警示例

{
  "type": "3A",
  "ts": 1735560000000,
  "payload": {
    "id": "alm_20251230_001",
    "alarmType": "TARGET_LOST",
    "severity": "alarm",
    "status": "ACTIVE_UNACK",
    "originator": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "detail": {
      "metric": "target_1_status",
      "message": "标靶1丢失"
    }
  }
}

VDM 常见告警类型

alarmType说明metric
TARGET_LOST标靶丢失target_{n}_status
LOW_BATTERY电池电压低pwr.battery
LOW_VOLTAGEDC输入电压低pwr.inputDC
STORAGE_FULL存储空间不足storage.percent

事件

事件分为通用事件(所有设备)和设备事件(取决于设备能力)。

通用事件

平台为所有设备提供在线/离线状态推送:

{
  "type": "event",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "eventType": "DEVICE_ONLINE",
    "data": {}
  }
}
eventType说明
DEVICE_ONLINE设备上线
DEVICE_OFFLINE设备离线

视觉位移计设备事件

VDM 特有的事件类型:

{
  "type": "event",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "eventType": "TARGET_LOST",
    "data": {
      "targetId": "1"
    }
  }
}
eventType说明data
TARGET_LOST标靶丢失{"targetId": "1"}
TARGET_RECOVERED标靶恢复{"targetId": "1"}
CALIBRATION_COMPLETE标定完成{"targetId": "1"}
STORAGE_FULL存储空间已满{}

图像

VDM 支持图像采集:

{
  "type": "image",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "sensorId": 0,
    "trigger": "snapshot",
    "url": "https://storage.inteagle.com/images/...",
    "ttl": 86400
  }
}
字段类型说明
entityEntityRef实体引用
sensorIdInteger视觉传感器 ID(0 或 1)
triggerString触发类型
urlString图片下载 URL
ttlIntegerURL 有效期(秒)

触发类型

trigger说明
snapshot手动快照
3A告警触发
periodic定时拍照

属性变更

{
  "type": "attributes",
  "ts": 1735560000000,
  "payload": {
    "entity": {
      "type": "DEVICE",
      "id": "dev_001"
    },
    "measureFrequency": 10,
    "irLightEnabled": true
  }
}

VDM 常见属性

属性类型说明
measureFrequencyInteger测量频率 (Hz)
irLightEnabledBoolean红外补光灯开关
targetCountInteger标靶数量
firmwareVersionString固件版本

2.4 - 数据字典

字段与枚举定义

监测指标

位移类

指标名称单位说明
dxX方向位移mm水平位移
dyY方向位移mm水平位移
dzZ方向位移mm竖向位移
settlement沉降量mm竖向沉降(负值)

角度类

指标名称单位
tilt倾斜角″ (角秒)

环境类

指标名称单位
temperature温度°C
humidity湿度%

实体类型

类型说明
PROJECT项目
POINT监测点
DEVICE设备

告警级别

级别说明颜色
ALERT预警黄色
ALARM报警橙色
ACTION紧急红色

告警状态

状态活跃已确认
ACTIVE_UNACK
ACTIVE_ACK
CLEARED_UNACK
CLEARED_ACK

告警类型

监测点告警

类型说明
DISPLACEMENT_EXCEEDED位移超限
TILT_EXCEEDED倾斜超限
SETTLEMENT_EXCEEDED沉降超限

设备告警

类型说明
DEVICE_OFFLINE设备离线
LOW_BATTERY电池电量低
TARGET_LOST标靶丢失

阈值运算符

运算符说明
GT大于 (>)
GTE大于等于 (≥)
LT小于 (<)
LTE小于等于 (≤)
EQ等于 (=)

时间格式

场景格式示例
时间戳Unix 毫秒1735560000000
日期ISO 86012025-01-08T10:30:00Z

2.5 - 故障排查

常见问题的诊断与解决

SDK 常见问题

认证失败

可能原因:

  • Access Key 或 Secret Key 错误
  • 凭证已过期

解决: 确认凭证正确,联系管理员重新获取。

资源不存在 (NotFoundException)

诊断:

// 使用 CLI 验证资源是否存在
shm-cli projects list
shm-cli points list --project PROJECT_ID

请求过频 (RateLimitException)

解决:

try {
    client.telemetry().query(query);
} catch (RateLimitException e) {
    Thread.sleep(e.getRetryAfterMs());
    // 重试
}

MQTT 连接问题

连接失败

错误码含义解决
4用户名密码错误检查客户 ID 和凭证
5未授权确认账号有 MQTT 权限

诊断:

# 测试端口连通性
openssl s_client -connect broker.shm.inteagle.com:8883

订阅后收不到数据

检查:

  1. Topic 格式是否正确:inteagle/{customerId}/p/{projectId}/#
  2. 设备是否在线并上报数据
  3. 使用通配符 # 测试是否有任何消息

频繁断线

解决:

  • Keep Alive 设为 60 秒
  • 使用唯一 Client ID
  • 实现自动重连逻辑

数据问题

时间戳转换

API 返回毫秒时间戳,转换时需除以 1000:

Instant instant = Instant.ofEpochMilli(ts);
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

查询不到历史数据

检查:

  • 时间范围:endTs > startTs
  • 数据点数量限制:单次最多 1000 点
  • 监测点是否有数据:先查询最新数据确认

需要帮助?

请联系技术支持。

3 - 设备 API

支持的设备型号与参数

本章节介绍 Inteagle 支持的设备类型及其技术参数。

设备列表

类型说明文档
视觉位移计(VDM)非接触式位移监测设备查看详情 →

更多设备类型持续更新中…

3.1 - 视觉位移计(VDM)

非接触式位移监测设备

视觉位移计是 Inteagle 研发的非接触式位移监测设备,可以实时监测目标结构物的位移变化。

说明:有两种方式:MQTT和modbus. modbus接入方式正在开发中。

快速导航

文档说明
快速入门5 分钟接入 VDM 设备数据
API参考API 列表、错误码、数据格式

产品型号

型号视觉传感器云台类型说明
V1单目固定式,基础款
V2W双目固定式,视野加倍
V2K双目固定式,安装时可自由选择视野角度
O1单目单轴旋转式,仅水平方向可旋转
X1单目双轴旋转式,水平和竖向方向均可旋转
X2W双目双轴旋转式,水平和竖向方向均可旋转,视野加倍

说明

  1. 旋转式型号具有巡航监测功能
  2. 双目型号有 sensorId 参数

基础知识

  • 单台设备仅可测量二维位移变化,三维位移需要两台设备数据融合计算
  • 单台设备的测量数据坐标系以设备图像为中心(local 坐标系)
  • 两台设备数据融合后可得出全局三维数据(global 坐标系)

3.1.1 - 快速入门

VDM 设备快速接入指南

本指南帮助您快速接入 VDM 位移数据,适用于系统集成开发者。

flowchart LR
    A[1. App 配置<br>MQTT 连接] --> B[2. 订阅<br>设备主题]
    B --> C[3. 设备上线<br>上报属性]
    C --> D[4. 接收<br>位移数据]
    D --> E[5. 接收告警<br>可选]

1. 配置设备连接

通过 App 配置设备连接到您的 MQTT 服务器:

  • MQTT 服务器:您的服务器地址
  • 端口:您的服务器端口
  • 认证:您的服务器凭证(如需要)

配置完成后,从设备标签或 App 获取:

  • 设备 IDXXXXXXXXXXXX

2. 订阅数据主题

vdm/{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

3. 设备上线

设备连接 MQTT 后,自动上报只读属性到 attributes 主题:

{
  "deviceId": "XXXXXXXXXXXX",
  "deviceModel": "V1",
  "fwVer": "1.2.3",
  "measureStatus": "Idle"
}

收到属性上报表示设备已上线,可据此判断设备连接状态。


4. 接收位移数据

设备测量运行时,自动推送位移数据:

{
  "disp": {
    "t": 1734567890,
    "d": {
      "1": {
        "type": "local",
        "dx": [0.01, 0.02, 0.03],
        "dy": [0.00, 0.01, 0.01]
      }
    }
  }
}
字段说明
tUnix 时间戳(秒)
1标靶 ID
dxX 方向累积位移变化(mm)
dyY 方向累积位移变化(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);
    }
  }
});

5. 告警类型

设备监测的标靶如果有累积位移变化超出了预先设置的3A(Alert, Alarm和Action)阈值,设备会自动报警。

类型说明
DISPLACEMENT_EXCEEDED累积位移变化超限告警
TARGET_LOST标靶丢失告警
DEVICE_OFFLINE设备离线告警
LOW_BATTERY低电量告警
STORAGE_NEAR_FULL存储即将满

6. 常见问题

Q: 没有收到数据?

  • 确认设备已开机并联网
  • 确认设备已启动测量(通过 App 查看状态)
  • 检查 MQTT 连接和主题是否正确

Q: 数据频率是多少?

  • 取决于设备配置的采样频率(sampleFreq
  • ≥1Hz 时每秒上报一次,<1Hz 时按周期上报

Q: 如何启动/停止测量?

  • 使用厂家提供的 App 操作
  • 或参考完整 API 手册进行 RPC 调用

更多信息

详细 API 请参考各型号手册:

3.1.2 - API参考

VDM 设备接口技术规格

本章节介绍 VDM 设备的完整API参考,包括通信协议、API 列表、错误码等技术细节。

连接参数

参数
协议MQTT v3.1.1
PayloadJSON

主题结构

主题方向说明
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 支持矩阵

APIV1V2WV2KO1X1X2W
基础 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 二进制数据]

Header 格式

偏移长度字段说明
01version协议版本,当前 0x01
11headerLenHeader 总长度(字节)
21sensorId视觉传感器 ID(单目为 0,双目为 0 或 1)
31type图片类型(见下表)
44timestampUnix 时间戳(uint32, 大端)
8+-imageDataJPEG 二进制数据

图片类型 (type):

类型说明
0snapshotRPC 触发的快照
13A告警触发的抓图
2periodic定时抓图

示例

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 跳过不识别的字段,保证向后兼容。

3.1.3 - VDM-V1

V1 单目固定式视觉位移计 API 参考手册

型号: V1 | 版本: 1.0 | 更新: 2026-01-08

V1 是单目固定式视觉位移计。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

2. API 详情

getAttr

获取设备属性。不带 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"]
  }
}

属性列表:

属性类型读写说明
deviceIdStringR设备 ID
deviceModelStringR型号
fwVerStringR固件版本
measureStatusStringR测量状态
sampleFreqFloatRW采样频率 (Hz)
exposureStringRW曝光档位:High/Middle/Low
brightnessThrIntegerRW发光强度阈值 (0-255)
reportMetricsArrayRW上报指标

setAttr

设置设备属性。

请求:

{"reqId": 1, "method": "setAttr", "params": {
  "sampleFreq": 5,
  "reportMetrics": ["dx", "dy"]
}}

响应:

{"reqId": 1, "code": 0}

initRefTargets

初始化参考标靶。会清除已有标靶。

参数:

字段类型必填说明
targetsArray标靶配置
targets[].targetIdString标靶 ID(不填则自动生成)
targets[].roiObjectROI 区域
targets[].distanceFloat测量距离 (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"]}}

addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

{"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未启动测量

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [
    {"targetId": "1", "distance": 5.5}
  ]
}}

响应:

{"reqId": 1, "code": 0}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

响应:

{"reqId": 1, "code": 0}

startMeasurement

启动测量。

请求:

{"reqId": 1, "method": "startMeasurement", "params": {}}

响应:

{"reqId": 1, "code": 0}

stopMeasurement

停止测量。

请求:

{"reqId": 1, "method": "stopMeasurement", "params": {}}

响应:

{"reqId": 1, "code": 0}

setLightLevel

设置补光灯发光挡位。

请求:

{"reqId": 1, "method": "setLightLevel", "params": {"level": 1}}

响应:

{"reqId": 1, "code": 0}

getLightLevel

获取补光灯发光挡位。

请求:

{"reqId": 1, "method": "getLightLevel", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {"level": 1}}

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: vdm/{deviceId}/telemetry

{"disp":{"t":1734567890,"d":{"1":{"type": "local","dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
字段单位说明
tUnix 时间戳
d-标靶数据字典
type-数据的坐标系是全局还是局部。
dxmmX 方向位移变化
dymmY 方向位移变化

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm报警
3action行动

5. 事件数据

设备状态变化时通过 event 主题上报。

主题: vdm/{deviceId}/event

{
  "event": "measurementStarted",
  "ts": 1734567890,
  "data": {}
}

事件类型:

事件说明data 内容
measurementStarted测量开始{}
measurementStopped测量停止{}
TARGET_LOST标靶丢失{"targetId": "1"}
targetRecovered标靶恢复{"targetId": "1"}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行

7. 快速开始

1. 订阅设备主题

订阅: vdm/{deviceId}/rpc/resp
订阅: vdm/{deviceId}/telemetry
订阅: vdm/{deviceId}/attributes
订阅: vdm/{deviceId}/event
订阅: vdm/{deviceId}/3A
订阅: vdm/{deviceId}/image

2. 初始化标靶

发布到 vdm/{deviceId}/rpc/req:

{"reqId": 1, "method": "initRefTargets", "params": {
  "targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}

3. 启动测量

{"reqId": 2, "method": "startMeasurement", "params": {}}

4. 接收位移数据

vdm/{deviceId}/telemetry 接收:

{"disp": {"t": 1734567890, "d": {"1": {"type": "local", "dx": [0.01, 0.02], "dy": [0.00, 0.01]}}}}

3.1.4 - VDM-V2W

V2W/V2W4M 双目固定式视觉位移计 API 参考手册

型号: V2W / V2W4M | 版本: 1.0 | 更新: 2026-01-08

V2W 系列是双目固定式视觉位移计,支持双视觉传感器同步测量。配合另一台设备可实现 3D 空间位移融合计算。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

2. API 详情

initRefTargets

双目设备需要指定 sensorId 参数。

参数:

字段类型必填说明
targetsArray标靶配置
targets[].targetIdString标靶 ID
targets[].sensorIdInteger视觉传感器 ID (0 或 1)
targets[].roiObjectROI 区域
targets[].distanceFloat测量距离 (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 坐标需相应调整。


addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

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

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [
    {"targetId": "1", "distance": 5.5}
  ]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setLightLevel

设置补光灯发光挡位。V2W 为双目设备,有两个补光灯。

请求(批量设置不同发光强度):

{"reqId": 1, "method": "setLightLevel", "params": {
  "lights": [
    {"id": 0, "brightness": 5000},
    {"id": 1, "brightness": 8000}
  ]
}}

请求(全部相同发光强度):

{"reqId": 1, "method": "setLightLevel", "params": {"brightness": 5000}}

setAttr

支持配置 3D 融合上报指标。

请求:

{"reqId": 1, "method": "setAttr", "params": {
  "reportMetrics": ["dx", "dy", "dz","tilt"]
}}

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: 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]}}}}
字段单位说明
tUnix 时间戳
dxmmX 方向累积位移变化
dymmY 方向累积位移变化
dzmmZ 方向累积位移变化
tilt倾斜角″(角秒)

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action行动

5. 事件数据

设备状态变化时通过 event 主题上报。

主题: vdm/{deviceId}/event

{
  "event": "measurementStarted",
  "ts": 1734567890,
  "data": {}
}

事件类型:

事件说明data 内容
measurementStarted测量开始{}
measurementStopped测量停止{}
TARGET_LOST标靶丢失{"targetId": "1"}
targetRecovered标靶恢复{"targetId": "1"}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行

7. 快速开始

1. 双视觉传感器初始化标靶

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

2. 启用 3D 融合上报

{"reqId": 2, "method": "setAttr", "params": {"reportMetrics": ["dx", "dy", "sx", "sy", "sz"]}}

3. 启动测量

{"reqId": 3, "method": "startMeasurement", "params": {}}

3.1.5 - VDM-V2K

V2K 双目自由角度视觉位移计 API 参考手册

型号: V2K | 版本: 1.0 | 更新: 2026-01-08

V2K 是双目固定式视觉位移计,双视觉传感器可独立调整角度,适用于需要灵活监测角度的场景。

与 V2W 的区别: V2K 双视觉传感器可朝向不同方向,因此各标靶距离可能不同。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

2. API 详情

initRefTargets

双视觉传感器可独立配置不同距离。

参数:

字段类型必填说明
targetsArray标靶配置
targets[].targetIdString标靶 ID
targets[].sensorIdInteger视觉传感器 ID (0 或 1)
targets[].roiObjectROI 区域
targets[].distanceFloat测量距离 (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 双视觉传感器可朝向不同方向,因此各标靶距离可能不同。


addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

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

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [
    {"targetId": "1", "distance": 5.5}
  ]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setAttr

支持配置 3D 融合上报指标。

请求:

{"reqId": 1, "method": "setAttr", "params": {
  "reportMetrics": ["dx", "dy", "sx", "sy", "sz"]
}}
指标说明
dx, dy2D 位移
sx, sy, sz3D 空间位移(双设备融合)

3. 遥测数据

测量运行时,设备按采样频率上报累积位移变化数据。

主题: 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]}}}}
字段单位说明
tUnix 时间戳
dx, dymm2D 位移
sx, sy, szmm3D 空间位移(双设备融合)

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action紧急

5. 事件数据

设备状态变化时通过 event 主题上报。

主题: vdm/{deviceId}/event

{
  "event": "measurementStarted",
  "ts": 1734567890,
  "data": {}
}

事件类型:

事件说明data 内容
measurementStarted测量开始{}
measurementStopped测量停止{}
TARGET_LOST标靶丢失{"targetId": "1"}
targetRecovered标靶恢复{"targetId": "1"}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行

7. 快速开始

1. 双视觉传感器初始化标靶(不同距离)

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

2. 启用 3D 融合上报

{"reqId": 2, "method": "setAttr", "params": {"reportMetrics": ["dx", "dy", "sx", "sy", "sz"]}}

3. 启动测量

{"reqId": 3, "method": "startMeasurement", "params": {}}

3.1.6 - VDM-O1

O1 单目单轴旋转式视觉位移计 API 参考手册

型号: O1 | 版本: 1.0 | 更新: 2026-01-08

O1 是单目单轴旋转式视觉位移计,支持水平方向云台控制和巡航。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

电机控制 API(仅水平)

方法说明
setMotorAngle设置电机角度(仅 pan)
getMotorAngle获取电机角度
setMotorZero设置电机零点
enableMotor启用电机
disableMotor禁用电机

巡航控制 API

方法说明
getCruisePaths获取巡航路径
setCruisePoint设置巡航点
removeCruisePoint移除巡航点
startPatrol启动巡航
stopPatrol停止巡航
getPatrolStatus获取巡航状态

2. API 详情

initRefTargets

初始化参考标靶。

请求:

{"reqId": 1, "method": "initRefTargets", "params": {
  "targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}

addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

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

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [{"targetId": "1", "distance": 5.5}]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setMotorAngle

设置电机角度。

注意: O1 仅支持水平 (pan) 方向,不支持 tilt 参数。

参数:

字段类型范围说明
panFloat-180 ~ 180水平角度 (°)
speedInteger1-100转动速度 (%)

请求:

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "speed": 50}}

getMotorAngle

获取当前电机角度。

请求:

{"reqId": 1, "method": "getMotorAngle", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {"pan": 45.0}}

setCruisePoint

设置巡航点。

注意: O1 巡航点仅支持 pan 角度。

参数:

字段类型必填说明
pathIdInteger路径 ID
pointIdInteger巡航点 ID
panFloat水平角度
targetsArray标靶 ID 列表
dwellTimeInteger停留时间 (秒)

请求:

{"reqId": 1, "method": "setCruisePoint", "params": {
  "pathId": 1,
  "pointId": 1,
  "pan": 45.0,
  "targets": ["1"],
  "dwellTime": 60
}}

startPatrol

启动巡航。

请求:

{"reqId": 1, "method": "startPatrol", "params": {"pathId": 1}}

stopPatrol

停止巡航。

请求:

{"reqId": 1, "method": "stopPatrol", "params": {}}

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: vdm/{deviceId}/telemetry

{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
字段单位说明
tUnix 时间戳
dxmmX 方向位移
dymmY 方向位移

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action紧急

5. 事件数据

设备状态变化时通过 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}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行
300电机不可用
302电机运动中
310垂直电机不可用(O1 不支持)
400巡航功能不可用
403巡航已在运行

7. 快速开始

1. 移动到位置

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0}}

2. 初始化标靶

{"reqId": 2, "method": "initRefTargets", "params": {
  "targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}

3. 设置巡航点

{"reqId": 3, "method": "setCruisePoint", "params": {
  "pathId": 1, "pointId": 1, "pan": 0, "targets": ["1"], "dwellTime": 60
}}

4. 启动测量

{"reqId": 4, "method": "startMeasurement", "params": {}}

3.1.7 - VDM-X1

X1 单目双轴旋转式视觉位移计 API 参考手册

型号: X1 | 版本: 1.0 | 更新: 2026-01-08

X1 是单目双轴旋转式视觉位移计,支持水平和垂直云台控制及自动巡航。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

电机控制 API

方法说明
setMotorAngle设置电机角度
getMotorAngle获取电机角度
setMotorZero设置电机零点
enableMotor启用电机
disableMotor禁用电机

巡航控制 API

方法说明
getCruisePaths获取巡航路径
setCruisePoint设置巡航点
removeCruisePoint移除巡航点
startPatrol启动巡航
stopPatrol停止巡航
getPatrolStatus获取巡航状态

2. API 详情

initRefTargets

初始化参考标靶。

请求:

{"reqId": 1, "method": "initRefTargets", "params": {
  "targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}

addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

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

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [{"targetId": "1", "distance": 5.5}]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setMotorAngle

设置电机角度。

参数:

字段类型范围说明
panFloat-180 ~ 180水平角度 (°)
tiltFloat-90 ~ 90垂直角度 (°)
speedInteger1-100转动速度 (%)

请求:

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "tilt": -10.0, "speed": 50}}

getMotorAngle

获取当前电机角度。

请求:

{"reqId": 1, "method": "getMotorAngle", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {"pan": 45.0, "tilt": -10.0}}

setCruisePoint

设置巡航点。

参数:

字段类型必填说明
pathIdInteger路径 ID
pointIdInteger巡航点 ID
panFloat水平角度
tiltFloat垂直角度
targetsArray标靶 ID 列表
dwellTimeInteger停留时间 (秒)

请求:

{"reqId": 1, "method": "setCruisePoint", "params": {
  "pathId": 1,
  "pointId": 1,
  "pan": 45.0,
  "tilt": -10.0,
  "targets": ["1"],
  "dwellTime": 60
}}

startPatrol

启动巡航。

请求:

{"reqId": 1, "method": "startPatrol", "params": {"pathId": 1}}

stopPatrol

停止巡航。

请求:

{"reqId": 1, "method": "stopPatrol", "params": {}}

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: vdm/{deviceId}/telemetry

{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02,0.03],"dy":[0.00,0.01,0.01]}}}}
字段单位说明
tUnix 时间戳
dxmmX 方向位移
dymmY 方向位移

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action紧急

5. 事件数据

设备状态变化时通过 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}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行
300电机不可用
302电机运动中
303电机到达限位
400巡航功能不可用
403巡航已在运行

7. 快速开始

1. 移动到位置

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0, "tilt": 0}}

2. 初始化标靶

{"reqId": 2, "method": "initRefTargets", "params": {
  "targets": [{"targetId": "1", "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}]
}}

3. 设置巡航点

{"reqId": 3, "method": "setCruisePoint", "params": {
  "pathId": 1, "pointId": 1, "pan": 0, "tilt": 0, "targets": ["1"], "dwellTime": 60
}}

4. 启动测量

{"reqId": 4, "method": "startMeasurement", "params": {}}

3.1.8 - VDM-X2W

X2W/X2W4M 双目旋转式视觉位移计 API 参考手册

型号: X2W / X2W4M | 版本: 1.0 | 更新: 2026-01-08

X2W 系列是双目旋转式视觉位移计,支持双轴云台和自动巡航,适用于多点巡航监测场景。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

电机控制 API

方法说明
setMotorAngle设置电机角度
getMotorAngle获取电机角度
setMotorZero设置电机零点
enableMotor启用电机
disableMotor禁用电机

巡航控制 API

方法说明
getCruisePaths获取巡航路径
setCruisePoint设置巡航点
removeCruisePoint移除巡航点
startPatrol启动巡航
stopPatrol停止巡航
getPatrolStatus获取巡航状态

2. API 详情

initRefTargets

双目设备需要指定 sensorId 参数。

参数:

字段类型必填说明
targetsArray标靶配置
targets[].targetIdString标靶 ID
targets[].sensorIdInteger视觉传感器 ID (0 或 1)
targets[].roiObjectROI 区域
targets[].distanceFloat测量距离 (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 坐标需相应调整。


addTargets

在已有标靶基础上添加新标靶。

请求:

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

getTargets

获取当前标靶列表。

请求:

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

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [{"targetId": "1", "distance": 5.5}]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setMotorAngle

设置电机角度。

参数:

字段类型范围说明
panFloat-180 ~ 180水平角度 (°)
tiltFloat-90 ~ 90垂直角度 (°)
speedInteger1-100转动速度 (%)

请求:

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "tilt": -10.0, "speed": 50}}

getMotorAngle

获取当前电机角度。

请求:

{"reqId": 1, "method": "getMotorAngle", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {"pan": 45.0, "tilt": -10.0}}

setCruisePoint

设置巡航点。

参数:

字段类型必填说明
pathIdInteger路径 ID
pointIdInteger巡航点 ID
panFloat水平角度
tiltFloat垂直角度
targetsArray标靶 ID 列表
dwellTimeInteger停留时间 (秒)

请求:

{"reqId": 1, "method": "setCruisePoint", "params": {
  "pathId": 1,
  "pointId": 1,
  "pan": 45.0,
  "tilt": -10.0,
  "targets": ["1", "2"],
  "dwellTime": 60
}}

setAttr

支持配置 3D 融合上报指标。

请求:

{"reqId": 1, "method": "setAttr", "params": {
  "reportMetrics": ["dx", "dy", "dz", "tilt"]
}}
指标说明
dxX方向累积位移变化
dyY方向累积位移变化
dzZ方向累积位移变化
tilt倾斜角度变化

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: 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}}}}
字段单位说明
tUnix 时间戳
dxmmX方向累积位移变化
dymmY方向累积位移变化
dzmmZ方向累积位移变化
tilt″(角秒)倾斜角度变化

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action紧急

5. 事件数据

设备状态变化时通过 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}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行
300电机不可用
302电机运动中
303电机到达限位
400巡航功能不可用
403巡航已在运行

7. 典型工作流程

多点巡航监测

1. 设置巡航点 1 (pan=0, tilt=0)
   └─ 初始化标靶 1, 2

2. 设置巡航点 2 (pan=45, tilt=-10)
   └─ 初始化标靶 3

3. 启动巡航
   └─ 设备自动在各点之间循环
   └─ 每个点停留 dwellTime 秒进行测量

4. 接收遥测数据
   └─ 位移数据包含当前巡航点的标靶

8. 快速开始

1. 移动到位置

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0, "tilt": 0}}

2. 初始化标靶

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

3. 设置巡航点

{"reqId": 3, "method": "setCruisePoint", "params": {
  "pathId": 1, "pointId": 1, "pan": 0, "tilt": 0, "targets": ["1", "2"], "dwellTime": 60
}}

4. 启动测量

{"reqId": 4, "method": "startMeasurement", "params": {}}

4 - 名词解释

术语与概念说明

本章节对文档中使用的专业术语和概念进行解释。

设备相关

术语英文说明
VDMVisual Displacement Meter视觉位移计
设备 IDDevice ID设备的唯一标识符
标靶Target视觉位移计通过监测标靶计算出结构物变形
基准点标靶Reference Target基准点用于纠正设备测量中的误差
感兴趣区域Region of Interest (ROI)用于框选标靶的位置,标识标靶的名字
累积位移变化Displacement标靶相对于初值位置的位移变化量
采样频率Sampling Frequency视觉位移计的测量频率

巡航功能

术语英文说明
巡航Cruise / Patrol视觉位移计旋转监测时,自动巡航监测不同视野范围内的标靶
巡航路径Cruise Path视觉位移计旋转监测时的指定路线
巡航点Cruise Point / Waypoint视觉位移计通过监测标靶计算出结构物变形
停留时间Dwell Time基准点用于纠正设备测量中的误差
自动巡航Auto Patrol设备的唯一标识符

监测相关

术语英文说明
监测项目Project一组相关监测点和设备的集合,通常对应一个工程项目
监测点Monitoring Point具体的测量位置,可关联一个或多个设备传感器数据源
遥测数据Telemetry设备上报的测量数据,如位移、温度、湿度等
3AAlert, Alarm and Action告警的等级:预警、报警和行动

通信协议

术语英文说明
MQTTMessage Queuing Telemetry Transport轻量级消息传输协议,用于物联网设备通信
Topic-MQTT 消息主题,用于消息的分类和路由
QoSQuality of Service消息服务质量等级(0/1/2)

数据格式

术语英文说明
JSONJavaScript Object Notation轻量级数据交换格式
时间戳TimestampUnix 时间戳,单位为毫秒

平台概念

术语英文说明
客户 IDCustomer ID客户身份的唯一标识符
Token-认证令牌,用于 API 调用身份验证
实体Entity平台中的对象,包括设备、监测点、项目等