使用WIFI模块AT指令进行MQTT协议通信

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

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

一、MQTT连接:

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

AT+STATUS=on

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

查询指令格式:

AT+STATUS

响应:

+ok

参数:参考说明

设置指令格式:

AT+STATUS=

响应:

+ok

参数:

status:状态输出方式

    on:打开状态输出

    off:关闭状态输出

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

AT+MUSER=Mylinks,TESTMQTT

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

查询指令格式:

AT+MUSER

响应:

+ok=

参数:请参考设置参数

设置指令格式:

AT+MUSER=

响应:

+ok

参数:

user:MQTT服务器登录账号

password:MQTT服务器登录密码

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

AT+WILL=WILL,mywill

功能:设置/查询 MQTT的 遗愿消息

查询指令格式:

AT+WILL

响应:

+ok=

参数:请参考设置参数

设置指令格式:

AT+WILL=

响应:

+ok

参数:

theme:遗愿消息主题

massage:遗愿消息内容

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

AT+MCID=client123456

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

查询指令格式:

AT+MCID

响应:

+ok=

参数:请参考设置参数

设置指令格式:

AT+MCID=

响应:

+ok

参数:

client id:mqtt的client id

5. 设置一个内容为keepalive的数值,默认为60秒

AT+MKEEP=120

功能:设置/查询 MQTT的keepalive

查询指令格式:

AT+MKEEP

响应:

+ok=

参数:请参考设置参数

设置指令格式:

AT+MKEEP=

响应:

+ok

参数:

time:mqtt的keepalive的时间

注:此功能在031版本以后才有增加。

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

AT+MSOCK=1883,app.mqlinks.com

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

查询指令格式:

AT+MSOCK

响应:

+ok=

参数:请参考设置参数

设置指令格式:

AT+MSOCK=

响应:

+ok

参数:

port:MQTT服务器的端口号

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

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

       2.当连接MQTT服务器失败后,模块将输出连接MQTT失败+MERR:x,x值连接错误具体如下,此功能在033版本后才会实现:

使用WIFI模块AT指令进行MQTT协议通信_第1张图片

二、MQTT通信功能:

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

AT+MSUB=QOS1,test001

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

设置指令格式:

AT+MSUB=

响应:

+ok=

参数:

qos:取值为QOS0,QOS1,QOS2

sub:主题号

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

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

AT+MPUB=QOS1,11,test002

>hello world

+ok=11

功能:发布一个数据

指令格式:

AT+MPUB=

响应:

>

+ok=len

参数:

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=

响应:

+ok

参数:

sub:订阅的主题

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

2.关闭MQTT服务器连接

AT+MCLOSE

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

查询指令格式:

AT+MCLOSE

响应:

+ok

参数:无

注意:为保证可靠性,当出现+MQTT:OK,MQTT服务器重新连接时,一定要使用AT+MSUB将之前的订阅号重新订阅

我们将提供一个永久免费的MQTT服务器:mqtt.mylinks.ltd

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

相关产品,请关注:shop.mqlinks.com

你可能感兴趣的:(M0M1系列模组AT指令篇,M0R1系列模块AT指令篇,mqtt,at指令,物联网)