一种基于流式处理的物联网设备通信方法
技术领域
本发明涉及物联网通信技术领域,具体涉及一种基于流式处理的物联网设备通信方法。
背景技术
随着物联网技术的不断发展,物联网平台、大数据处理等已被广泛应用到各行各业。基于物联网平台的设备间通信作为物联网技术应用的核心组成部分,其性能的优劣在整个物联网服务中起着关键作用。
然而,现有的物联网设备通信技术虽然已经成功地应用在社会的各个方面,但在处理海量不同类型设备间通信方面仍然存在以下不足:
首先,传统的物联网平台设备间通信往往都是基于某个单一协议,需要平台网关支持该协议的解析和分装。而不同类型设备采用不同协议,因而导致不同类型设备无法实现跨协议通信,需要物联网平台网关同时支持多种设备协议的解析和分装,在实现难度和业务复杂度方面会存在较大门槛。
其次,随着设备类型越来越多,面对海量的设备间通信消息,传统的物联网平台网关存在一定的性能瓶颈,无法高效处理所有消息,会造成延迟、丢失等现象。
当前国内外产品和专利中物联网设备通信方法的类似技术包括:
公开号为CN109167829A的中国发明专利《一种物联网通信方法及云网关》,其公开的技术方案通过协议转换,将具备不同通信协议的工业数据转换为OPC UA标准数据,然后再将得到的OPCUA标准数据转换为MQTT标准数据,最后将转换完的数据通过MQTT协议与物联网通信,并采用非阻塞的方式进行协议转换和传输任务调度。该方案在单一网关的基础上实现了不同协议工业数据上报物联网平台,同时也一定程度提高了通信的实时性,但是在协议的覆盖面上比较局限。具体有以下不足点:
(1)HTTP、CoAP等可以直接和物联网平台通信的协议,从设备到物联网平台仍需要2次协议转换(转成OPCUA,再转成MQTT),无疑在兼容性和通用性方面有明显缺陷;
(2)在任务调度方面虽然是非阻塞方式,但是采用按照时间顺序排列任务且使用同一非阻塞任务调度函数,4种任务同时存在于同一调度队列,用内存数据库存储数据库。当设备量达到一定量后,延迟不可避免,且各任务的执行时间各不一样,任务执行器数量达到上限之后,很多因素会对实时性有影响;
(3)该方法仅涉及设备到平台的上报过程,并不支持双向通信(设备-设备、设备-平台)请求并同时需要有响应返回的场景。
公开号为CN111444291A的的中国发明专利《物联网设备间的通信方法、物联网设备及存储介质》,提出了一种物联网设备间的通信方法,第一物联网设备通过向服务器发送交互指令,交互指令中包括第一物联网设备的标识信息,以使服务器根据第一物联网设备的标识信息向预先确定的群会话中的各第二物联网设备发送交互指令;接收服务器发送的至少一个第二物联网设备对应的交互响应数据;将交互指令与各交互响应数据进行输出,从而使第一物联网设备既能发指令也能收到第二物联网的响应指令,实现设备之间的通信。但该方法需要预先确定的群会话的第二物联网设备信息,且其所用的通信协议并不明确,只是实现了第一物联网设备的下发指令和对群会话范围内设备的感知,并不能感知到圈定范围外的其他设备,设备的功能层级不对等,严格上来说还是属于单向的,真正的交互理论上应该是可相互请求并感知到响应。该方法主要存在的不足:
(1)仅涉及不同类型设备间的通信,但未介绍不同协议,更没对多种不同协议通信的场景进行阐述和支持。(2)另外该方法需要预先定义很多规则,需要预先设定好指令的响应,在可扩展方面兼容性存在不足。
发明内容
基于上述背景,本发明提供了一种基于流式处理的物联网设备通信方法,以在提高物联网平台网关处理消息的高效性和实时性的同时能够支持设备与平台以及设备间跨协议的双向通信,从而增强物联网平台网关在设备通信中的整体性能表现。
为实现上述目的,本发明采用了如下技术方案:
一种基于流式处理的物联网设备通信方法,包括:
获取待接入设备和物联网平台的通信配置参数,所述通信配置参数包括待接入设备的通信协议和消息体格式,以及物联网平台的通信协议和通用消息体格式;
设置包含至少一个流式处理节点的流式处理引擎网关,基于获取的通信配置参数配置所述流式处理节点的输入端和输出端,以及所述流式处理结点的流处理逻辑;
配置待接入设备的通信参数,所述通信参数与该设备对应的流式处理节点的输入端相适配;
所述流式处理引擎网关内部的对应流式处理节点对待接入设备上报的消息进行处理后上报至物联网平台;
或者,流式处理引擎网关内部的对应流式处理节点对物联网平台下发的消息进行处理后输出至待接入设备。
进一步的,基于获取的通信配置参数配置所述流式处理节点的输入端包括:
根据待接入设备使用的通信协议配置输入端的通讯解析协议;
或者,根据物联网平台下发服务使用的通信协议和通用消息体格式,配置输入端使用的通讯解析协议。
进一步的,基于获取的通信配置参数配置所述流式处理节点的输出端包括:
根据物联网平台接入服务使用的通信协议和通用消息体格式,配置输出端使用的封装协议和通用消息体格式;
或者,根据待接入设备使用的通信协议配置和消息体格式,配置输出端使用的封装协议和消息体格式。
进一步的,配置所述流式处理结点的流处理逻辑包括:
根据待接入设备使用的消息体格式配置解析所需要获取的字段,转换成输出端所需要的封装协议和通用消息体格式;
或者,根据物联网平台使用的通用消息体格式配置解析所需要获取的字段,转换成输出端所需要的封装协议和消息体格式。
进一步的,根据待接入设备使用的消息体格式配置解析所需要获取的字段包括设备编码、消息数据部分、调用方法的名称和参数、消息生成的时间戳中的一种或几种;
根据物联网平台使用的通用消息体格式配置解析所需要获取的字段包括设备编码、消息生成的时间戳、消息数据部分、调用方法的名称和参数、协议类型、设备IP地址和端口号、消息订阅的主题中的一种或几种。
进一步的,配置待接入设备的通信参数包括待接入设备使用的协议以及协议所需的参数。
进一步的,通过所述流式处理引擎网关内部的对应流式处理节点对待接入设备上报的消息进行处理后上报至物联网平台包括:
流式处理节解析设备所使用的通信协议,并根据对应的通信协议解析消息获得数据流;
对解析得到的数据流,根据设备的消息体格式进行对应的数据提取;
根据物联网平台所需要的通用消息体格式,将提取到的数据转换封装成相应格式的消息;
根据物联网平台所支持的通信协议,将封装好的消息按照该协议的格式和传输方式通过输出端输出。
进一步的,通过流式处理引擎网关内部的对应流式处理节点对物联网平台下发的消息进行处理后输出至待接入设备包括:
流式处理节解析物联网平台所使用的通信协议,并根据对应的通信协议解析消息获得数据流;
对解析得到的数据流,根据物联网平台的通用消息体格式进行对应的数据提取;
根据设备所需要的消息体格式,将提取到的数据转换封装成相应格式的消息;
根据设备所支持的通信协议,将封装好的消息按照该协议的格式和传输方式通过输出端输出。
进一步的,该方法还包括:
所述流式处理引擎网关内部的对应流式处理节点对第一待接入设备上报的消息进行处理后上报至物联网平台;
物联网平台根据业务配置将第一待接入设备上报的消息直接转发或进行处理后转发至流式处理引擎网关;
所述流式处理引擎网关内部的对应流式处理节点对物联网平台下发的对应消息进行处理后输出至第二待接入设备。
进一步的,该方法还包括:
所述流式处理引擎网关内部的对应流式处理节点接收第二待接入设备的响应消息进行处理后上报至物联网平台;
物联网平台根据业务配置将所述响应消息直接转发或进行处理后转发至流式处理引擎网关;
所述流式处理引擎网关内部的对应流式处理节点对物联网平台下发的响应消息进行处理后输出至第一待接入设备。
进一步的,该方法还包括:
第一流式处理引擎网关内部的对应流式处理节点对第一待接入设备上报的消息进行处理后上报至物联网平台;
物联网平台根据业务配置将第一待接入设备上报的消息直接转发或进行处理后转发至第二流式处理引擎网关;
第二流式处理引擎网关内部的对应流式处理节点对物联网平台下发的对应消息进行处理后输出至第二待接入设备。
进一步的,该方法还包括:
第二流式处理引擎网关内部的对应流式处理节点接收第二待接入设备的响应消息进行处理后上报至物联网平台;
物联网平台根据业务配置将所述响应消息直接转发或进行处理后转发至第一流式处理引擎网关;
第一流式处理引擎网关内部的对应流式处理节点对物联网平台下发的响应消息进行处理后输出至第一待接入设备。
本发明的有益效果如下:
1)采用流式处理引擎(处理单元可以分布式部署,随物理设备数量决定上限,可以横向扩展),提高了设备与物联网平台,或者设备经物联网平台与其它设备通信消息处理的高效和实时性。
2)基于流式处理引擎,可自定义配置协议转换,从而兼容不同协议转换。通过配置流式处理节点可以自定义解析流入和流出的通信协议和数据格式,大大降低了不同类型协议的通信成本,提高了对设备类型的支持范围。
3)支持跨网段通信(在不同网段部署多个流式处理引擎网关时,不同网段的设备可以通过流式处理引擎网关进行通信),提高了物联网平台的控制范围,对其使用场景有较大的拓展。
附图说明
图1为本发明示出实施例中流式处理引擎网关内部处理逻辑示意图。
图2为本发明示出实施例中平台-设备单向通信数据流向示意图。
图3为本发明示出实施例中设备-平台单向通信数据流向示意图。
图4为本发明示出实施例中设备-平台双向通信数据流向示意图。
图5为本发明示出实施例中设备-平台-设备双向通信数据流向示意图。
图6为本发明示出实施例中模拟设备通过mqtt协议将消息上报至使用http的物联网平台的流程示意图。
图7为本发明示出实施例中使用MQTTBox模拟设备并配置通信参数的示意图。
图8为本发明示出实施例中模拟设备发送上报消息的示意图。
图9为本发明示出实施例中物联网平台通过HTTP协议接收到设备上报的消息示意图。
具体实施方式
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
本发明提供了一种基于流式处理的物联网设备通信方法,包括如下步骤:
首先,获取待接入设备和物联网平台的通信配置参数,获取的通信配置参数包括待接入设备的类型及其使用的通信协议和消息体格式,以及物联网平台的通信协议和通用消息体格式。
然后,设置包含至少一个流式处理节点的流式处理引擎网关,基于获取的通信配置参数配置流式处理节点的输入端和输出端,以及所述流式处理结点的流处理逻辑。
在一些实施例中,基于获取的通信配置参数配置所述流式处理节点的输入端包括:
根据待接入设备使用的通信协议配置输入端的通讯解析协议;
或者,根据物联网平台下发服务使用的通信协议和通用消息体格式,配置输入端使用的通讯解析协议。
在一些实施例中,基于获取的通信配置参数配置所述流式处理节点的输出端包括:
根据物联网平台接入服务使用的通信协议和通用消息体格式,配置输出端使用的封装协议和通用消息体格式;
或者,根据待接入设备使用的通信协议配置和消息体格式,配置输出端使用的封装协议和消息体格式。
在一些实施例中,配置所述流式处理结点的流处理逻辑包括:
根据待接入设备使用的消息体格式配置解析所需要获取的字段,转换成输出端所需要的封装协议和通用消息体格式;
或者,根据物联网平台使用的通用消息体格式配置解析所需要获取的字段,转换成输出端所需要的封装协议和消息体格式。
在一些示出性实例中,根据待接入设备使用的消息体格式配置解析所需要获取的字段包括设备编码、消息数据部分、调用方法的名称和参数、消息生成的时间戳中的一种或几种。
在一些示出性实例中,根据物联网平台使用的通用消息体格式配置解析所需要获取的字段包括设备编码、消息生成的时间戳、消息数据部分、调用方法的名称和参数、协议类型、设备IP地址和端口号、消息订阅的主题中的一种或几种。
在一个示出性实例中,以siddhi流式处理节点为例,上述配置方法包括:
步骤1:编写siddhi应用配置文件,包含数据的输入端(source,能够解析多种物联网协议如HTTP、MQTT、TCP等),数据的处理逻辑(类sql语言),数据处理完的输出端(sink)。
步骤2:启动该siddhi流式处理节点,需要配置了1.8java版本的环境。每一个siddhi应用配置文件,可以作为单独的流式处理节点运行,因此可以快速部署多个siddhi流式处理结点,完成数据过滤、透传、数据转换,以及根据需求配置的数据存储集成、聚合等操作。
再然后,配置待接入设备的通信参数,配置的通信参数与该设备对应的流式处理节点的输入端相适配。
在一些实施例中,配置待接入设备的通信参数包括待接入设备使用的协议以及协议所需的参数。
在一些示出性实例中,如果待接入设备使用HTTP、TCP等通信,需要配置IP地址以及通信端口号;如果使用MQTT等消息订阅的通信,则需配置通信服务器的IP和端口,设备校验的账户和密码等。
接下来,分别启动待接入设备、包含流式处理节点的流式处理引擎网关和物联网平台,即可进行设备与物联网平台或者设备--网联网平台--设备之间的通信。比如,待接入设备通过物联网通信协议(MQTT、HTTP、CoAP等)上报数据(设备的信息,包括消息的类型、设备的状态、设备监测到的传感数据等)至流式处理引擎网关。
参见附图1,在一些实施例中,上述通信包括如下模式:
流式处理引擎网关201内部的对应流式处理节点对待接入设备101、102上报的消息进行处理后上报至物联网平台301。
或者,流式处理引擎网关201内部的对应流式处理节点对物联网平台301下发的消息进行处理后输出至待接入设备101、102。
在一个示出性实例中,对待接入设备上报的消息进行处理后上报至物联网平台具体包括:
流式处理节解析设备所使用的通信协议,并根据对应的通信协议解析消息获得数据流(对于不同协议需要不同的解析,如二进制数据、文本数据);
对解析得到的数据流,根据设备的消息体格式进行对应的数据提取(提取设备上报消息中的数据信息,如设备编码、上报时间戳、数据内容、请求调用的方法等);
根据物联网平台所需要的通用消息体格式,将提取到的数据转换封装成相应格式的消息(转换成通用的消息体格式,如json、xml格式);
根据物联网平台所支持的通信协议,将封装好的消息按照该协议的格式和传输方式通过输出端输出(根据和物联网平台约定的方式或协议,将设备数据上报的消息上报至平台,协议通常有HTTP、MQTT,包括通过中间件如kafka、rabbitMQ等)。
在一个示出性实例中,对物联网平台下发的消息进行处理后输出至待接入设备具体包括:
流式处理节解析物联网平台所使用的通信协议,并根据对应的通信协议解析消息获得数据流;
对解析得到的数据流,根据物联网平台的通用消息体格式进行对应的数据提取;
根据设备所需要的消息体格式,将提取到的数据转换封装成相应格式的消息;
根据设备所支持的通信协议,将封装好的消息按照该协议的格式和传输方式通过输出端输出。
通过上述流程,可以实现如图2所示的物联网平台301通过流式处理引擎网关201单向往设备101、102下发消息(场景举例:平台下发调低灯光亮度的消息,设备接收后调低亮度),或者如图3所示的设备101、102通过流式处理引擎网关201单向往物联网平台301上报数据(场景举例:设备的消息上报(电量、灯的亮度、当前的开关状态)到平台)。
在另外的实施例中,本发明的方法还包括:
流式处理引擎网关内部的对应流式处理节点对第一待接入设备上报的消息进行处理后上报至物联网平台;
物联网平台根据业务配置将第一待接入设备上报的消息直接转发或进行处理后转发至流式处理引擎网关;
所述流式处理引擎网关内部的对应流式处理节点对物联网平台下发的对应消息进行处理后输出至第二待接入设备。
进一步的,流式处理引擎网关内部的对应流式处理节点接收第二待接入设备的响应消息进行处理后上报至物联网平台;
物联网平台根据业务配置将所述响应消息直接转发或进行处理后转发至流式处理引擎网关;
所述流式处理引擎网关内部的对应流式处理节点对物联网平台下发的响应消息进行处理后输出至第一待接入设备。
通过上述流程,根据平台业务需要,由于上报和下发的消息都是通用的消息格式,属于同一网关范围内的设备可以进行相互通信。比如图4所示的设备101、102通过流式处理引擎网关201与物联网平台301之间的双向通信(场景举例1、(平台-设备-平台)平台需要立即获取设备一(温度传感器)、设备二(湿度传感器)的当前实时数据,需要先下发消息后,设备响应返回给平台。场景举例2、(设备-平台-设备)当设备一(温度传感器)上报数据,温度的值过高时,平台下发降温的指令)。
在另外的实施例中,本发明的方法还包括:
第一流式处理引擎网关内部的对应流式处理节点对第一待接入设备上报的消息进行处理后上报至物联网平台;
物联网平台根据业务配置将第一待接入设备上报的消息直接转发或进行处理后转发至第二流式处理引擎网关;
第二流式处理引擎网关内部的对应流式处理节点对物联网平台下发的对应消息进行处理后输出至第二待接入设备。
进一步的,第二流式处理引擎网关内部的对应流式处理节点接收第二待接入设备的响应消息进行处理后上报至物联网平台;
物联网平台根据业务配置将所述响应消息直接转发或进行处理后转发至第一流式处理引擎网关;
第一流式处理引擎网关内部的对应流式处理节点对物联网平台下发的响应消息进行处理后输出至第一待接入设备。
通过上述流程,当存在多个流式处理引擎网关时,如果网关部署在不同的网络中,可以实现不同网段的设备间通信。比如图5所示的设备101通过流式处理引擎网关201、物联网平台301、流式处理引擎网关202进行的与设备102之间的通信(场景举例:设备一(灯控制器)需要获取在不同网段的设备二(光感传感器)的数据,根据该数据的值判断是否开关灯)。
下面通过一个具体实例对本发明中流式处理节点进行消息转发和处理的流程进行进一步举例说明。
1)参考附图6,模拟设备通过mqtt协议将消息上报至使用http的物联网平台。
2)配置流式处理结点,输入流、输出流和处理逻辑(上报的字段全部透传)。具体实现方式如下:
3)配置设备:
3.1设备端配置(协议、ip:端口、其他协议参数等),具体配置方式参见附图7;
3.2发送消息(发送消息payload,到指定的topic(/test),消息的格式为json);具体参见附图8。
4)平台端接口收到由设备消息上报的消息,如图9所示。
图示中的示例协议为:
协议1:MQTT;
协议2:HTTP。
字段解释如下:
deviceId:设备的唯一编码;ts:消息生成的时间戳;
values:消息数据部分;method:调用的方法名称;
params:调用方法的参数;protocol:协议类型;
ip:ip地址;port:端口号;
topic:消息订阅的主题。
以上字段根据实际通信协议类型,device、ts为必选,其余为可选。
该示出实例中,设备上报的消息体格式示例为:
{
"deviceId":"NO1"
"ts": 1632817365000,
"values": {
"key1": "value1",
"key2": "value2"
}
"method": "resetTemperature",
"params": {}
}
上报至平台的通用消息体格式示例为:
{
"deviceId":"NO1"
"ts": 1632817365000,
"values": {
"key1": "value1",
"key2": "value2"
}
"method": "resetTemperature",
"params": {}
}
平台下发的通用消息体格式示例为:
{
protocol:
ip:
port:
topic:
"deviceId":NO1
"ts": 1632817365000,
"values": {
"key1": "value1",
"key2": "value2"
}
"method": "resetTemperature",
"params": {}
}
经网关处理后下发给设备的控制消示例为:
{
"deviceId":"NO1"
"ts": 1632817365000,
"values": {
"key1": "value1",
"key2": "value2"
}
"method": "resetTemperature",
"params": {}
}
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。