MQTT 主题格式
主题为三段式:{topicL1}/{mq_id}/{action}
topicL1 确定:
- 旧版网关(
api_version <= 1):module_code(如6zcrzknc) - 新版网关(
api_version > 1):mqtt{server_id}(如mqtt1)
业务主题
| 主题 | 数据方向 | 格式 | 说明 |
|---|---|---|---|
{topicL1}/{mq_id}/ble_in | hapi → 网关 | hex | BLE Mesh 控制指令下发 |
{topicL1}/{mq_id}/ble_out | 网关 → hapi | hex | BLE Mesh 设备状态上报 |
{topicL1}/{mq_id}/system | hapi → 网关 | JSON | 系统级指令(重启、OTA、门锁) |
{topicL1}/{mq_id}/system_out | 网关 → hapi | JSON | 系统级状态上报 |
{topicL1}/{mq_id}/at_in | hapi → 网关 | AT 命令 | 串口指令(如 at+restore) |
{topicL1}/{mq_id}/at_out | 网关 → hapi | 字符串 | AT 命令响应 |
EMQX 系统主题
| 主题 | 数据方向 | 格式 | 说明 |
|---|---|---|---|
$SYS/brokers/{node}/clients/{clientid}/connected | EMQX → mapi | JSON | 设备上线事件 |
$SYS/brokers/{node}/clients/{clientid}/disconnected | EMQX → mapi | JSON | 设备下线事件 |
system 主题 JSON 格式
门锁控制示例(control_lock action):
json
{
"module_sn": "GW001",
"mstype": 18,
"timestamp": 1693900000000,
"data": {
"lock_req": "<加密后的门锁指令>"
}
}| 字段 | 类型 | 说明 |
|---|---|---|
module_sn | string | 网关 SN 序列号 |
mstype | number | 消息类型(18=门锁控制) |
timestamp | number | 时间戳 |
data | object | 消息体 |
system 主题支持多种 mstype,完整编号与内部实现细节不对外发布。下表列出对外契约层面已知的 mstype:
| mstype | 方向 | 说明 |
|---|---|---|
| 1 | 下行 | 配置下发(应用后 5s 重启) |
| 2 | 下行 | 配置下发(仅应用,不重启) |
| 3 | 下行 | 配置下发 + 结果上报 + 5s 重启 |
| 4 / 6 | 上行 | 结果上报 |
| 8 | 上行 | 重启错误上报 |
| 9 | 上行 | 结果上报 + 触发节点列表同步 |
| 15 | 下行 | BLE OTA 会话列表 |
| 16 | 下行 | BLE OTA 删除会话 |
| 17 | 上行 | BLE OTA 进度上报 |
| 18 | 下行 | 门锁控制请求 |
| 19 / 20 / 22 / 24 | 上行 | 门锁品牌响应 |
| 30 | 下行 | 自动化规则通知 |
| 61 / 62 | 下行 / 上行 | 设备一键配置命令 / 结果上报 |
⚠️ 5 / 7 在自研代码中构造后静默丢弃(不上报),编号保留;其余编号属内部实现,不对外发布。
