中移M5310A模块MQTT详解
1.模块介绍
M5310A作为一款NB-IoT模块,价格符合全球NB-IoT价格(3美元)。不仅封装小巧,而且内置AT指令,可快速连接到Onenet平台。
2.模块初始化
1.上电,等待5秒左右,发送AT指令,返回OK
2.AT+CIMI:查询NBcard卡号
3.AT+CSQ:查询信号质量,返回“信号:99”,如 22,99;
4.AT+CEREG?:查询网络是否可用
5.AT+CEREG=1:驻网
6.AT+CEREG? 返回 +CGATT:1
参考初始化代码:
while(M5310A_SendCmd("AT\r\n", "OK"))DelayXms(500);UsartPrintf(USART1, "2. AT+CIMI\r\n");while(M5310A_SendCmd("AT+CIMI\r\n", "460")) //查询卡号DelayXms(500);UsartPrintf(USART1,"3.AT+CSQ\r\n");M5310A_Clear();while(M5310A_SendCmd("AT\r\n","OK"))DelayXms(500);UsartPrintf(USART1, "4. AT+CEREG?\r\n");while(M5310A_SendCmd("AT+CEREG?\r\n","CEREG:0,1"))DelayXms(500);UsartPrintf(USART1, "5. AT+CGATT=1\r\n");while(M5310A_SendCmd("AT+CGATT=1\r\n","OK")) DelayXms(500);UsartPrintf(USART1, "6. AT+CGATT?\r\n");while(M5310A_SendCmd("AT+CGATT?\r\n","CGATT:1")) //附着GPRS业务DelayXms(500);
3.AT+MQTT 以MQTT协议接入Onenet平台
1.创建实体
AT+MQTTCFG=“183.230.40.39”,6002,"%s",20,"%s","%s",1\r\n",DeviceID,ProID,APIKEY
Device为设备ID;ProID为产品ID,APIKey为鉴权信息
返回:OK
2.连接ONENET
AT+MQTTOPEN=1,1,0,0,0,"",""
返回 :+MQTTOPEN:OK
注意:连接时间可能需要等待2-10s,若返回ERROR,则创建实体时,信息错误
3.查询MQTT连接状态
AT+MQTTSTAT?
返回:
+MQTTSTAT:
0 未初始化
1 已初始化
2 已断开
3 正在首次连接服务器
4 正在重连服务器
5 已连接
4.订阅消息
AT+MQTTSUB
如
AT+MQTTSUB=“test”,2 //topic为test,质量等级为2
OK
+MQTTSUBACK: 5,2
AT+MQTTSUB?
+MQTTSUB:test OK
5.发布消息
AT+MQTTPUB
如:
AT+MQTTPUB=“test”,2,1,0,0,“update message”
+++++++++++++++++++++++++++++++
主题名:test
质量等级2
服务器是储存该消息,并向新订阅者发送最新订阅消 息
无重发标志
输入消息类型,0-字符串输入,1-16 进制串输入
内容:updata message
+++++++++++++++++++++++++++++
返回:
OK
+MQTTPUBREC: 0,10
+MQTTPUBCOMP: 0,10
+MQTTPUBREL: 0,6
6.断开连接以及删除实体
AT+MQTTDISC 断开连接
AT+MQTTDEL 释放资源,之后可以再次使用+MQTTCFG 进行配置
注意:
1.需要断开连接才能删除实体
2.实体只能创建一个
3.建议代码为:连接前先进行AT+MQTTDISC,AT+MQTTDEL
接入参考代码:
char buff[128];memset(buff, 0, sizeof(buff));sprintf(buff,"AT+MQTTCFG=\"183.230.40.39\",6002,\"%s\",20,\"%s\",\"%s\",1\r\n",DeviceID,ProID,APIKEY);UsartPrintf(USART1,buff);UsartPrintf(USART1,"断开连接\r\n");M5310A_SendString("AT+MQTTDISC\r\n");DelayXms(50);UsartPrintf(USART1,"删除实体\r\n");M5310A_SendString("AT+MQTTDEL\r\n");DelayXms(200);UsartPrintf(USART1,"建立实体\r\n");while(M5310A_SendCmd(buff,"OK"))DelayXms(500);UsartPrintf(USART1,"进入连接\r\n");while(M5310A_Time_SendCmd("AT+MQTTOPEN=1,1,0,0,0,\"\",\"\"\r\n","+MQTTOPEN:OK",100))DelayXms(500);DelayXms(200);UsartPrintf(USART1,"查询状态\r\n");while(M5310A_SendCmd("AT+MQTTSTAT?\r\n","MQTTSTAT:5"))DelayXms(500);memset(buff, 0, sizeof(buff));
最后,还有NBIoT连接TCP,再通过MQTT协议连接,这种连接方式,更能体现MQTT报文,同时也能实现功能,时间不早,在下一篇博客中讲解
中移M5310A模块MQTT详解相关推荐
- python中configparser详解_Python中的ConfigParser模块使用详解
1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -options(section) 得到该sect ...
- IDEA中的Structure模块使用详解
Structure介绍及示例 在IDEA中有很多可以提升开发效率的模块和功能,下面就来介绍一下IDEA中的Structure部分的使用和各个图标的作用说明. 为 为了方便说明和理解,将Structur ...
- 中移M5311模块MQTT协议连接阿里云物联网平台(干货)
一.准备三元组 在阿里云物联网平台新建产品和设备后,平台给每一个设备自动赋予三元组. 二.准备MQTT协议参数 新建产品时,阿里云物联网平台会分配一个含productkey的子域名,端口号固定是188 ...
- python zipfile_Python中的zipfile模块使用详解
zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compre ...
- python zipfile教程_Python中的zipfile模块使用详解
zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compre ...
- python zipfile模块_Python中的zipfile模块使用详解
zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compre ...
- pythonurllib模块-Python中的urllib模块使用详解
urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据.每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种"痛苦&quo ...
- matlab中sinks,MATLAB Simulink模块库详解(二)Sinks篇
MATLAB Simulink模块库详解(二)Sinks篇 Simulink模块库概述 1.Sources模块库,为仿真提供各种信号源 2.Sinks模块库,为仿真提供输出设备元件 3.Continu ...
- python中importlib模块安装_Python中标准模块importlib详解
Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...
最新文章
- 手把手教你重构乱糟糟的代码
- Python之多线程
- Propel项目改为基于TensorFlow.js
- linux nfs 读写性能,linux – Debian上的NFS性能问题
- ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
- day3 程序流程控制
- 星系超级计算机,Mira超级计算机“最后的旅程”:阿贡实验室进行了一次超大规模宇宙模拟...
- Salted Password Hashing
- python实现qq登录界面_使用Python编写一个QQ办公版的图形登录界面!
- 第三十一篇 玩转数据结构——并查集(Union Find)
- 前端生成小程序二维码
- 涉密计算机 桌面 及 屏保,符合国家保密要求的涉密计算机屏幕保护程序启动时间要求是不超10分钟 - 作业在线问答...
- python3 sorted()的用法
- java-php-python-ssm学生学籍信息管理系统计算机毕业设计
- 日志显示格式%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
- amd、cmd、esmodule、commonjs区别
- 2020年国防科大CS预推免
- 电快速脉冲群(EFT)设计-EMC系列 硬件设计笔记4
- 最简单DIY基于ESP8266的智能彩灯⑥(Android开发通过WIFI控制彩灯实现表白神器)
- 但除非你能够迅速地占有很大的市场份额或者建立很难逾越的市场进入壁垒
热门文章
- Redis GeoHash核心原理解析
- android studio3.6.3编译Telegram android 1482 问题小记(nebula chatengine 指定版本)
- 11.雅思口语——双宾动词总结
- 电子合同作为电子证据的司法认定标准
- 音视频流媒体系统简述
- C++实现经典扫雷游戏
- 黑盒测试与其几个主要的方法
- java语言中修饰一个常量_接口中定义一个常量所用的修饰符有: (5.0分)_学小易找答案...
- host_network_interfaces_slow_mode_thresholds
- html网页布局之大盒套小盒布局