AT指令进行MQTT协议通信

        M0M1系列模组,经过1年多的演化后,已存在多套标准的固件程序。如果用户需要使用MQTT方式进行通信,则需要选择标准AT指令+MQTT的版本。此版本不仅可以支持标准AT指令的SOCKET通信,还可以支持阿里云物联网套件。本文将着重介绍标准MQTT服务器的连接与通信。同时,我们的模组可以支持多达10个订阅号,是目前市场上支持最多订阅号的AT模组!

        在使用MQTT方式进行通信时,我们需要知道一点,MQTT的通信在目前这套固件中,只支持接收MQTT主动串口的输出方式。所以必须设置模组为状态输出打开,此时模组会通过串口提示MQTT服务器是否连接成功以及断开的消息,并且提示接收到的数据。注意,在这种状态下MQTT断开后会自动重新进行连接,如果再次连接成功,用户需要重新进行订阅号的订阅。


一、MQTT连接:

1. 打开模组收到网络数据自动输出功能:

AT+STATUS=on

功能:打开/关闭模组状态输出功能

查询指令格式:

AT+STATUS<CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:参考说明

设置指令格式:

AT+STATUS=<status><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

status:状态输出方式

    on:打开状态输出

    off:关闭状态输出



2. 设置登录一个账号为:Mylinks,密码为:TESTMQTT的MQTT服务器

AT+MUSER=Mylinks,TESTMQTT

功能:设置/查询 MQTT的登录用户名和密码

查询指令格式:

AT+MUSER<CR><LF>

响应:

+ok=<user,password><CR><LF><CR><LF>

参数:请参考设置参数

设置指令格式:

AT+MUSER=<mode><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

user:MQTT服务器登录账号

password:MQTT服务器登录密码


3. 设置一个主题为WILL,消息为mywill的遗愿消息will message

AT+WILL=WILL,mywill

功能:设置/查询 WIFI 操作模式(AP/STA/APSTA),重启后设置生效

查询指令格式:

AT+WILL<CR><LF>

响应:

+ok=<theme,massage><CR><LF><CR><LF>

参数:请参考设置参数

设置指令格式:

AT+WILL=<theme,message><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

theme:遗愿消息主题

massage:遗愿消息内容


4. 设置一个内容为client123456的CLIENT ID

AT+MCID=client123456

功能:设置/查询 MQTT的CLIENT ID

查询指令格式:

AT+MCID<CR><LF>

响应:

+ok=<client id><CR><LF><CR><LF>

参数:请参考设置参数

设置指令格式:

AT+MCID=<client id><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

client id:mqtt的client id


5. 连接域名为app.mqlinks.com,端口为1883的的MQTT服务器

AT+MSOCK=1883,app.mqlinks.com

功能:设置/查询 MQTT服务器的域名(或者IP地址)和端口号

查询指令格式:

AT+MSOCK<CR><LF>

响应:

+ok=<port,ip><CR><LF><CR><LF>

参数:请参考设置参数

设置指令格式:

AT+MSOCK=<mode><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

port:MQTT服务器的端口号

ip:MQTT服务器的IP地址或者域名

注:完成以上步骤后,模块开始连接MQTT服务器,当连接成功后,会出现 +MQTT:OK ,则连接服务器成功!当出现+MQTT:FAIL时,则说明从MQTT断开。如果需要连接阿里云物联网套件,只需要将上述步骤改为《劢领M0M1系列WIFI模组——AT指令连接阿里云物联网套件》文中内容即可。

二、MQTT通信功能:

1. 订阅一个QOS等级为1,主题为test001的订阅号:

AT+MSUB=QOS1,test001

功能:设置订阅号和QOS等级

设置指令格式:

AT+MSUB=<qos,sub><CR>

响应:

+ok=<CR><LF><CR><LF>

参数:

qos:取值为QOS0,QOS1,QOS2

sub:主题号

注意:当订阅的主题号重复时,会提示错误!订阅号总数为10个。

2. 发布一个QOS等级为1,主题为test002,内容为hello world的发布号:

AT+MPUB=QOS1,11,test002

>hello world

+ok=11

功能:OTA升级固件

指令格式:

AT+MPUB=<qos,len,pub><CR>

响应:

>

+ok=len<CR><LF><CR><LF>

参数:

qos:取值为QOS0,QOS1,QOS2

len:消息内容的数据长度

pub:发布号的主题

说明:指令接收成功后,模组会先返回>用于提示接收数据,此时串口等于接收3秒,此时输入串口数据等于len或者两字节之间超时10ms以上,则串口数据自动截断发送。


3. MQTT数据接收:

当模块接从服务器接收到订阅的数据内容,则会主动输出格式为+MQD,len,sub,data的串口数据,如收到:

+MQD,11,test001,how are you,则收到的订阅号为test001,消息内容长度为11,内容为how are you


三、MQTT其它指令

1. 取消一个订阅号:

AT+MUSU=test001

功能:取消订阅号

指令格式:

AT+MUSU=<sub><CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:

sub:订阅的主题

说明:只有之前订阅过的主题,才可以使用此命令并提示成功


2.关闭MQTT服务器连接

AT+MCLOSE

功能:关闭与MQTT服务器的连接

查询指令格式:

AT+MCLOSE<CR><LF>

响应:

+ok<CR><LF><CR><LF>

参数:无


如果遇到模组使用上的问题,可以进群号为519630819的QQ群进行交流。


猜你喜欢

转载自blog.csdn.net/mqlinks/article/details/80722661