首页 > 其他分享 >【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤

【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤

时间:2023-08-13 18:05:22浏览次数:49  
标签:订阅 OK mqtt topic MQTT 摸鱼 Air780E MSUB

基础资料

基于Air780E开发板:Air780E文档中心

简介:AT开发

探讨重点

AT固件是通信模组或者单片机(MCU)+ 网络模块标准固件的基本配置,该模式定制化程序较高,简单易上手,但缺点也较为明显,仅用于快速基本功能验证。

本系列主要探讨MQTT方式手动接入、信息订阅及发布的基本原理,后续详细介绍接入多种云平台的基本操作及手动鉴权步骤。

实现功能

MQTT基本原理及步骤;

硬件准备

Air780E开发板1块,SIM卡1张。


软件版本

Revision: AirM2M_780E_V1108_LTE_AT

任意串口调试工具(本文使用llcom1.1.1.9,波特率9600)

软件使用

接口文档可参考:MQTT应用指南

命令手册:配套AT手册

串口工具

【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤_串口

串口工具主界面

Air780E开发板正常开机后共3个串口:

luatools工具启动后,一般会占用2个串口用于debug及升级。

【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤_服务器_02

luatools工具

通用串口工具可使用另外一个串口进行AT命令调试:

【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤_缓存_03

调试串口选择

本例中如果不同时启动luatools工具,COM12、COM11均可用于AT命令调试(COM13接收SIM卡工作数据流,不能用于AT命令调试)。

主要步骤

该4G模块支持MQTT和MQTT SSl协议,MQTT应用的基本流程如下:

1、激活PDP

2、如果要支持SSL,配置SSL参数

3、通过TCP连接到MQTT服务器

4、发送MQTT CONNECT到服务器,打开会话连接

5、订阅或者发布消息

符号意义:←串口调试工具输入命令流,→ 串口调试工具接收到的数据流

1、SIM卡状态检查及激活PDP

←AT+CPIN?
+CPIN: READY    //查询sim卡是否正常
OK
AT+CGATT?
+CGATT: 1        //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上
← AT+CSTT     //配置网络
→ AT+CSTT
OK
← AT+CIICR   //激活网络
 → AT+CIICR
OK
 ← AT+CIFSR  //查询是否获取IP
→ AT+CIFSR
10.63.**.**  //获取IP,连接条件准备就绪

一般状态正常后即具备连接条件,可以进行MQTT连接步骤。

如果未能自动附着,可执行手动激活PDP步骤:

←AT+SAPBR=3,1,"CONTYPE","GPRS"
→OK
←AT+SAPBR=3,1,"APN",""    //设置APN,此处""表示使用从网络端自动获取到的APN
→OK
←AT+SAPBR=1,1             //发起激活PDP的请求
→OK
←AT+SAPBR=2,1             //注意:此命令仅仅查询PDP地址,可以不执行
→+SAPBR: 1,1,"10.159.*.***"    //请求到的PDP地址

2、如果要支持SSL,配置SSL参数(结合各云平台接入步骤介绍)

3、通过TCP连接到MQTT服务器

基本语法:AT+MCONFIG=?+MCONFIG: <clientid>[,<username>,<password>[,(0-2),(0,1),<will_topic>,<will_message>]]

实例:以连接测试地址http://lbsmqtt.airm2m.com为例,端口:1884

← AT+MCONFIG="866289037******","user","password"
→ AT+MCONFIG="866289037******","user","password"
OK
← AT+MIPSTART="lbsmqtt.airm2m.com","1884"
→ AT+MIPSTART="lbsmqtt.airm2m.com","1884"
OK
→ 
CONNECT OK

“CONNECT OK”指示建立连接,需尽快提交连接请求。

4、发送MQTT CONNECT到服务器,打开会话连接

← AT+MIPSTART="lbsmqtt.airm2m.com","1884"
→ AT+MIPSTART="lbsmqtt.airm2m.com","1884"
OK
→ 
CONNECT OK
 → 
CLOSED                                           //由于手动建立连接后未及时进行会话连接请求,连接被关闭
← AT+MIPSTART="lbsmqtt.airm2m.com","1884"     //=连接关闭后,重新发起连接请求,
→ AT+MIPSTART="lbsmqtt.airm2m.com","1884"
OK
→ 
CONNECT OK
←  AT+MCONNECT=1,120                          //1:client 和 server 都会抛弃以前的会话,建立一个新的会话
                                               //链接保活设置为120s,
