# 设备端 MQTT 接入与通信文档
# 1. 连接与认证
设备通过 MQTT 协议与服务端建立连接,需使用指定的认证信息。
- 服务器地址 (Broker URL):
mqtt://crane-dev.gaiais.com:7883
认证参数示例:
| 参数 | 示例值 | 说明 |
|---|---|---|
| Client ID | 2gxEAkvMzxdGx5b3.cvt_001 | 客户端 ID,用于唯一标识该终端(通常格式为 ProductKey.DeviceName) |
| Username | cvt_001&2gxEAkvMzxdGx5b3 | 用户名,用于认证 MQTT 连接(通常格式为 DeviceName&ProductKey) |
| Password | 987d43cb46105a2c809c5219f67ece4237e3ef62131e3b836d8cb5fe70aece85 | 密码,用于认证 MQTT 连接 |
Topic 所需参数:
| ProductKey | 2gxEAkvMzxdGx5b3 | 产品唯一标识,用于唯一标识该终端所属的产品 |
|---|---|---|
| DeviceName | cvt_001 | 设备唯一标识,用于唯一标识该终端 |
# 2. 设备状态与心跳同步
设备需在开机或关机的时候上传对应报文
- 上报 Topic:
/sys/{productKey}/{deviceName}/thing/state/update
上线心跳 (State = 1):
{
"method": "thing.state.update",
"params": {
"state": 1
}
}
下线心跳 (State = 2):
{
"method": "thing.state.update",
"params": {
"state": 2
}
}
# 3. 传感器数据上报
设备定期将传感器采集的实时数据上报至云端。
# 3.1 传感器数据上报
- 上报 Topic:
/sys/{productKey}/{deviceName}/thing/property/post
{
"method": "thing.property.post",
"params": {
"wind_speed": 11.1,
"boom_elevation": 0.19,
"body_pitch": -0.12,
"obstacle_front": 2.6605495649949527,
"obstacle_rear": 0.5,
"obstacle_left": 2.7301228099146995,
"obstacle_right": 3.642807893429924,
"obstacle_top": 3.127299533442788,
"obstacle_bottom": 2.45007724731956,
"latitude": 39.907052,
"longitude": 116.404951,
"boom_latitude": 39.906914,
"boom_longitude": 116.405151,
"chassis_altitude": 45.522,
"boom_altitude": 47.297,
"slew_angle": 75.0,
"slew_speed": 1.6,
"boom_length": 43.86,
"boom_tip_height": 0.15,
"boom_horizontal_projection": 43.86,
"rtk_quality": 5,
"satellites_used": 12,
"hdop": 2.1,
"gps_timestamp": 1780308372000,
"obstacle_distance": 0.5,
"boom_cross_tilt": -1.75,
"body_roll": 0.94
}
}
# 3.2 传感器数据字段字典
| 字段标识符 | 中文意思 | 数据类型 | 取值范围 | 单位 |
|---|---|---|---|---|
wind_speed | 风速 | float | 0 ~ 70 | m/s (米每秒) |
boom_elevation | 吊臂俯仰角 | float | -90 ~ 90 | ° (度) |
body_pitch | 车身俯仰角 | float | -90 ~ 90 | ° (度) |
obstacle_front | 前方避障距离 | float | 0.03 ~ 20 | m (米) |
obstacle_rear | 后方避障距离 | float | 0.03 ~ 20 | m (米) |
obstacle_left | 左侧避障距离 | float | 0.03 ~ 20 | m (米) |
obstacle_right | 右侧避障距离 | float | 0.03 ~ 20 | m (米) |
obstacle_top | 上方避障距离 | float | 0.03 ~ 20 | m (米) |
obstacle_bottom | 下方避障距离 | float | 0.03 ~ 20 | m (米) |
latitude | 车身纬度 | double | -90 ~ 90 | ° (度) |
longitude | 车身经度 | double | -180 ~ 180 | ° (度) |
boom_latitude | 吊臂纬度 | double | -90 ~ 90 | ° (度) |
boom_longitude | 吊臂经度 | double | -180 ~ 180 | ° (度) |
chassis_altitude | 车身海拔高度 | double | -500 ~ 9000 | m (米) |
boom_altitude | 吊臂海拔高度 | double | -500 ~ 9000 | m (米) |
slew_angle | 回转角度 | float | 0 ~ 360 | ° (度) |
slew_speed | 回转速度 | float | -60 ~ 60 | °/s (度每秒) |
boom_length | 大臂长度 | float | 0 ~ 100 | m (米) |
boom_tip_height | 臂尖高度 | float | -10 ~ 100 | m (米) |
boom_horizontal_projection | 大臂水平投影 | float | 0 ~ 100 | m (米) |
rtk_quality | RTK定位质量 | int | 0 ~ 5 | count (次) |
satellites_used | 使用卫星数 | int | 0 ~ 40 | pcs (个) |
hdop | 水平精度因子 | float | 0.5 ~ 10 | count (次) |
gps_timestamp | GNSS时间戳 | date | - | - |
obstacle_distance | 避障最短距离 | float | 0.03 ~ 20 | m (米) |
# 4. 阈值数据通信
用于设备上报当前生效的阈值,以及服务端下发新的阈值配置。
# 4.1 阈值数据上报
- 上报 Topic:
/sys/{productKey}/{deviceName}/thing/property/post
{
"method": "thing.property.post",
"params": {
"threshold": {
"body_pitch_min": -5.6,
"body_pitch_max": 5.5,
"boom_elevation_min": 0.0,
"boom_elevation_max": 75.0,
"slew_angle_min": 0.0,
"slew_angle_max": 360.0,
"slew_speed_min": -30.0,
"slew_speed_max": 30.0,
"boom_length_min": 5.0,
"boom_length_max": 50.0,
"boom_tip_height_min": 0.0,
"boom_tip_height_max": 80.0,
"obstacle_front": 5.0,
"obstacle_rear": 3.0,
"obstacle_left": 4.0,
"obstacle_right": 4.0,
"obstacle_top": 10.0,
"obstacle_bottom": 2.0,
"fatigue_driving_time_max": 4.0,
"power_line_dist_min": 3.0,
"blind_spot_dist_min": 5.0,
"tilt_angle_l1_max": 3.0,
"tilt_angle_l2_max": 5.0,
"tilt_angle_l3_max": 8.0
}
}
}
# 4.2 阈值数据下发
- 下发 Topic:
/sys/{productKey}/{deviceName}/thing/property/set
{
"id": "a33d1abf44e44795bfbc6bf4083f0b3e",
"reportTime": 1780629753065,
"deviceId": 88,
"tenantId": 1,
"requestId": "a33d1abf44e44795bfbc6bf4083f0b3e",
"method": "thing.property.set",
"params": {
"threshold": {
"body_pitch_min": -5.3,
"body_pitch_max": 5.5,
"boom_elevation_min": 0,
"boom_elevation_max": 75,
"slew_angle_min": 0,
"slew_angle_max": 360,
"slew_speed_min": -30,
"slew_speed_max": 30,
"boom_length_min": 5,
"boom_length_max": 50,
"boom_tip_height_min": 0,
"boom_tip_height_max": 80,
"obstacle_front": 5,
"obstacle_rear": 3,
"obstacle_left": 4,
"obstacle_right": 4,
"obstacle_top": 10,
"obstacle_bottom": 2,
"fatigue_driving_time_max": 4,
"power_line_dist_min": 3,
"blind_spot_dist_min": 5,
"tilt_angle_l1_max": 3,
"tilt_angle_l2_max": 5,
"tilt_angle_l3_max": 8
}
}
}
# 4.3 阈值字段数据字典
以下结构体对应 threshold 参数内部的字段解析,包含各字段的中文名称、数据类型、取值范围以及单位:
| 字段标识符 | 中文意思 | 数据类型 | 取值范围 | 单位 |
|---|---|---|---|---|
body_pitch_min | 车身俯仰角下限 | Float | -90 ~ 90 | 度 (°) |
body_pitch_max | 车身俯仰角上限 | Float | -90 ~ 90 | 度 (°) |
boom_elevation_min | 吊臂俯仰角下限 | Float | -90 ~ 90 | 度 (°) |
boom_elevation_max | 吊臂俯仰角上限 | Int/Float | -90 ~ 90 | 度 (°) |
slew_angle_min | 回转角度下限 | Float | 0 ~ 360 | 度 (°) |
slew_angle_max | 回转角度上限 | Float | 0 ~ 360 | 度 (°) |
slew_speed_min | 回转速度下限 | Float | -60 ~ 60 | 度每秒 (°/s) |
slew_speed_max | 回转速度上限 | Float | -60 ~ 60 | 度每秒 (°/s) |
boom_length_min | 大臂长度下限 | Float | 0 ~ 100 | 米 (m) |
boom_length_max | 大臂长度上限 | Float | 0 ~ 100 | 米 (m) |
boom_tip_height_min | 臂尖高度下限 | Float | -10 ~ 100 | 米 (m) |
boom_tip_height_max | 臂尖高度上限 | Int/Float | -10 ~ 100 | 米 (m) |
obstacle_front | 前方距离 | Float | 0.01 ~ 20 | 米 (m) |
obstacle_rear | 后方距离 | Float | 0.01 ~ 20 | 米 (m) |
obstacle_left | 左侧距离 | Float | 0.01 ~ 20 | 米 (m) |
obstacle_right | 右侧距离 | Float | 0.01 ~ 20 | 米 (m) |
obstacle_top | 上方距离 | Float | 0.01 ~ 20 | 米 (m) |
obstacle_bottom | 下方距离 | Float | 0.01 ~ 20 | 米 (m) |
fatigue_driving_time_max | 疲劳驾驶预警 | Int | 0 ~ 24 | 小时 (h) |
power_line_dist_min | 近电预警 | Float | 0 ~ 20 | 米 (m) |
blind_spot_dist_min | 盲区人员预警 | Float | 0 ~ 50 | 米 (m) |
tilt_angle_l1_max | 倾倒风险一级 | Float | -90 ~ 90 | 度 (°) |
tilt_angle_l2_max | 倾倒风险二级 | Float | -90 ~ 90 | 度 (°) |
tilt_angle_l3_max | 倾倒风险三级 | Float | -90 ~ 90 | 度 (°) |
# 5. 报警信息上传
等待补充