0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

780EP模块 AT开发-MQTT应用指南

合宙LuatOS 2024-07-26 11:22 次阅读

简介

关联文档和使用工具:

  • AT固件获取
  • AT指令手册

材料准备

  • [EVB_Air780EP(V)]开发板一套,包括天线SIM
  • USB线
  • PC电脑
  • 串口调试工具(如果没有准备,推荐可以使用llcom,进页面按下Ctrl+F 搜索 AirM2M_780EP_LTE_AT 即可找到780EP模块所使用的AT固件,推荐选用该固件名称后面数字版本号最高的最新relase版本进行调试。
  • 当前文档示例使用AirM2M_780EP_V1007_LTE_AT版本固件
wKgaomagmHuAbrTeAAPJHs4fhmQ094.png

应用概述

4G模块支持MQTT和MQTT SSl协议, MQTT应用的基本流程如下: 1、如果要支持SSL,配置SSL参数 2、通过TCP连接到MQTT服务器 3、发送MQTT CONNECT到服务器,打开会话连接 4、订阅或者发布消息

示例

发布消息示例

先来看个正常情况下的AT命令序列,如果不理解AT命令含义,请自行参考AT手册

AT+CPIN? +CPIN: READY //查询sim卡是否正常 OK AT+CGATT? +CGATT: 1 //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上 OK AT+MCONFIG="866289037465624","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/pub_topic",0,0,"publish 0 payload" OK AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload" OK PUBACK AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload" OK PUBREC PUBCOMP

发布消息示例演示效果

wKgaomajFjmAD4mbAAdaOuCWYms304.png

在这个过程中,注意事项如下:

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手册)

接收消息示例

先来看下接收到订阅消息时的AT命令处理序列,如果不理解AT命令含义,请自行参考AT手册

AT+MCONFIG="866289037465624","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

接收消息演示效果

wKgZomajFkiAQq1QAAIa5np4yQ0164.png

TCP被动断开示例

先来看下连接被动断开时的AT命令处理序列,如果不理解AT命令含义,请自行参考AT手册

AT+MCONFIG="866289037465624","user","password" OK AT+MIPSTART="lbsmqtt.airm2m.com","1884" OK CONNECT OK AT+MCONNECT=1,60 OK CONNACK OK CLOSED //此处TCP连接被动断开 AT+MIPCLOSE +CME ERROR: 767 //此处无论返回OK、ERROR还是CME ERROR,都直接跳过,不用做正确性判断 AT+MCONFIG="866289037465624","user","password" OK AT+MIPSTART="lbsmqtt.airm2m.com","1884" OK CONNECT OK AT+MCONNECT=1,60 OK CONNACK OK

PDP被动去激活示例

先来看下PDP被动去激活时的AT命令处理序列,如果不理解AT命令含义,请自行参考AT手册

AT+MCONFIG="866289037465624","user","password" OK AT+MIPSTART="lbsmqtt.airm2m.com","1884" OK CONNECT OK AT+MCONNECT=1,60 OK CONNACK OK +CGEV: NW PDN DEACT 1 //此处PDP被动去激活 AT+MIPCLOSE OK //此处无论返回OK、ERROR还是CME ERROR,都直接跳过,不用做正确性判断 AT+MCONFIG="866289037465624","user","password" OK AT+MIPSTART="lbsmqtt.airm2m.com","1884" OK CONNECT OK AT+MCONNECT=1,60 OK CONNACK OK


常见问题

1、MQTT支持多连接吗 目前MQTT仅支持单连接,不支持多连接 2、MQTT的遗嘱如何使用 通过AT+MCONFIG命令可以设置遗嘱的qos、retain标志、topic、payload;在如下几种(包含但是又不仅限于如下情况)情况下,服务器会主动发布遗嘱消息到订阅的客户端:

1、模块和服务器通信异常(例如模块突然关机、模块进入了一个没有网络信号的环境等)超过1.5倍(一般是1.5倍,但不排除服务器可以修改这个时间)的 keep alive时间(可以通过AT+MCONNECT设置keep alive时间) 2、模块主动执行AT+MDISCONNECT或者AT+MIPCLOSE 曾经有用户碰到过如下问题: 模块设置了遗嘱topic为/will_topic,遗嘱payload为offline,keep alive时间为5分钟,模块关机后,等待2分钟,在等待的2分钟内,其他订阅了/will_topic的客户端没有收到遗嘱消息(这是正常的,因为还没有到达1.5倍的keep alive时间),2分钟后,模块开机mqtt重连成功后,其他客户端却收到了遗嘱消息,这是什么原因呢?这部分机制是服务器端设计的,和模块无关,个人认为:服务器端仍然在维持2分钟前的那个mqtt连接,现在模块开机,用同样的client id重连后,会断开之前维护的相同client id的mqtt连接,断开时,就发布了一次遗嘱消息。那这种问题,如何解决呢?模块可以在AT+MCONNECT返回CONNACK OK之后,通过AT+MPUB一个topic为/will_topic,payload为online的消息,这样订阅了遗嘱topic的其他客户端就会收到这个online消息

