一种MQTT协议与COAP协议融合算法的制作方法

文档序号:26789284发布日期:2021-09-28 22:46阅读:116来源:国知局
一种MQTT协议与COAP协议融合算法的制作方法
一种mqtt协议与coap协议融合算法
技术领域
1.本发明涉及物联网通信技术领域,尤其涉及一种mqtt协议与coap协议融合算法。


背景技术:

2.coap(constrained application protocol)协议是一种面向网络的协议,主要应用于物联网场景。为了克服http对于受限环境的劣势,coap既考虑到数据报长度的最优化,又考虑到提供可靠通信。coap由udp作为承载,遵循udp基本的协议报文格式,udp数据内容部分按照coap协议报文格式进行写入传输。coap协议采用了与http类似的特征,核心内容为资源抽象、rest式交互以及可扩展的头选项等,支持内嵌的资源发现。
3.在物联网环境中,设备类型多种多样,工作环境各不相同。对于有稳定供电的设备,多数采用mqtt协议接入物联网平台,mqtt协议由tcp作为承载,优点是这种接入方式能够保持长连接,实现消息实时双向传输。对于在外部使用电池供电的设备,功能相对简单,存储空间小,数据传输速率低,需要待机时间长,往往采用coap协议接入网络,每次发送完数据后休眠。设备使用多种协议接入物联网平台,为满足m2m(machine to machine)场景,设备之间需要进行消息交互,本发明提供一种物联网平台协议适配方法,物联网平台支持设备使用coap协议或mqtt协议接入,对于coap协议和mqtt协议接入的设备,物联网平台为设备颁发数字证书,设备使用数字证书获得接入物联网平台的权限,数字证书关联topic使用权限,物联网平台通过数字证书控制topic使用权限,基于topic将coap协议和mqtt协议进行适配,使得不同协议的设备之间可以互相通信,实现coap协议设备与mqtt协议设备之间的数据交互。
4.随着电力统一物联管理平台的深入建设以及海量异构设备的不断接入,不同的业务终端之间使用的协议差异较大,存在以下不足:一是工作量较大,接入时间较长:各类业务终端需进行协议改造之后再接入物联管理平台;二是业务数据不统一,不利于后期管理和升级:业务终端接入物联管理平台,只涉及设备注册、连接、升级,其他业务应用功能还是需根据业务部门制定的协议开发,一个接入终端存在两类协议。
5.例如,申请号为cn201811512771.3,申请日为2018年12月11日的中国专利申请公开了一种物联网系统及其设备的注册、认证、连接方法,包括认证方法为:物联网设备基于coap协议和json数据格式,采用post和get方法,向californium认证服务器发起请求,认证服务器根据设备mac地址,查询数据库;物联网设备基于无效mac地址向认证服务器发起请求,查询数据库失败后,认证服务器返回连接错误的提示信息“error”,如果三分钟内,连续发起五次及以上次数的无效认证申请,认证服务器可屏蔽该mac地址的设备请求;连接方法为:物联网设备获得正确的连接配置信息时,将再次与物联网平台的连接服务器发起连接,本次连接,设备基于mqtt协议和json数据格式,采用“发布/订阅”的工作模式,与mqtt连接服务器保持通信;mqtt代理服务器,一方面订阅物联网设备状态,配合web服务器将数据存储到tsdb时序数据库;另一方面协助web服务器,发布控制类指令,设备端订阅后,可以执行用户命令。虽然该方法有提到可以采用mqtt协议和coap协议,但是该技术手段是通过两种
协议接口进行实现,并非将两种协议进行融合,使用过程中需要对每个物联网设备接入mqtt协议和coap协议接口,消耗大量成本。


技术实现要素:

