ME3616 NBIOT模组内置MQTT协议对接OneNET

版权声明:本文为博主原创文章,请转载时标明出处。觉得有帮助就点个赞鼓励一下。觉得有错误或者可以完善的地方,麻烦指正指出,感谢! https://blog.csdn.net/Sanjay_Wu/article/details/84304177

前言

适用所有MT2625方案的NBIOT模组,实现STM32+NBIOT的代码在GitHub:https://github.com/sanjaywu/NBIOT_OneNET_Demo

 

一、使用MQTT调试工具调试

1、OneNET介绍

我们直接从OneNET的官网截图:

 

2、创建产品和添加设备

(1)在创建产品前,首先得有一个OneNET账号,到OneNET注册一个就行,注册步骤很简单,相信看到这篇文章的读者都已经有了OneNET账号,所以不多介绍注册步骤。

(2)有了OneNET账号之后,点击右上方的开发者中心,接着点击右侧的“+创建产品”,出现如下界面,填写好相关信息后点击“确定”

(3)完成产品创建后后在开发者中心可以看到如下产品:

(4)按箭头指示点击进入,然后添加一个SUB设备,并填写设备信息,填写完成点击“接入设备”然后就能看到设备:

(5)按上面步骤,再添加一个PUB设备:

(6)SUB设备和PUB设备信息查看:

 

3、消息发布和订阅

(1)下载MQTT调试工具:https://open.iot.10086.cn/doc/art433.html#118

(2)打开MQTT调试工具,填写SUB设备相关信息,并连接:

DeviceID为设备ID,在设备管理对应的设备可以看到。

ProductID:产品ID,在产品概况可以看到。

AuthInfo:鉴权信息。

(3)在MQTT调试工具,对应的SUB设备按步骤填写订阅主题相关信息,第2步先点“订阅”再点“同步”:

(4)另外打开MQTT调试工具,不要关闭之前的MQTT调试工具,这时候会有两个MQTT调试工具界面,填写PUB设备相关信息。完成第1步后先点击“Connect”,然后再按步骤填写发布主题相关信息,最后点击下方的“Submit”

“Submti”后可在SUB设备的那一边看到PUB设备发布的消息:

 

4、发送命令到设备

如下图,例如,点击PUB设备右下方的“发送命令”小图标,填写命令内容,最后点击“发送命令”:

发送成功后在MQTT调试工具可以看到对应的命令:

 

5、上传数据流

(1)往PUB设备上传数据流,选择“[OneNet]上传数据点”,数据类型我们选择类型7,时间不填写按默认,数据流ID按范围填写,填写数据流,最后点击“上传数据流”:

(2)上传成功,点击PUB设备数据流管理:

(3)展开数据流,可看到相应的数据:

 

二、ME3616 NB模组使用MQTT对接OneNET

ME3616模组使用的是MT2625芯片,因此以下教程适用于大部分使用MT2625芯片的NB模组

1、MT2625的介绍

MT2625 是一款支持 NB-IoT R14 的系统单芯片(SoC),以超高集成度为海量物联网设备提供兼具低功耗及成本效益的解决方案,广泛适用于家庭、城市、工业或移动型应用。MT2625 高度集成 NB-IoT 调制解调数字信号处理器、射频天线及前端模拟基带,还集成 ARM Cortex-M 微控制器(MCU)、伪静态随机存储器(PSRAM)、闪存与电源管理单元(PMU)。MT2625 还整合一系列丰富的外围输入输出接口,包括安全数字输入输出模块(SDIO)、通用异步收发传输器(UART)、I2C 传输协议、I2S、序列外围接口(SPI)及脉冲宽度调制(PWM)。

虽然功能强大,MT2625 却具有小巧的封装尺寸和少量的管脚数目,满足对成本敏感及小体积的物联网设备的需求,也有助于厂商简化产品设计流程。

