Skip to content

AT 命令集 (at_in / at_out) ​

hapi 通过 {topicL1}/{mq_id}/at_in 主题向网关下发 AT 命令,网关通过 {topicL1}/{mq_id}/at_out 上报响应。

主题 ​

主题方向格式说明
{topicL1}/{mq_id}/at_inhapi → 网关AT 命令字符串串口指令下发
{topicL1}/{mq_id}/at_out网关 → hapi字符串AT 命令响应

消息格式 ​

AT 命令以纯文本字符串发送,以 \r\n 结尾:

at+restore\r\n

AT 命令列表 ​

命令参数响应说明
AT无OK测试命令
AT+CWMODE<mode>OK / ERRORWiFi 模式(1=STA, 2=AP)
AT+CWJAP<ssid>,<password>+CWJAP:1 / +CWJAP:0连接 AP
AT+CIPSTA无+CIPSTA:ip:"x.x.x.x"查询 IP 地址
AT+CIPSTAMAC无+CIPSTAMAC:"xx:xx:..."查询 MAC 地址
AT+CPCODE<code> / 无OK / +CPCODE:"..."设置/查询模块编码
AT+MQTTSTART无OK启动 MQTT 连接
AT+BLE_PAIR<0/1>OKBLE 配对控制(0=停止, 1=开始)
AT+RSSI无+RSSI:<dBm>查询 WiFi 信号强度
AT+RESTORE无OK恢复出厂设置
AT+FUNC<sn> / 无OK / +FUNC:"..."设置/查询客户序列号
AT+GET_SCAN无<ssid>,<bssid>,<rssi>,<ch>,<auth>WiFi 扫描结果
AT+NODEmeshkey=<hex> / 无+NODE:meshkey="..."节点/meshkey 管理

常用场景 ​

恢复出厂设置 ​

hapi 调用 resetGateway(deviceId) 下发 at+restore 命令,网关恢复出厂后自动重启。

Topic: {topicL1}/{mq_id}/at_in
Payload: at+restore\r\n

WiFi 配网 ​

配网流程中,小程序通过 ztUtil SDK 经 BLE 向网关发送 AT 命令配置 WiFi:

AT+CWMODE=1          ← 设置为 STA 模式
AT+CWJAP="ssid","psk" ← 连接 WiFi
AT+MQTTSTART          ← 启动 MQTT

查询设备信息 ​

AT+CIPSTA       → 查询 IP
AT+CIPSTAMAC    → 查询 MAC
AT+RSSI         → 查询信号强度
AT+FUNC         → 查询序列号

AT 命令处理流程 ​

网关固件中 shell_task 负责处理 AT 命令:

  1. UART0 逐字节读取 → 行缓冲
  2. 遇到 \r\n 触发 AT 命令解析
  3. 匹配命令前缀 → 分发到对应处理函数
  4. 执行操作 → 返回响应字符串

AT 命令同时支持 UART 串口直连和 MQTT 远程下发两种方式。MQTT 下发的 AT 命令通过 at_in 主题接收,响应通过 at_out 主题上报。at_out 的发布通过事件队列异步执行,避免阻塞 UART 接收。

响应分片(BLE 通道) ​

通过 BLE 通道回传 AT 响应时,受链路层单包容量限制,超长响应会按协商 MTU 分片发送。

项规则
单包上限MTU - 3 字节(ATT notify 负载)
MTU 未协商回退为 20 字节(即默认 MTU 23 - 3)
分片顺序按字节序依次发送,接收方需按序拼接
分片标识无独立序号字段;接收方按到达顺序累积至响应完整

对接要点

  • 接收方不能假设「一次 notify = 一条完整响应」,必须累积拼接
  • 响应以 \r\n 结尾,可作为完整帧的判定依据