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

2023-10-30 01:18

本文主要是介绍ME3616 NBIOT模组内置MQTT协议对接OneNET,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

适用所有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"

 

这篇关于ME3616 NBIOT模组内置MQTT协议对接OneNET的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/304648

相关文章

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

Python 内置的一些数据结构

文章目录 1. 列表 (List)2. 元组 (Tuple)3. 字典 (Dictionary)4. 集合 (Set)5. 字符串 (String) Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明: 1. 列表 (List) 列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

Linux内置的审计跟踪工具:last命令

如果你是一个服务器管理员,你或许知道你要保护你的服务器的话,不仅是从外部,还要从内部保护。Linux有一个内置工具来看到最后登陆服务器的用户,可以帮助你保护服务器。   这个命令是last。它对于追踪非常有用。让我们来看一下last可以为你做些什么。   last命令的功能是什么   last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请