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

        劢领系列模组,经过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>

参数:无

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

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

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

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

### 回答1: 4G模块连接阿里云MQTT协议接入和发送数据涉及以下几个步骤: 1. 初始化4G模块: 首先需要初始化4G模块,包括配置串口通信参数和连接4G网络,确保能够正常访问网络。 2. 配置MQTT连接参数: 使用4G模块提供的AT指令设置MQTT协议的连接参数,包括阿里云的服务器地址、端口号、设备ID和设备密钥等信息。可以通过命令行或者编程语言的方式发送AT指令进行配置。 3. 连接阿里云MQTT服务器: 使用4G模块的AT指令建立与阿里云MQTT服务器的连接,可以通过发送CONNECT指令完成连接建立,根据返回结果判断是否连接成功。 4. 发布数据: 连接建立成功后,可以通过4G模块的AT指令发送MQTT PUBLISH消息。首先需要构建MQTT消息体,包括消息主题、消息内容和消息质量等信息。使用AT指令发送PUBLISH指令,将消息体发送到阿里云MQTT服务器。 5. 订阅数据: 同样使用4G模块的AT指令订阅阿里云MQTT服务器上的消息。构建订阅消息的主题,使用AT指令发送SUBSCRIBE指令进行订阅。当服务器有消息发布到订阅主题时,4G模块会接收到消息,可以通过AT指令进行处理。 需要注意的是,上述步骤中的具体AT指令和参数配置根据不同的4G模块厂商和阿里云MQTT协议的版本有所差异。建议查阅具体设备和协议的相关文档,以获取正确的AT指令和参数配置。 以上是使用4G模块连接阿里云MQTT协议接入和发送数据的源码的简要描述,具体代码实现和细节问题可以参考相关文档和资料,根据实际需求进行开发。 ### 回答2: 要实现4G模块连接阿里云MQTT协议接入和发送数据的源码,需要进行以下步骤: 1. 引入相关库:首先需要引入4G模块和MQTT协议相关的库。根据具体的4G模块型号和开发板,可以选择相应的库进行引入。 2. 初始化网络连接:使用4G模块的相关函数,初始化网络连接并获取SIM卡信息。确保SIM卡正常连接网络。 3. 连接阿里云MQTT服务器:使用MQTT库提供的函数,通过阿里云提供的MQTT服务器地址和端口号,建立与服务器的连接。 4. 配置连接参数:设置MQTT连接的一些参数,例如客户端ID、用户名、密码等。这些信息可以在阿里云IoT平台上进行配置和获取。 5. 设置回调函数:在连接成功的回调函数中,编写接收和处理服务器返回数据的代码。可以根据具体需求来解析和处理接收到的数据。 6. 订阅主题:使用MQTT库提供的函数,订阅需要接收的主题。根据实际情况,可以订阅多个主题。 7. 定时发送数据:使用4G模块的相关函数,获取需要发送的数据,并使用MQTT库提供的函数将数据发布到指定的主题。 8. 处理断开连接:在断开连接的回调函数中,编写相应的代码来处理断开连接的情况,例如重新连接或者进行相关提示。 以上是实现4G模块连接阿里云MQTT协议接入和发送数据的源码的基本步骤。具体的源码实现可以参考相关的4G模块和MQTT协议的开发文档,以及阿里云IoT平台上提供的相关示例代码。 ### 回答3: 连接阿里云MQTT协议接入并发送数据需要使用4G模块。以下是示例源码: 1. 导入所需的库文件 ```c #include <HttpClient.h> #include <EasyIOT.h> #include <MQTTClient.h> ``` 2. 设置阿里云MQTT服务器相关参数 ```c const char* server = "<mqtt_server>"; const char* clientId = "<mqtt_client_id>"; const char* username = "<mqtt_username>"; const char* password = "<mqtt_password>"; const int port = 1883; ``` 3. 设置4G模块网络连接参数 ```c const char* apn = "<apn>"; const char* gprsUser = "<gprs_user>"; const char* gprsPass = "<gprs_password>"; ``` 4. 创建MQTT客户端对象并设置回调函数 ```c WiFiClient wifiClient; MQTTClient mqttClient; void handleMqttMessage(String topic, String payload) { // 处理接收到的MQTT消息 } void setup() { // 初始化4G模块 EasyIOT.begin(apn, gprsUser, gprsPass); // 连接WiFi EasyIOT.connectWiFi(); // 设置MQTT服务器参数 mqttClient.begin(server, port, wifiClient); // 设置MQTT回调函数 mqttClient.onMessage(handleMqttMessage); // 连接阿里云MQTT服务器 mqttClient.connect(clientId, username, password); } void loop() { // MQTT客户端保持连接 mqttClient.loop(); // 发送数据到MQTT服务器 String data = "<data_to_send>"; mqttClient.publish("<mqtt_topic>", data); // 延时一段时间 delay(1000); } ``` 以上是一个简单的示例代码,基于Arduino平台,使用了HttpClient、EasyIOT和MQTTClient等库。你需要根据自己的实际情况修改其中的参数。这段代码可以实现4G模块连接阿里云MQTT协议接入并发送数据的功能。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值