最近玩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>=02,则不显示。
<pkt_timeout> 整型。数据包传输超时时间。范围:1~60;默认值:10;单位:秒。
<retry_times> 整型。数据包传输超时后的重发次数。范围:0~10;默认值:3
  1. PUBLISH 消息可从发布者发布至服务器,也可从服务器发布至订阅者。当服务器发布消息到订阅者
    时,会返回如下 URC 以通知 MCU 读取 MQTT 服务器发来的数据:+QMTRECV: <TCP_connectID’>,<msgID’>,<topic’>,<payload’>
  2. 为特殊格式(如 JSON)字符时,必须为带双引号的字符串。暂不支持特殊命令字符,如分
    号(;)。
  3. 在数据模式下发送数据时,建议返回 > 后等待 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> 整型。错误码。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