这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
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 | 确保送达 |
1 - 项目与监测点数据
项目聚合数据与监测点数据格式
项目和监测点数据是面向业务的数据视图。
Topic 结构
inteagle/{customerId}/p/{projectId} # 项目所有数据
inteagle/{customerId}/p/{projectId}/mp/{pointId} # 监测点数据
| 参数 | 说明 | 示例 |
|---|
{customerId} | 客户 ID | cust_abc123 |
{projectId} | 监测项目 ID | proj_abc |
{pointId} | 监测点 ID | point_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 字段说明
| 字段 | 类型 | 说明 |
|---|
entity | EntityRef | 实体引用(类型 + ID) |
disp, tilt, … | Object/Number | 指标数据(按需配置) |
注意:监测点名称、项目名称等元数据通过 HTTP API 获取。
常见指标
| 指标 | 说明 | 单位 |
|---|
dx | X 方向累积位移变化 | mm |
dy | Y 方向累积位移变化 | mm |
dz | Z 方向累积位移变化 | 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 - 设备数据格式
不同设备类型的数据格式
设备数据通过 Topic inteagle/{customerId}/p/{projectId}/d/{deviceId} 推送。
通用消息结构
所有 MQTT 消息采用统一的包装结构:
{
"type": "telemetry | 3A | event | image | attributes",
"ts": 1735560000000,
"payload": {
...
}
}
| 字段 | 类型 | 说明 |
|---|
type | String | 消息类型 |
ts | Long | Unix 毫秒时间戳 |
payload | Object | 具体数据内容 |
开发者可以统一解析:
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 字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|
id | String | 是 | 告警唯一标识 |
alarmType | String | 是 | 告警类型(见数据字典) |
severity | String | 是 | 告警级别 |
status | String | 是 | 告警状态 |
originator.entityType | String | 是 | 实体类型:DEVICE、POINT |
originator.id | String | 是 | 实体 ID |
detail.metric | String | 是 | 触发告警的指标 |
detail.value | Number | 否 | 触发时的实际值 |
detail.threshold | Number | 否 | 阈值 |
detail.message | String | 是 | 告警描述 |
告警级别 (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 字段说明
| 字段 | 类型 | 说明 |
|---|
deviceId | String | 设备 ID |
eventType | String | 事件类型 |
data | Object | 事件相关数据 |
通用事件类型
| eventType | 说明 |
|---|
DEVICE_ONLINE | 设备上线 |
DEVICE_OFFLINE | 设备离线 |
设备特有事件参见各设备文档。
属性变更消息 (attributes)
{
"type": "attributes",
"ts": 1735560000000,
"payload": {
"deviceId": "dev_001",
"data": {
"firmwareVersion": "2.1.0"
}
}
}
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)
| 字段 | 类型 | 说明 |
|---|
disp | Object | 按标靶 ID 组织的位移数据 |
dx, dy, dz | Number | 累积位移变化 (mm) |
tilt | Number | 倾斜变化角度(″ 角秒) |
环境数据 (env)
部分 VDM 型号支持环境数据采集:
| 字段 | 类型 | 单位 | 说明 |
|---|
temperature | Number | °C | 温度 |
humidity | Number | %RH | 相对湿度 |
pressure | Number | kPa | 大气压 |
状态数据 (status)
| 字段 | 类型 | 说明 |
|---|
signal.type | String | 网络类型:4G, Ethernet |
signal.rssi | Integer | 信号强度 (dBm) |
pwr.battery | Number | 电池电压 (V) |
pwr.inputDC | Number | DC 输入电压 (V) |
storage.percent | Integer | 存储使用率 (%) |
告警
设备告警格式参见 告警消息。
视觉位移计设备告警示例
{
"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_VOLTAGE | DC输入电压低 | 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
}
}
| 字段 | 类型 | 说明 |
|---|
entity | EntityRef | 实体引用 |
sensorId | Integer | 视觉传感器 ID(0 或 1) |
trigger | String | 触发类型 |
url | String | 图片下载 URL |
ttl | Integer | URL 有效期(秒) |
触发类型
| trigger | 说明 |
|---|
snapshot | 手动快照 |
3A | 告警触发 |
periodic | 定时拍照 |
属性变更
{
"type": "attributes",
"ts": 1735560000000,
"payload": {
"entity": {
"type": "DEVICE",
"id": "dev_001"
},
"measureFrequency": 10,
"irLightEnabled": true
}
}
VDM 常见属性
| 属性 | 类型 | 说明 |
|---|
measureFrequency | Integer | 测量频率 (Hz) |
irLightEnabled | Boolean | 红外补光灯开关 |
targetCount | Integer | 标靶数量 |
firmwareVersion | String | 固件版本 |