6.本发明主要解决现有的技术中物联网设备使用的协议差异较大导致通信困难的问题;提供一种mqtt协议与coap协议融合算法,兼容多协议转换,不改变物联网设备原有的数据传输协议,降低成本。
7.本发明的上述技术问题主要是通过下述技术方案得以解决的:一种mqtt协议与coap协议融合算法,包括以下步骤:建立协议融合组件,将该组件与云端服务器或终端设备连接;所述协议融合组件包括mqtt服务器和coap服务器,mqtt服务器和coap服务器通过本地通信连接;判断物联网设备和终端设备使用的协议信息;若物联网设备和终端设备均采用同一种通讯协议,则协议融合组件进行数据分发,将若干个物联网设备的采集信息发送给终端设备或将物联网设备的采集信息发送给若干个终端设备;若物联网设备和终端设备不采用同一种通讯协议,则通过mqtt服务器和coap服务器进行报文转换后,将若干个物联网设备的采集信息发送给终端设备或将物联网设备的采集信息发送给若干个终端设备。通过协议融合组件,将物联网设备发送的报文进行报文中间转换,再将转换后的报文发送到终端设备,不论物联网设备和终端设备采用何种协议,将本发明的协议融合组件加入物联网设备和终端设备之间,即可实现物联网设备和终端设备的通信连接,无需进行协议接口的更改和替换,有效降低成本,mqtt服务器与coap服务器通过本地通信的方式连接,提高数据传输效率。
8.作为优选,判断物联网设备和终端设备使用的协议信息的方法为:在报文的可变报头或可选项部分加入表明协议类型的字段,占用1bit,其中0b0代表coap,0b1代表mqtt。在可变报头部分使用一个bit来设置对端协议类型标志位,不占用有效负载数据,提高通信效率。
9.作为优选,若物联网设备使用coap协议和终端设备使用mqtt协议,则coap服务器接收来自物联网设备的报文,coap服务解析报文,获取报文类型、code编码、消息id、可选报头数据及负载关键数据,之后以本地通信的方式发送至mqtt服务器,mqtt服务器将数据重组成对应的mqtt报文格式,发送到终端设备;若物联网设备使用mqtt协议和终端设备使用coap协议,则mqtt服务器接收来自物联网设备的报文,mqtt服务器解析报文,获取报文类型、code编码、消息id、可选报头数据及负载关键数据,之后以本地通信的方式发送至coap服务器,coap服务器将数据重组成对应的coap报文格式,发送到终端设备。不论是mqtt协议还是coap协议的报文,均可以通过协议融合组件进行协议转换,实现物联网设备和终端设备的通信连接。
10.作为优选,所述的协议融合组件还包括中间数据寄存器,所述中间数据寄存器通过本地通信分别与mqtt服务器和coap服务器连接,所述中间数据寄存器用于将物联网设备发送的数据进行存储和加密。中间数据寄存器起到数据缓存和数据加密的功能,防止多个数据同时发送或同时接受导致mqtt服务器和coap服务器崩溃,防止数据被人窃取,提高安全性。
11.作为优选,所述的中间数据寄存器进行数据加密的方法为:将每个物联网设备发
送的报文整个成第一数据包,将第一数据包拆分成n等份的第二数据包,记录第二数据包在原第一数据包中所处的位置,根据第二数据包在原第一数据包中所处的位置生成二进制密文,将二进制密文作为报头加入第二数据包中,将加入了密文的第二数据包进行随机组合生成第三数据包,中间数据寄存器以第三数据包的形式存储物联网设备发送的报文数据。
12.作为优选,所述的中间数据寄存器存储多个第三数据包,根据终端设备的协议请求,选取第三数据包发送给mqtt服务器或coap服务器,mqtt服务器或coap服务器将第三数据包转换成第一数据包,根据第一数据包转换成mqtt报文格式或coap报文格式并发送给终端设备。
13.作为优选,所述的终端设备包括pc端设备或移动端设备。
14.本发明的有益效果是:(1)通过mqtt服务器和coap 服务器来解决tcp与udp协议共存,兼容多协议转换,不改变物联网设备原有的数据传输协议,降低成本;(2)提出了mqtt服务器与coap服务器通过本地通信的方式来提高数据传输效率;(3)提出了在可变报头部分使用一个bit来设置对端协议类型标志位,不占用有效负载数据。
附图说明
15.图1是本发明实施例的协议融合算法的流程框图。
具体实施方式
16.下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
17.实施例:一种mqtt协议与coap协议融合算法,如图1所示,包括以下步骤:建立协议融合组件,将该组件与云端服务器或终端设备连接,终端设备包括pc端设备或移动端设备;协议融合组件包括mqtt服务器和coap服务器,mqtt服务器和coap服务器通过本地通信连接;判断物联网设备和终端设备使用的协议信息;若物联网设备和终端设备均采用同一种通讯协议,则协议融合组件进行数据分发,将若干个物联网设备的采集信息发送给终端设备或将物联网设备的采集信息发送给若干个终端设备;若物联网设备和终端设备不采用同一种通讯协议,则通过mqtt服务器和coap服务器进行报文转换后,将若干个物联网设备的采集信息发送给终端设备或将物联网设备的采集信息发送给若干个终端设备。
18.若物联网设备使用coap协议和终端设备使用mqtt协议,则coap服务器接收来自物联网设备的报文,coap服务解析报文,获取报文类型、code编码、消息id、可选报头数据及负载关键数据,之后以本地通信的方式发送至mqtt服务器,mqtt服务器将数据重组成对应的mqtt报文格式,发送到终端设备;若物联网设备使用mqtt协议和终端设备使用coap协议,则mqtt服务器接收来自物联网设备的报文,mqtt服务器解析报文,获取报文类型、code编码、消息id、可选报头数据及负载关键数据,之后以本地通信的方式发送至coap服务器,coap服务器将数据重组成对应的coap报文格式,发送到终端设备。
19.判断物联网设备和终端设备使用的协议信息的方法为:在报文的可变报头或可选项部分加入表明协议类型的字段,占用1bit,其中0b0代表coap,0b1代表mqtt。
20.协议融合组件还包括中间数据寄存器,中间数据寄存器通过本地通信分别与mqtt服务器和coap服务器连接,中间数据寄存器用于将物联网设备发送的数据进行存储和加密,中间数据寄存器进行数据加密的方法为:将每个物联网设备发送的报文整个成第一数
据包,将第一数据包拆分成n等份的第二数据包,记录第二数据包在原第一数据包中所处的位置,根据第二数据包在原第一数据包中所处的位置生成二进制密文,将二进制密文作为报头加入第二数据包中,将加入了密文的第二数据包进行随机组合生成第三数据包,中间数据寄存器以第三数据包的形式存储物联网设备发送的报文数据,中间数据寄存器存储多个第三数据包,根据终端设备的协议请求,选取第三数据包发送给mqtt服务器或coap服务器,mqtt服务器或coap服务器将第三数据包转换成第一数据包,根据第一数据包转换成mqtt报文格式或coap报文格式并发送给终端设备。
21.在实际应用中,当终端设备请求接收某一物联网设备的数据信息时,发送数据接收请求到云端服务器,云端服务器解析终端设备的数据请求,包括终端设备的协议、要接收的数据信息范围以及物联网设备的编号,根据物联网设备编号,云端服务器发送数据请求给该编号的物联网设备,物联网设备发送相应数据报文到协议融合组件,在数据报文可变报头或可选项部分加入表明协议类型的字段,占用1bit,其中0b0代表coap,0b1代表mqtt,判断物联网设备和终端设备是否协议相同,若两者协议相同且通信通道顺畅,则将数据包分发给终端设备,若通信通道拥挤,则将数据在中间数据寄存器中进行数据临时存储进行排队等待,若物联网设备和终端设备不采用同一种通讯协议,则根据物联网设备和终端设备采用的协议进行相应的协议转换,并根据通信通道情况进行数据发送,提高数据传输的便捷性和安全性。
22.本发明通过mqtt服务器和coap 服务器来解决tcp与udp协议共存,兼容多协议转换,不改变物联网设备原有的数据传输协议,降低成本;提出了mqtt服务器与coap服务器通过本地通信的方式来提高数据传输效率;提出了在可变报头部分使用一个bit来设置对端协议类型标志位,不占用有效负载数据;采用中间数据寄存器进行数据临时存储,防止多个数据同时发送或同时接受导致mqtt服务器和coap服务器崩溃,同时对数据在原有基础上进行进一步加密处理,防止数据被人窃取,提高数据传输的安全性。
23.以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1