本协议用于胜透物联网设备与服务端基于MQTT协议的数据通信,统一设备数据上报、事件、报警、物模型、命令等交互格式,便于服务端自动发现、解析和管理设备。
{nameSpace}/{deviceType}/{clientCode}/{deviceId}/{messageType}shengtou| 消息类型 | 方向 | 说明 |
|---|---|---|
| properties | 设备→服务端 | 设备属性数据上报 |
| events | 设备→服务端 | 设备事件数据上报 |
| alarms | 设备→服务端 | 设备报警数据上报 |
| model | 设备→服务端 | 设备物模型定义 |
| status | 双向 | 设备在线状态 |
| commands | 服务端→设备 | 设备控制命令 |
| config | 服务端→设备 | 设备配置下发 |
{
"messageId": "msg_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"properties": {
"temperature": { "value": 25.6, "unit": "°C", "quality": "good", "timestamp": 1718380800000 },
"humidity": { "value": 65.2, "unit": "%RH", "quality": "good", "timestamp": 1718380800000 }
}
}
}
{
"messageId": "evt_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"events": [
{ "eventType": "startup", "eventLevel": "info", "eventCode": "EVT_001", "description": "设备启动完成", "timestamp": 1718380800000 }
]
}
}
{
"messageId": "alm_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"alarms": [
{ "alarmId": "ALM_001", "alarmType": "threshold_exceeded", "alarmLevel": "warning", "alarmCode": "TEMP_HIGH", "description": "温度超出上限阈值", "triggerValue": 35.8, "threshold": 35.0, "property": "temperature", "timestamp": 1718380800000, "status": "active" }
]
}
}
{
"messageId": "mdl_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"model": {
"deviceInfo": { "manufacturer": "胜透科技", "model": "ST-TH-001", "version": "1.0.0", "description": "温湿度传感器" },
"properties": {
"temperature": { "dataType": "float", "unit": "°C", "range": { "min": -40, "max": 85 }, "precision": 1, "description": "环境温度" },
"humidity": { "dataType": "float", "unit": "%RH", "range": { "min": 0, "max": 100 }, "precision": 1, "description": "相对湿度" }
},
"events": { "startup": { "eventType": "info", "description": "设备启动事件" } },
"alarms": { "TEMP_HIGH": { "alarmType": "threshold_exceeded", "description": "温度过高报警", "defaultThreshold": 35.0 } }
}
}
}
{
"messageId": "sts_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"status": { "online": true, "lastHeartbeat": 1718380800000, "uptime": 86400000 }
}
}
{
"messageId": "cmd_20250614_001",
"timestamp": 1718380800000,
"clientCode": "Data-It_XzOffice",
"deviceId": "TH001",
"deviceType": "sensor",
"version": "1.0",
"data": {
"command": { "commandType": "setProperty", "commandId": "SET_001", "parameters": { "reportInterval": 60000 }, "timeout": 30000 }
}
}
model Topic发布自身物模型定义。{nameSpace}/+/+/+/model实现自动发现和注册新设备。为降低物模型消息丢失导致服务端无法及时发现设备的风险,协议建议如下重发机制:
model Topic发布物模型消息。通过上述机制,可有效提升设备自动发现的可靠性,避免因单次消息丢失导致设备无法被服务端识别。
为降低协议对设备主动上报物模型和状态的依赖、提升自动发现的健壮性,建议如下:
通过上述方法,即使部分设备端实现不规范,也能通过服务端主动检测和交互机制,提升自动发现和管理的健壮性,减少因设备未主动上报导致的识别遗漏。
为避免因消息重发、网络抖动等原因导致的重复数据处理,协议要求服务端具备消息幂等处理能力。实现原理与方法如下:
通过上述机制,可有效防止重复数据写入和业务逻辑重复执行,保障系统数据一致性和协议健壮性。
为支持大规模设备接入和高并发数据处理,协议建议如下优化与分布式扩展方法:
通过上述方法,可有效支撑成千上万设备的并发接入和数据上报,保障系统的高可用性和可扩展性。
为保障设备物模型变更后的兼容性和服务端适配能力,协议建议如下:
通过上述机制,可确保设备物模型变更时系统具备良好的兼容性和可维护性,避免因模型变更导致的数据解析或业务中断。
| 质量标识 | 说明 |
|---|---|
| good | 良好 |
| uncertain | 不确定 |
| bad | 坏值 |
| maintenance | 维护中 |
| 报警级别 | 说明 |
|---|---|
| info | 信息 |
| warning | 警告 |
| minor | 次要报警 |
| major | 重要报警 |
| critical | 严重报警 |
| 消息类型 | 建议QoS |
|---|---|
| 属性数据 | 0 |
| 事件数据 | 1 |
| 报警数据 | 1 |
| 物模型 | 1 |
| 控制命令 | 1 |
| 设备状态 | 0 |
文档版本: 1.1
创建日期: 2025年7月14日
维护者: 岱特智能物联网团队