网关接入认证流程
完整流程
步骤说明
步骤 1:获取 MQTT 连接信息
网关通过 HTTP 请求 hapi 获取 MQTT 凭证,详见 MQTT 连接信息。
步骤 2-4:MQTT 连接认证
网关使用 mq_id / mq_pass 连接 EMQX。EMQX 通过 HTTP Webhook 调用 mapi 认证,详见 MQTT 认证。
认证逻辑:
- 查
license_tb表,校验mq_pass匹配且status=1 license_type=1(设备)的凭证才允许网关连接- 认证失败返回
{ "result": "deny" },EMQX 断开连接
步骤 5-6:上线事件处理
mapi 订阅 EMQX $SYS 系统主题,处理设备上线事件,详见 设备上下线事件。
步骤 7-11:订阅与发布
网关连接成功后,订阅下行主题、发布上行主题:
| 方向 | 主题 | 格式 | 说明 |
|---|---|---|---|
| 订阅 | {topicL1}/{mq_id}/ble_in | hex | 接收 BLE Mesh 控制指令 |
| 订阅 | {topicL1}/{mq_id}/system | JSON | 接收系统级指令(重启、OTA 等) |
| 订阅 | {topicL1}/{mq_id}/at_in | AT 命令 | 接收串口指令 |
| 发布 | {topicL1}/{mq_id}/ble_out | hex | 上报 BLE Mesh 设备状态 |
| 发布 | {topicL1}/{mq_id}/system_out | JSON | 上报系统级状态 |
| 发布 | {topicL1}/{mq_id}/at_out | 字符串 | 上报 AT 命令响应 |
topicL1 确定:
api_version > 1时用mqtt{server_id}(如mqtt1),否则用module_code(如6zcrzknc)。详见 MQTT 主题格式。
mqtt_config 配置机制
hapi module/login 接口在网关配网时下发 MQTT 服务器地址:
- 生产环境:从
global_config_tb.mqtt_config读取 - 测试环境:用硬编码地址
mqtt_config 的 config_content 格式:
json
{
"port": 1883,
"server": "192.168.3.164",
"protocol": "mqtt",
"keepalive": 60,
"server_id": 1
}