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