BC20 常用AT指令(MQTT相关)
BC20MQTT相关 AT指令
BC20 常用AT指令
最近玩BC20 用到很多MQTT相关指令,与之相关的命令我也整理了,有需要的自行查看~
AT+CIMI 返回 USIM 卡的 IMSI(国际移动用户识别码)
执行命令使 TA 返回 USIM 卡的 IMSI(不带双引号的字符串),旨在允许 TE 识别连接到 MT 的 USIM。
AT指令 | 说明 |
---|---|
AT+CIMI | 返回 USIM 卡的 IMSI(国际移动用户识别码)(不带双引号的字符串) |
最大响应时间 | 300 毫秒 |
参数如下
响应
<IMSI>
OK
若出现任何错误:
ERROR
或者
+CME ERROR: <err>
AT+CGATT? PS域附着或去附着
设置命令用于将 MT 附着于 PS 域,或者将 MT 从 PS 域去附着。命令完成后,MT 保持在 V.250 命令状态。如果 MT 已经处于请求状态,则将忽略该命令,并且仍将响应 OK。如果 MT 无法实现请求状态,将响应 ERROR 或+CME ERROR。
AT指令 | 说明 |
---|---|
AT+CGATT? | PS 域附着或去附着 |
AT+CGATT= state | 整型。PDP 上下文激活状态 |
最大响应时间 | 85 秒,取决于网络 |
PS 域附着或去附着
手机上网有三个过程,附着、激活、上网。
附着是第一步,相当于语音用户注册到GSM网络一样。
去附着是从GPRS/EDGE/TD网络中退出,就是手机不在这个网络中。
参数如下
1. AT+CGATT?
响应
+CGATT: (支持的<state>列表)
OK
2. AT+CGATT=<state>
响应
OK
若出现任何错误:
ERROR
或者
+CME ERROR: <err>
<state> 整型。PDP 上下文激活状态。
0 去附着
1 附着
MQTT相关
AT指令 | 功能描述 |
---|---|
AT+QMTCFG | 配置 MQTT 可选参数 |
AT+QMTOPEN | 打开 MQTT 客户端网络 |
AT+QMTCLOSE | 关闭 MQTT 客户端网络 |
AT+QMTCONN | 连接客户端至 MQTT 服务器 |
AT+QMTDISC | 从 MQTT 服务器断开客户端连接 |
AT+QMTSUB | 订阅主题 |
AT+QMTUNS | 退订主题 |
AT+QMTPUB | 发布消息 |
老规矩讲常用的。AT指令的使用很简单,就是写入串口,然后读取~
AT+QMTOPEN 打开 MQTT 客户端网络
该命令用于打开 MQTT 客户端网络
AT指令 | 说明 |
---|---|
AT+QMTOPEN | 查询命令 |
AT+QMTOPEN=TCP_connectID,host_name,port | 设置命令 |
最大响应时间 | 75秒,受网络状态影响 |
参数如下
1.AT+QMTOPEN
响应
[+QMTOPEN: <TCP_connectID>,<host_name>,<port>]
OK
2.AT+QMTOPEN=<TCP_connectID>,<host_name>,<port>
响应
OK
+QMTOPEN: <TCP_connectID>,<result>
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<host_name> 字符串类型。服务器地址,可以是 IP 地址或者域名。最大长度:150;单位:字节。
<port> 整型。服务器端口。范围:1~65535。
<result> 整型。命令执行结果。
-1 打开网络失败
0 打开网络成功
AT+QMTCLOSE 关闭 MQTT 客户端网络
该命令用于关闭 MQTT 客户端网络。
AT指令 | 说明 |
---|---|
AT+QMTCLOSE | 查询命令 |
AT+QMTCLOSE=<TCP_connectID> | 设置命令 |
最大响应时间 | 300毫秒 |
参数如下
1. AT+QMTCLOSE
响应
+QMTCLOSE: (支持的<TCP_connectID>范围)
OK
2. AT+QMTCLOSE=<TCP_connectID>
响应
OK
+QMTCLOSE: <TCP_connectID>,<result>
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<result> 整型。命令执行结果。
-1 关闭网络失败
0 关闭网络成功
AT+QMTCONN 连接客户端至 MQTT 服务器
该命令用于请求连接 MQTT 服务器。当客户端和服务器之间创建了一个 TCP/IP Socket 连接,必须使用 CONNECT 流创建一个协议层会话。
AT指令 | 说明 |
---|---|
AT+QMTCONN | 查询命令 |
AT+QMTCONN=<TCP_connectID>,<clientID’>[,<username’>[,<password’>]] | 设置命令 |
最大响应时间 | <pkt_timeout>(默认 10 秒),取决于网络状态 |
参数如下
1. AT+QMTCONN=?
响应
+QMTCONN: (支持的<TCP_connectID>范围),<clientID>[,<
username>[,<password>]]
OK
2. AT+QMTCONN
响应
[+QMTCONN: <TCP_connectID>,<state>]
OK
3. AT+QMTCONN=<TCP_connectID>,<clientID>[,<username>[,<password>]]
响应
OK
+QMTCONN: <TCP_connectID>,<result>[,<ret_code>]
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<clientID> 字符串类型。客户端标识符。最大长度:128 字节。
<username> 字符串类型。客户端用户名,可用于鉴权。最大长度:256 字节。
<password> 字符串类型。客户端用户名对应的密码,可用于鉴权。最大长度:256 字节
<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败
<state> 整型。MQTT 连接状态。
1 MQTT 初始化
2 MQTT 正在连接
3 MQTT 已经连接成功
4 MQTT 正在断开连接
<ret_code> 整型。连接返回码。
0 接受连接
1 拒绝连接:不支持的协议版本
2 拒绝连接:拒绝标识符
3 拒绝连接:服务器不可用
4 拒绝连接:用户名或密码错误
5 拒绝连接:未授权
<pkt_timeout> 整型。数据包传输超时时间。范围:1~60;默认值:10;单位:秒
具有相同客户端标识符()的两个客户端连接到同一服务器时,在后建立连接的客户端完成连
接后,将由服务器自动断开与先建立连接的客户端之间的连接。
AT+QMTDISC 从 MQTT 服务器断开客户端连接
客户端可通过该命令请求断开与 MQTT 服务器的连接。客户端发送 DISCONNECT 消息到服务器表示即将与服务器断开 TCP/IP 连接。
AT指令 | 说明 |
---|---|
AT+QMTDISC=? | 测试命令 |
AT+QMTDISC=<TCP_connectID> | 设置命令 |
最大响应时间 | 300 毫秒 |
1. AT+QMTDISC=?
响应
+QMTDISC: (支持的<TCP_connectID>范围)
OK
2. AT+QMTDISC=<TCP_connectID>
响应
OK
+QMTDISC: <TCP_connectID>,<result>
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<result> 整型。命令执行结果。
-1 断开连接失败
0 断开连接成功
AT+QMTSUB 订阅主题
该命令用于订阅一个或多个主题。客户端发送 SUBSCRIBE 消息从而在服务器上注册感兴趣的一个或
多个主题名称。将发布到这些主题的消息作为 PUBLISH 消息从服务器传输到客户端。
AT指令 | 说明 |
---|---|
AT+QMTSUB=? | 测试命令 |
AT+QMTSUB=<TCP_connectID>,<msgID’>,<topic1’>,<qos1’>[,<topic2’>,<qos2’>…] | 设置命令 |
最大响应时间 | <pkt_timeout> + <pkt_timeout> × <retry_times>(默认 40秒),取决于网络状态 |
1. AT+QMTSUB=?
响应
+QMTSUB: (支持的<TCP_connectID>范围),<msgID>,<topic>,<qos>[,<topic>,<qos>...]
OK
2. AT+QMTSUB=<TCP_connectID>,<msgID>,<topic1>,<qos1>[,<topic2>,<qos2>…]
响应
OK
+QMTSUB: <TCP_connectID>,<msgID>,<result>[,<value>]
若出现任何错误:
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<msgID> 整型。数据包的消息标识符。范围:1~65535。
<topic> 字符串类型。客户端想要订阅或者退订的主题。最大长度:255 字节。
<qos> 整型。客户端打算发布消息的 QoS 等级。
0 最多发送一次
1 至少发送一次
2 只发送一次
<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败
<value>
若<result>=0,则为已确认 QoS 等级的矢量;参数取值 128 表示服务器拒绝订阅;
若<result>=1,则表示数据包重传次数;
若<result>=2,则不显示。
<pkt_timeout> 整型。数据包传输超时时间。范围:1~60;默认值:10;单位:秒。
<retry_times> 整型。数据包传输超时后的重发次数。范围:0~10;默认值:3。
只有在固定报头中的 QoS 位指示 QoS 等级是 1 或者 2 的消息中才显示。在特定通信方向的一组飞行消息中,必须只有唯一的消息标识符。该参数取值通常按消息排列顺序逐一递增,但非必须逐一递增。
AT+QMTUNS 退订主题
该命令用于退订一个或者多个主题。
AT指令 | 说明 |
---|---|
AT+QMTUNS=? | 测试命令 |
AT+QMTUNS=<TCP_connectID’>,<msgID’‘>,<topic1’>[,<topic2’>…] | 设置命令 |
最大响应时间 | <pkt_timeout> + <pkt_timeout> × <retry_times>(默认 40秒),取决于网络状态 |
1. AT+QMTUNS=?
响应
+QMTUNS: (支持的<TCP_connectID>范围),<msgID>,<topic>[,<topic>...]
OK
2. AT+QMTUNS=<TCP_connectID>,<msgID>,<topic1>[,<topic2>…]
响应
OK
+QMTUNS: <TCP_connectID>,<msgID>,<result>
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<msgID> 整型。数据包的信息标识符。范围:1~65535。
<topic> 字符串类型。客户端想要订阅或者退订的主题;最大长度:255 字节。
<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收到 ACK
1 数据包重传
2 数据包发送失败
<pkt_timeout> 整型。数据包传输超时时间。范围:1~60;默认值:10;单位:秒。
<retry_times> 整型。数据包传输超时后的重发次数。范围:0~10;默认值:3。
AT+QMTPUB 发布消息
客户端通过该命令向服务器发布消息,再由服务器分配到感兴趣的订阅者。每一个 PUBLISH 消息都关
联一个主题名称;若一个客户端订阅了一个或者多个主题,服务器会将发布到这些主题的所有消息作为
PUBLISH 消息发送到客户端。
参数
AT指令 | 说明 |
---|---|
AT+QMTPUB=? | 测试命令 |
AT+QMTPUB=<TCP_connectID’>,<msgID’>,<qos’>,<retain’>,<topic’> | 设置命令 |
AT+QMTPUB=<TCP_connectID’>,<msgID’>,<qos’>,<retain’>,<topic’>,<msg’> | 设置命令 |
最大响应时间 | <pkt_timeout> + <pkt_timeout> × <retry_times>(默认 40秒),取决于网络状态 |
1. AT+QMTPUB=?
响应
+QMTPUB: (支持的<TCP_connectID>范围),<msgID>,<qos>,<retain>,<topic>,<msg>
OK
2. AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,<topic>
响应
>
响应>后,模块将在 500 毫秒内进入数据模式;之后可直接输入
待发数据,按 Ctrl+Z 发送数据,按 Esc 取消发送。
OK
+QMTPUB: <TCP_connectID>,<msgID>,<result>[,<value>]
若出现任何错误:
ERROR
3. AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,<topic>,<msg>
响应
OK
+QMTPUB: <TCP_connectID>,<msgID>,<result>[,<value>]
若出现任何错误:
ERROR
<TCP_connectID> 整型。MQTT Socket 标识符。范围:0~5。
<msgID> 整型。数据包的消息标识符。范围:0~65535。只有当<qos>=0 时,该参数值为 0。
<qos> 整型。客户端想要发布消息的 QoS 等级。
0 最多发送一次
1 最少发送一次
2 只发送一次
<retain> 整型。消息发送到当前订阅者后,服务器是否保存该消息。
0 消息发送到当前订阅者后,服务器不保存消息。
1 消息发送到当前订阅者后,服务器保存消息。
<topic> 字符串类型。待发布主题。最大长度:255 字节。
<msg> 字符串类型。待发布消息。最大长度:700 字节;若是在数据模式,最大长度:1024字节。
<result> 整型。命令执行结果。
0 数据包发送成功且从服务器接收 ACK(当<qos>=0 时,发布的消息无需 ACK)
1 数据包重传
2 数据包发送失败
<value>
若<result>=1,则表示数据包重传次数;
若<result>=0 或 2,则不显示。
<pkt_timeout> 整型。数据包传输超时时间。范围:1~60;默认值:10;单位:秒。
<retry_times> 整型。数据包传输超时后的重发次数。范围:0~10;默认值:3。
- PUBLISH 消息可从发布者发布至服务器,也可从服务器发布至订阅者。当服务器发布消息到订阅者
时,会返回如下 URC 以通知 MCU 读取 MQTT 服务器发来的数据:+QMTRECV: <TCP_connectID’>,<msgID’>,<topic’>,<payload’>- 为特殊格式(如 JSON)字符时,必须为带双引号的字符串。暂不支持特殊命令字符,如分
号(;)。- 在数据模式下发送数据时,建议返回 > 后等待 500 毫秒再发送数据。
AT+QRST 自动重启
该命令用于立即重启模块。
AT指令 | 说明 |
---|---|
AT+QRST=?测试命令 | |
AT+QRST= | 设置命令 |
最大响应时间 | 300 毫秒 |
1. AT+QRST=?
响应
+QRST: (支持的<mode>列表)
OK
2. AT+QRST=<mode>
响应
立即自动重启
若出现任何错误: ERROR
或者
+CME ERROR: <err>
<mode> 整型。
1 无需注销网络,立即自动重启。
<err> 整型。错误码。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)