Skip to content

网关接入认证流程

完整流程

步骤说明

步骤 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_inhex接收 BLE Mesh 控制指令
订阅{topicL1}/{mq_id}/systemJSON接收系统级指令(重启、OTA 等)
订阅{topicL1}/{mq_id}/at_inAT 命令接收串口指令
发布{topicL1}/{mq_id}/ble_outhex上报 BLE Mesh 设备状态
发布{topicL1}/{mq_id}/system_outJSON上报系统级状态
发布{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_configconfig_content 格式:

json
{
  "port": 1883,
  "server": "192.168.3.164",
  "protocol": "mqtt",
  "keepalive": 60,
  "server_id": 1
}