Skip to content

MQTT 配置说明

目前MQTT 默认支持 3.1.1

主题定义

[主题类型]/[topic]/client/[订阅/发布]/[id]

主题类型

类型
透传trans
控制control

topic

topic可自定义

client

固定值 表示指令是客户端的

订阅/发布

订阅 sub 发布 pub

id

自动拼接上设备的唯一ID

MQTT 主题

透传

订阅主题
trans/[topic]/client/sub/[id]
发布主题
trans/[topic]/client/pub/[id]

控制

TIP

基于安全考虑,建议控制主题需要在服务器进行 ACL 控制。

控制主题定义格式:

control/<topic>/client/<sub|pub>/<action>/<device_id>

订阅主题

1、设置低功耗

control/<topic>/client/sub/low_power/<device_id>

传入参数与 bluetooth 设置低功耗参数一致。

2、获取透传设备状态

control/<topic>/client/sub/get_status/<device_id> //获取状态

3、重启设备

control/<topic>/client/sub/restart_device/<device_id> //重启设备

发布主题

1、 透传设备状态

control/<topic>/client/pub/get_status/<device_id>

说明: 此主题在接收到订阅主题 获取透传设备状态 的时候进行发布。

参数使用TLV数据结构,Type 定义如下:

Type说明
0x01BLE状态
0x02WI-FI状态
0x03MQTT 状态
0x04低功耗 开启状态
0x05低功耗 睡眠时长
0x06低功耗 清醒时长
BLE状态 
// OFF: BLE 栈未运行/未初始化或已停止(资源释放/不可用)
BC_BLE_STATE_OFF = 0,
// IDLE: BLE 栈运行中,但当前未广播且未连接(例如延迟广播窗口)
BC_BLE_STATE_IDLE = 1,
// ADVERTISING: 正在广播
BC_BLE_STATE_ADVERTISING = 2,
// CONNECTED: 已建立连接
BC_BLE_STATE_CONNECTED = 3

WI-FI状态
WIFI_STATE_OFF = 0,
WIFI_STATE_DISCONNECTED =1,
WIFI_STATE_CONNECTING =2,
WIFI_STATE_CONNECTED =3,
WIFI_STATE_GOT_IP = 4

MQTT状态
MQTT_STATE_IDLE = 0,
MQTT_STATE_CONNECTING =1,
MQTT_STATE_CONNECTED =2,
MQTT_STATE_ERROR =3

通知业务服务器

当 MQTT 客户端成功连接到 MQTT 服务器(Broker)后,服务器是否能主动通知业务服务器,以及具体的实现方法。答案是完全可以,主流的 MQTT 服务器都提供了成熟的机制来捕获客户端连接事件,并将其推送给业务服务器。 核心实现思路 MQTT 服务器的核心逻辑是:捕获客户端连接(CONNECT)事件 → 提取客户端连接信息(ClientID、IP、用户名、连接时间等) → 通过标准化的方式(如 HTTP/HTTPS、MQTT 主题转发、gRPC 等)将事件数据推送给业务服务器。

例如使用的EMQX服务器 https://docs.emqx.com/zh/emqx/v5.1/data-integration/rule-get-started.html