→  AT+MCONNECT=1,120 
OK
CONNACK OK                                    //连接建立

设备端在保活时间内至少需要发送一次报文,包括 PING 请求。 如果服务器端在保活时间内未接收到任何报文,会断开连接,设备端需要发起重连。 建议取值在 300s以上。

5、订阅或者发布消息

5.1 订阅主题:AT+MSUB

本命令从客户端到服务器,用于一个或多个订阅主题。

语法规则:AT+MSUB=<topic>,<qos>

<topic>:一个或多个订阅主题

QoS:服务质量,根据不同的使用场景确定。

QoS 0:最多一次 ,QoS 1,尽最大努力传递,不保证消息的传递:至少一次,保证一条消息至少一次传递给接收方;QoS 2:仅一次,保证每条消息仅由预期的收件人接收一次;

实例:http://lbsmqtt.airm2m.com示例topic订制

←  AT+MSUB="mqtt/sub_topic",0     //发起订阅
→  AT+MSUB="mqtt/sub_topic",0
OK
 → 
SUBACK                            //订阅成功,一旦有服务器端下发的topic信息,会将该信息发送到所有订阅设备

5.2 发布消息

发布消息:AT+MPUB,本命令从客户端到服务器,用于一个或多个订阅主题。

AT+MPUB=?+MPUB:<topic>,(0-2),(0-1),<message>

<topic> the topic of the application 字符串 最大 256 个字节。可以用""括住,也可以不用""

<qos> Quality of Service for application message 0 至多一次 1 至少一次 2 确保只有一次

<retain> retain flag 0 服务器不能存储这个消息也不能移除或替换任何现存的 保留消息。

1 服务器必须存储这个应用消息和它的服务等级质量 (QOS),以便它可以被分发给未来的主题名匹配的订阅者。

meassage 字符串 最大 256 个字节。可以用""括住,也可以不用""

← AT+MPUB="mqtt/pub_topic",0,0,"publish 0 payload"
→ AT+MPUB="mqtt/pub_topic",0,0,"publish 0 payload"
OK                                       //发布成功,服务质量:qos=0                                                      
← AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload"
 → AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload"
OK
→ 
PUBACK                                 //服务质量:qos=1
← AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload"
→ AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload"
OK
→ 
PUBREC
PUBCOMP                                //服务质量:qos=2

【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤_缓存_04

QoS:服务质量

5.3 注意事项

1、发送MIPSTART命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示TCP已经连接成功;只有收到CONNECT OK才是成功的应答(其余错误应答,参考AT手册)

2、发送MCONNECT命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经连接成功;只有收到CONNACK OK才是成功的应答(其余错误应答,参考AT手册)

3、发送MSUB命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经订阅成功;只有收到SUBACK才是成功的应答(其余错误应答,参考AT手册)

4、发送MPUB命令后,如果QOS不是0,则收到OK仅仅表示4G模块开始处理这条命令,并不表示MQTT已经发布成功;只有收到PUBACK(QOS为1时)或者PUBCOMP(QOS为2时)才是成功的应答(其余错误应答,参考AT手册)

5.4 接收消息示例

AT+MCONFIG="8662890******","user","password"
OK
AT+MIPSTART="lbsmqtt.airm2m.com","1884"
OK
CONNECT OK
AT+MCONNECT=1,60
OK
CONNACK OK
AT+MSUB="mqtt/sub_topic",0
OK
SUBACK
AT+MPUB="mqtt/sub_topic",0,0,"123456"
//在mqtt/sub_topic上收到订阅消息,payload为123456
//默认是直接输出收到的订阅消息,不做缓存
+MSUB: "mqtt/sub_topic",6 byte,123456
//设置订阅消息的处理模式,设置为缓存模式
//接下来收到订阅消息时,会提示订阅消息的缓存位置
AT+MQTTMSGSET=1
OK
//在mqtt/sub_topic上收到一条订阅消息,缓存到位置0
+MSUB: 0
//主动读取缓存的所有订阅消息
AT+MQTTMSGGET
+MSUB:mqtt/sub_topic,6 byte,123456
OK
//在mqtt/sub_topic上收到一条订阅消息,缓存到位置0
+MSUB: 0
//在mqtt/sub_topic上收到一条订阅消息,缓存到位置1
+MSUB: 1
//主动读取缓存的所有订阅消息
AT+MQTTMSGGET
+MSUB:mqtt/sub_topic,6 byte,123456
+MSUB:mqtt/sub_topic,6 byte,123456
OK