MT2625 基于实时操作系统(RTOS),很容易针对各种不同的应用进行客制化,比如家庭自动化、cloud beacon、智能抄表及诸多其他静态或移动型物联网应用。MT2625 的宽频前端模组支持 3GPP R14 规范下涵盖超低频/低频/中频/四频的全频段运作,满足全球市场需求,降低成本和开发时间。

MT2625软件SDK拥有丰富的网络协议,包括Socket、MQTT、LWM2M、CoAP、HTTP/HTTPS、SNTP、TLS等,网络协议通过做出AT指令,只需通过串口发送AT命令到MT2625,便可连接服务器,进行数据交互。

 

2、ME3616通过MQTT的AT命令接入OneNET

接入OneNET,可参加文档《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》:https://open.iot.10086.cn/doc/art431.html#118

 

(1)新建一个mqtt连接服务,发送如下命令:

AT+EMQNEW="183.230.40.39","6002",1200,100

+EMQNEW: 0

OK

参数说明(从左到右):

"183.230.40.39" --> OneNET服务器MQTT协议对应的IP地址。

"6002" --> OneNET服务器MQTT协议对应的端口。

1200 --> 配置连接超时时间。

100 --> 配置与OneNET通过MQTT进行数据交互时的字节大小。

+EMQNEW: 0 --> 返回mqtt_id,作为连接的一个标志。

(2)连接到PUB设备,发送如下命令:

AT+EMQCON=0,4,"504812523",120,0,0,"189713","pub20181120"

OK

参数说明(从左到右):

0 --> mqtt_id。

4 --> mqtt版本为V3.1.1,如果为3,则mqtt版本为V3.1,OneNET只支持V3.1.1。

"504812523" --> 设备ID。

120 --> 连接保活keepalive时间。

0  --> cleansession清理会话标志,可以设置为0或1,这里我设置为0,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

0 --> will_flag遗嘱标志,可以设置为0或1,这里我设置为0,若设置为1要在后面再加上遗嘱相关信息,0则不需要,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

"189713" --> 产品ID。

"pub20181120" --> 设备鉴权信息。

连接成功时OneNET的PUB设备:

(3)发布主题消息,发送如下命令:

AT+EMQPUB=0,"pub_topic",0,0,0,22,"68656c6c6f20776f726c64"

OK

参数说明(从左到右):

0 --> mqtt_id。

"pub_topic" --> 发布的主题名称。

0 --> QoS服务质量等级,可设置为0,1,2,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

0 --> retained保留标志位,可设置为0或1,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

0 --> DUP重发标志位,可设置为0或1,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

22 --> 发布的信息长度。

"68656c6c6f20776f726c64" --> 发布的信息对应的16进制字符串,这里我们转为对应字符串后是“hello world”,可使用在线工具转:https://tool.lu/hexstr

发布成功后,在MQTT调试工具可以看到对应的消息:

(4)订阅主题,以次发送如下三条命令:

新建一个mqtt服务:

AT+EMQNEW="183.230.40.39","6002",1200,100

+EMQNEW: 0

OK

连接到SUB设备:

AT+EMQCON=0,4,"504812565",120,0,0,"189713","sub20181120"

OK

订阅主题“pub_topic”:

AT+EMQSUB=0,"pub_topic",1

OK

对于 AT+EMQSUB=0,"pub_topic",1参数说明(从左到右):

0 --> mqtt_id。

"pub_topic" --> 订阅的主题名称。

1 --> QoS服务质量等级,可设置为0,1,2,标志含义以及OneNET的设置要求请看《MQTT_V3.1.1协议》和《设备终端接入协议-MQTT》。

然后我们使用MQTT调试工具发布消息:

发布成功之后,ME3616就得到了订阅的主题消息:

+EMQPUB: 0, "pub_topic", 1, 0, 0, 20, "68656C6C6F206D717474"

 

展开阅读全文

没有更多推荐了,返回首页