3、MQTT SSL如何使用 本文主要描述了基本流程和异常处理,对于MQTT SSL使用方法没有做过多描述,这一部分,请自行参考AT手册MQTT章节下《使用方法举例》中的"SSL带证书验证流程"使用方法;支持的SSL参数,请自行参考AT+SSLCFG命令说明

如果SSL的参数配置不变,则每次开机运行过程中,仅设置一次即可

4、重试多次PDP,MQTT应用一直连接失败 如果重试多次PDP激活,PDP一直激活失败,或者MQTT一直连接失败,则尝试使用如下手段恢复:

1、使用RESET引脚复位模块 2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机

5、MPUB命令中,payload包含"如何发送? 消息中内嵌的双引号请用\22 表达;控制字符 \r(0x0D)请用\0D 表达;控制字符\n(0x0A) 请用\0A 表达 如果是 MCU 发消息,请用\\22,\\0D,\\0A 来 表达,即\需要转义成\\

6、连接服务器失败

  1. 检查下模块信号、网络注册、网络附着、PDP激活状态
  2. 检查下SIM卡是否欠费
  3. 使用mqtt.fx,连接服务器确认一下是否可以连接成功,排除服务器故障
  4. 部分国外的开源项目提供免费的MQTT代理服务器,因为网络的原因,国内存在严重的延迟或者丢包现象,导致程序运行出现问题,此现象在AT开发时影响严重
  5. 确认是不是域名解析失败导致,可以通过AT+CDNSGIP=确认一下域名是否能正常解析(注意:该命令只有在执行完at+cstt、at+ciicr、at+cifsr后才能正常工作),不能正常解析,可以通过AT+CDNSCFG=ip1,ip2设置域名解析服务器。
  6. 在 MIPSTART /SSLMIPSTART返 回 CONNECT OK后 才 能 发 MCONNECT命令,而且要立即发,否则会被服务器踢掉。

7、数据接收缓存问题

不缓存:通过AT+MQTTMSGSET=0设置;收到订阅的publish报文后,立即通过AT口输出主题、payload长度、payload内容,每个报文中支持的payload内容最长4100字节

内存缓存:通过AT+MQTTMSGSET=1设置;内存中有一个缓存表,一条消息最多4kb,最多支持缓存4条publish报文;收到订阅的publish报文后,插入缓冲表中的空闲位置,然后通过AT口输出存储位置;缓存表满之后,新收到的publish报文会覆盖最旧的publish报文

注意:缓存表位于内存中,断电或者重启后,缓存表中的数据会被清空;建议收到数据时,通过AT+MQTTMSGGET及时读取出来,以防缓冲区满覆盖丢失数据

8、数据发送问题 AT+MPUB最大publish 4100字节,AT+MPUBEX长度取值范围1-4100

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
  • 串口调试
    +关注

    关注

    2

    文章

    267

    浏览量

    24687
  • MQTT
    +关注

    关注

    5

    文章

    649

    浏览量

    22419
  • 合宙通信
    +关注

    关注

    0

    文章

    147

    浏览量

    1724
