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 | 确保送达 |