协议规格
INT705 倾角振动传感器 MQTT JSON 接入协议
连接参数
| 参数 | 值 |
|---|---|
| 协议 | MQTT v3.1.1 |
| Payload | JSON 字符串 |
| 编码 | UTF-8 |
| Client ID | 设备 IMEI(设备唯一标识) |
| Username | MQTT 用户名;服务器不要求认证时留空 |
| Password | MQTT 密码;服务器不要求认证时留空 |
该设备只支持配置一个上行 Topic 和一个下行 Topic。服务端应按设备配置的 Topic 接收和下发。
主题配置
| 配置项 | 方向 | 说明 | 示例 |
|---|---|---|---|
| Pub Topic | 上行 | 设备向服务端发布数据、状态和告警 | inclinometer/{IMEI}/up |
| Sub Topic | 下行 | 服务端向设备下发参数配置或清零指令 | inclinometer/{IMEI}/down |
{IMEI} 为设备 IMEI,作为设备唯一标识。实际项目中 Topic 字符串可以按 MQTT 服务器要求配置,但设备侧仍只有一个上行 Topic 和一个下行 Topic。建议使用普通业务主题,不使用 /sys/ 或 $SYS/ 前缀,避免与服务器系统主题、平台预留主题或访问控制规则混淆。
上行报文
设备通过 Pub Topic 上报 JSON 字符串。根对象必须包含 params,设备数据字段放在 params 对象内。
{
"params": {
"INDEX": 1,
"IMEI": "862177241709877",
"PID": 386025,
"XANG": 0.000,
"YANG": 0.000,
"ZANG": 0.000,
"XACC": 0.000,
"YACC": 0.000,
"ZACC": 0.000,
"ALARM_FLG": 0,
"ALARM_TYPE": 0,
"ANG": 0.000,
"ACC": 0.000,
"CLR_FLG": 0,
"FIX": 0,
"FREQ": 28800,
"RFAA": 600,
"ACTC": 0,
"CSQ": 0,
"EQC": 0,
"TEMP": 0.00,
"LNGTD": 0.00,
"LATTD": 0.00,
"SOFTVERSION": "205A220916"
}
}
上行报文为设备 JSON,不包含设备时间戳字段。服务端入库时可使用 MQTT 接收时间作为数据时间。
报文关键字说明
以下关键字均位于 params 对象内。
| 关键字 | 含义 | 格式 | 范围 | 备注 |
|---|---|---|---|---|
INDEX | 报文序号 | uint32 | 0 - 2^32 | 上报自增 |
IMEI | 国际移动设备识别码 | String | 15 - 17 位 | 设备唯一标识 |
PID | 产品 ID | int32 | 0 - 2^31 | 用户自分配 |
XANG | X 轴与水平面的夹角 | Float | -90 - 90° | 当前角度,超过角度阈值产生告警 |
YANG | Y 轴与水平面的夹角 | Float | -90 - 90° | 当前角度,超过角度阈值产生告警 |
ZANG | Z 轴与水平面的夹角 | Float | -90 - 90° | 不清零,不告警 |
XACC | X 轴加速度 | Float | -2 - 2g | 加速度变化量,超过加速度阈值产生告警 |
YACC | Y 轴加速度 | Float | -2 - 2g | 加速度变化量,超过加速度阈值产生告警 |
ZACC | Z 轴加速度 | Float | -2 - 2g | 加速度变化量,超过加速度阈值产生告警 |
ALARM_FLG | 告警标志 | int | 0 正常,1 告警 | 默认 0 |
ALARM_TYPE | 告警类型 | int | 0 正常,1 角度告警,2 加速度告警,3 角度和加速度同时告警 | 默认 0 |
ANG | 角度阈值 | Float | 0 - 90° | 默认 0° |
ACC | 加速度阈值 | Float | 0 - 1g | 默认 0g |
CLR_FLG | 清零标志 | int | 0 绝对零点,1 相对零点 | 默认 0 |
FIX | 安装方向 | int | 0 水平向上,1 垂直向上,2 垂直向左,3 垂直向右,4 水平向下 | 默认 0 |
FREQ | 休眠周期 | int | 600 - 259200s | 默认 86400 秒 |
RFAA | 告警周期 | int | 600 - 259200s | 默认 600 秒 |
ACTC | 告警确认 | int | 0 - 30min | 默认 0 分钟 |
CSQ | 信号强度 | int | 0 - 99 | <=10 信号差,11 - 18 信号一般,>18 信号好 |
EQC | 电量 | int | 0 - 100 | 百分比 |
TEMP | 温度 | Float | -128 - 127°C | 单位:摄氏度 |
LNGTD | 经度 | Float | -180 - 180° | 单位:度 |
LATTD | 纬度 | Float | -90 - 90° | 单位:度 |
SOFTVERSION | 软件版本 | String | 10 个字符 | - |
解析说明
- 服务端应先读取根对象
params,再解析其中的设备字段。 - 字段名区分大小写,必须按上表的大写关键字解析。
INDEX是报文序号,不是时间戳。上行报文不包含设备时间字段,数据时间建议使用服务端收到 MQTT 消息的时间。IMEI是设备唯一标识,建议校验 Topic 中的{IMEI}与报文中的params.IMEI是否一致。ANG和ACC是当前配置阈值,不是实时测量值。实时测量值分别为XANG、YANG、ZANG和XACC、YACC、ZACC。- 角度告警由
XANG、YANG与ANG判断;ZANG只上报,不参与清零和告警。 - 加速度告警由
XACC、YACC、ZACC与ACC判断。 FIX表示设备安装方向,服务端展示或计算角度时应保留该配置值。
下行报文
服务端通过 Sub Topic 下发 JSON 字符串。根对象必须包含 params,配置字段放在 params 对象内。字段名保持设备定义的大写格式。
批量配置
{
"params": {
"ANG": 5,
"ACC": 0.082,
"FREQ": 43200,
"RFAA": 1200,
"ACTC": 3,
"CLR_FLG": 1
}
}
单项配置
{"params":{"ANG":5}}
{"params":{"ACC":0.082}}
{"params":{"FREQ":43200}}
{"params":{"RFAA":1200}}
{"params":{"ACTC":3}}
{"params":{"CLR_FLG":1}}
下行字段
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
params.ANG | Float | 0 - 90° | 倾角告警阈值 |
params.ACC | Float | 0 - 1g | 振动加速度告警阈值 |
params.FREQ | Integer | 600 - 259200s | 休眠周期 |
params.RFAA | Integer | 600 - 259200s | 告警周期 |
params.ACTC | Integer | 0 - 30min | 告警确认 |
params.CLR_FLG | Integer | 0 或 1 | 清零标志,0 表示绝对零点,1 表示相对零点 |
下发时直接发布完整 JSON 对象字符串,不要把整个 JSON 再作为字符串值封装;不要使用单引号、注释或尾逗号;所有下行参数必须放在 params 对象内,字段名区分大小写。
配置下发后,服务端可通过后续上行报文中的 ANG、ACC、FREQ、RFAA、ACTC 等字段确认设备当前配置值;清零动作可结合后续角度数据判断是否生效。
告警与清零
| 条件 | 字段 |
|---|---|
| 正常 | ALARM_FLG = 0,ALARM_TYPE = 0 |
| 倾角超过阈值 | ALARM_FLG = 1,ALARM_TYPE = 1 |
| 振动加速度超过阈值 | ALARM_FLG = 1,ALARM_TYPE = 2 |
| 倾角和振动加速度同时超过阈值 | ALARM_FLG = 1,ALARM_TYPE = 3 |
| 设置相对零点 | 服务端下发 {"params":{"CLR_FLG":1}} |
服务端解析上行数据时应优先判断 ALARM_FLG,再根据 ALARM_TYPE 区分告警类型。