收藏 人收藏

    评论

    相关推荐

    Air780EP模块 LuatOS开发-MQTT接入阿里云应用指南

    简介本文简单讲述了利用LuatOS-Air进行二次开发,采用一型一密、一机一密两种方式认证方式连接阿里云。整体结构如图关联文档和使用工具:LuatOS库阿里云平台准备工作Air780EP_全IO
    的头像 发表于 07-24 13:51 700次阅读
    Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b> LuatOS<b class='flag-5'>开发</b>-<b class='flag-5'>MQTT</b>接入阿里云应用<b class='flag-5'>指南</b>

    合宙Air780EP模块Lua开发阿里云应用指南

    合宙Air780EP模块Lua开发阿里云超详细教学!看完包学会!
    的头像 发表于 08-08 09:00 859次阅读
    合宙Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b>Lua<b class='flag-5'>开发</b>阿里云应用<b class='flag-5'>指南</b>

    MQTT应用看这篇!合宙Air780EP_LuatOS_MQTT应用指南

    Air780EP 是合宙的低功耗4G模组之一,支持LuatOS的脚本二次开发,即使是不太懂技术的老板,也能轻松使用 Air780EP开发产品。 本文应各位大佬邀请,详细讲解了Air
    的头像 发表于 08-08 17:13 1732次阅读
    <b class='flag-5'>MQTT</b>应用看这篇!合宙Air<b class='flag-5'>780EP_LuatOS_MQTT</b>应用<b class='flag-5'>指南</b>

    合宙Air780EP模块开发常见问题——异常断链篇

    在用合宙Air780EP模块开发的时候,有时候会遇到收不到网络数据的问题。 这里把遇到的问题和排查方法记录下来,希望能够帮助到大家!
    的头像 发表于 08-09 17:47 2808次阅读
    合宙Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b><b class='flag-5'>开发</b>常见问题——异常断链篇

    合宙Air780EP模块——AT指令MQTT接入OneNET开发指南

    物联网设备要互动,Air780EP模块是桥梁。用AT指令告诉MQTT:“帮我把话带给OneNET吧!”MQTT就忙着打包数据,像寄信一样传给OneNET。OneNET收到后,处理、存着
    的头像 发表于 08-19 16:40 2019次阅读
    合宙Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b>——AT指令<b class='flag-5'>MQTT</b>接入OneNET<b class='flag-5'>开发指南</b>

    Air780EP模块AT开发FOTA远程升级指南

    Air780EP模块AT开发FOTA远程升级指南简介AT版本的远程升级主要是对AT固件进行升级,实际方式为通过合宙官方IOT平台升级或者使用自己搭建的服务器进行升级服务。关联文档和使用
    的头像 发表于 07-19 15:16 692次阅读
    Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b>AT<b class='flag-5'>开发</b>FOTA远程升级<b class='flag-5'>指南</b>

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析简介本文档适用于合宙Air780E、Air
    的头像 发表于 07-19 15:37 569次阅读
    Air<b class='flag-5'>780</b>E/Air<b class='flag-5'>780EP</b>/Air<b class='flag-5'>780</b>EQ/Air201<b class='flag-5'>模块</b>遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到内存死机如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到内存死机如何分析简介本文档适用于合宙Air780E、Air
    的头像 发表于 07-19 16:07 474次阅读
    Air<b class='flag-5'>780</b>E/Air<b class='flag-5'>780EP</b>/Air<b class='flag-5'>780</b>EQ/Air201<b class='flag-5'>模块</b>遇到内存死机如何分析

    Air780EP模块AT开发-HTTP应用指南

    Air780EP模块AT开发-HTTP应用指南
    的头像 发表于 07-22 14:38 555次阅读
    Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b>AT<b class='flag-5'>开发</b>-HTTP应用<b class='flag-5'>指南</b>

    Air780EP模块 AT开发-MQTT接入OneNET移动物联网平台应用指南

    应用概述  使用AT方式通过MQTT协议连接onenetstudio。官网地址:https://open.iot.10086.cn/材料准备Air780EP(V)开发板一套,包括天线SIM卡,USB
    的头像 发表于 07-24 14:24 737次阅读
    Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b> AT<b class='flag-5'>开发</b>-<b class='flag-5'>MQTT</b>接入OneNET移动物联网平台应用<b class='flag-5'>指南</b>

    合宙 Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析简介本文档适用于合宙Air780E、Air
    的头像 发表于 08-01 17:27 686次阅读
    合宙 Air<b class='flag-5'>780</b>E/Air<b class='flag-5'>780EP</b>/Air<b class='flag-5'>780</b>EQ/Air201<b class='flag-5'>模块</b>遇到死机问题如何分析

    Air780EP模块FTP应用AT开发详解

    基于合宙Air780EP使用AT指令接入FTP的超详细教程!
    的头像 发表于 08-21 11:16 448次阅读
    Air<b class='flag-5'>780EP</b><b class='flag-5'>模块</b>FTP应用AT<b class='flag-5'>开发</b>详解

    合宙LuatOS开发板Core_Air780EP使用说明

    Core-Air780EP 开发板是合宙通信推出的基于 Air780EP 模组所开发的,包含电源,SIM卡,USB,天线,音频等必要功能的最小硬件系统。以方便用户在设计前期对 Air
    的头像 发表于 09-03 17:38 482次阅读
    合宙LuatOS<b class='flag-5'>开发</b>板Core_Air<b class='flag-5'>780EP</b>使用说明

    MQTT应用:Air780EP低功耗4G模组AT开发

    本文应各位大佬邀请,详细讲解Air780EP模组MQTT应用的多个AT命令。
    的头像 发表于 10-25 17:27 222次阅读
    <b class='flag-5'>MQTT</b>应用:Air<b class='flag-5'>780EP</b>低功耗4G模组AT<b class='flag-5'>开发</b>

    AT开发FOTA远程升级:Air780EP低功耗4G模组

    ​针对客户朋友的应用反馈,特编辑本篇文章:基于Air780EP模组AT开发的FOTA远程升级指南
    的头像 发表于 10-25 17:31 271次阅读
    AT<b class='flag-5'>开发</b>FOTA远程升级:Air<b class='flag-5'>780EP</b>低功耗4G模组