标签:订阅,OK,mqtt,topic,MQTT,摸鱼,Air780E,MSUB
From: https://blog.51cto.com/u_15950621/7067945

相关文章

  • 【8月摸鱼计划】IOST Studio的一些常见使用方法
    IOSTStudio是一个用于开发和调试IOST应用的开发工具。下面是IOSTStudio的一些常见使用方法:安装IOSTStudio:首先,你需要从官方网站下载IOSTStudio,并根据指示进行安装。IOSTStudio提供了适用于不同操作系统的安装包。创建或导入项目:启动IOSTStudio后,你可以选择创建新项目或......
  • 【8月摸鱼计划】4G模块相关的at指令
    #连接4g模块cu-l/dev/cuaU0.3#设置成ECM模式,设置成功后会自动重启模块,需要重新连接4g模块at+qcfg=“usbnet”,1#设置APN,移动:cmnet,联通:3gnet,电信:ctnetat+cgdcont=1,“IP”,“ctnet”#重启模块at+cfun=1,1#检查模块的模式,应返回1at+qcfg=“usbnet”#检查sim卡,应该返回READYat......
  • Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)
    (文章目录)前言本篇文章来完成另外三个界面的布局设置。这里会使用到feiyangqingyun的一些控件库。一、温度湿度曲线布局TempHumtiy.h:#ifndefTEMPHUMTIY_H#defineTEMPHUMTIY_H#include<QWidget>#include"wavechart.h"namespaceUi{classTempHumtiy;}class......
  • 【8月摸鱼计划】写技术文章的初衷
    我们写技术文章的初衷是什么?坦诚的说,我在18年底开始写文章时,单纯的是为了总结一些学到的知识,以便在后期工作和面试中可以游刃有余.所以那个阶段主要是以总结为主,用hexo搭建了自己的技术博客,写了很多css,javascript,vue的文章.由于之前喜欢捣鼓H5游戏,所以学......
  • Linux MQTT智能家居项目(智能家居界面布局)
    (文章目录)前言一、创建工程项目1.选择工程名称和项目保存路径2.选择QWidget3.添加保存图片的资源文件:在工程目录下添加Icon文件夹保存图片:将文件放入目录中:将图片添加进入资源文件中:二、界面布局准备工作这里我们一共显示4个界面:LED控制界面,温度湿度显示界面,光......
  • ?【8月摸鱼计划】物联网与AIGC的交集,并详细说明
    物联网与互联网、传感网、泛在网的区别为:层面不同、灵活性不同、沟通不同。一、层面不同1、物联网:物联网是从物的层面上对事物进行帆尘表述。2、互联网:互联网是从人的层面上对事物进行表述。3、传感网:传感网是从技术和设备的角度对岁轿则事物进行表述。4、泛在网:泛在网是从人......
  • Qt 安装mqtt环境(这里默认以及有了Qt)
    首先QT的版本和mqtt包的版本要一致(我这里QT和mqtt的版本都是5.14.2)QT安装包(5.14.2)下载地址:Indexof/archive/qt/5.14mqtt包的一个连接(可以选择相应的版本)GitHub-qt/qtmqttat5.14.2将mqtt包解压后,mqtt.pro使用QTCREATOR打开,用release编译。编译中可能会出错:“QtMqt......
  • MQTT协议入门介绍
    目录MQTT概览MQTT特点MQTT协议的主要特性MQTT主要应用MQTT基于主题(Topic)消息路由MQTTV3.1.1协议报文MQTT消息QoSMQTT会话(CleanSession)MQTT连接保活心跳MQTT遗愿消息(LastWill)MQTT保留消息(RetainedMessage)MQTTWebSocket连接MQTT协议客户端库MQTT与XMPP协议对比MQTT在线......
  • esp32 mqtt 局域网 通信 测试通过
    #include<WiFi.h>#include<stdlib.h>#include"WiFiClientSecure.h"#include"Adafruit_MQTT.h"#include"Adafruit_MQTT_Client.h"#include<ArduinoJson.h>#defineWLAN_SSID"xxx"#defineWLAN_PA......
  • vc++2008通过paho c语言客户端接入MQTT
    因项目需要,IoT平台需要支持vc++2008接入。因为Paho的c++客户端不支持低版本vc++,所以不得不尝试通过c语言的库实现。类库下载从github下载c语言包。例如:eclipse-paho-mqtt-c-win32-1.3.12.ziphttps://github.com/eclipse/paho.mqtt.c/releases类库整合和配置解压出来的c语言......