劢领系列模组,经过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=<user,password><CR><LF> | 响应: +ok<CR><LF><CR><LF> |
参数: user:MQTT服务器登录账号 password:MQTT服务器登录密码 |
3. 设置一个主题为WILL,消息为mywill的遗愿消息will message
AT+WILL=WILL,mywill
功能:设置/查询 MQTT的 遗愿消息 | |
查询指令格式: 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. 设置一个内容为keepalive的数值,默认为60秒
AT+MKEEP=120
功能:设置/查询 MQTT的keepalive | |
查询指令格式: AT+MKEEP<CR><LF> | 响应: +ok=<time><CR><LF><CR><LF> |
参数:请参考设置参数 | |
设置指令格式: AT+MKEEP=<time><CR><LF> | 响应: +ok<CR><LF><CR><LF> |
参数: time:mqtt的keepalive的时间 |
注:此功能在031版本以后才有增加。
6. 连接域名为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=<port,ip><CR><LF> | 响应: +ok<CR><LF><CR><LF> |
参数: port:MQTT服务器的端口号 ip:MQTT服务器的IP地址或者域名 |
注:1.完成以上步骤后,模块开始连接MQTT服务器,当连接成功后,会出现+MQTT:OK,则连接服务器成功!当出现+MQTT:FAIL时,则说明从MQTT断开。如果需要连接阿里云物联网套件,只需要将上述步骤改为《劢领M0M1系列WIFI模组——AT指令连接阿里云物联网套件》文中内容即可。
2.当连接MQTT服务器失败后,模块将输出连接MQTT失败+MERR:x,x值连接错误具体如下,此功能在033版本后才会实现:
二、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
功能:发布一个数据 | |
指令格式: 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> |
参数:无 |