发明内容
本发明的目的是克服上述现有技术中存在的缺点,提出一种对物联网感知设备进行云端实时仿真的系统和方法,在云端建立云端仿真节点对物联网感知设备进行实时仿真,使物联网感知设备和其所对应的云端仿真节点的数据和属性保持一致性,使得云端仿真节点具有同其对应的感知设备同样的功能,云服务程序或应用程序通过访问云端仿真节点的形式与物联网感知设备进行数据的交互而不必关心实际感知设备的位置及访问方式。
本发明的技术方案是:一种对物联网感知设备进行云端实时仿真的系统,包括:
用于进行数据采集和处理的物联网感知设备、用于实现多种异构网络接入和融合的物联网网关设备以及云端设备仿真中心;所述物联网感知设备处于异构网络中;所述物联网网关设备接入互联网中,该物联网网关设备通过直接或间接的方式与接入其中的物联网感知设备进行数据的交互;所述云端设备仿真中心是物联网感知设备进行云端仿真的载体。
上述系统还包括用于对外提供实时数据的发布和订阅服务的MQTT服务器,该MQTT服务器处于所述云端,是所述物联网网关设备与云端设备仿真中心的数据传输中介,物联网网关设备采用MQTT协议作为一个客户端利用MQTT服务器进行消息的发布和订阅;所述云端设备仿真中心作为另外一个客户端利用MQTT服务器进行消息的发布和订阅。
上述物联网感知设备包括用于采集环境数据和根据传输命令控制设备组件的数据感知模块,以及用于与感知网络中物联网感知设备的主设备进行通信或与所述数据感知模块进行直接交互以实现数据的发送、处理和接收的数据处理模块。
上述云端设备仿真中心包括用于仿真数据处理的仿真数据处理模块和用于云端仿真的仿真节点模块,该仿真节点模块从仿真数据处理模块获取所需要的仿真数据。
上述物联网网关设备有数据需要推送时通过MQTT服务器发布消息,有订阅的消息到达时通过MQTT服务器进行接收。所述云端设备仿真中心包括用于仿真数据处理的仿真数据处理模块和用于云端仿真的仿真节点模块,该仿真节点模块从仿真数据处理模块获取所需要的仿真数据。所述仿真数据处理模块将要发送给物联网网关设备的数据转化成MQTT消息的格式,将以订阅形式从物联网网关设备得到的消息转换成key-value形式的数据。
上述仿真节点模块包括云端分布式内存数据库系统,利用所述云端分布式内存数据库系统在云端建立多个云端仿真节点。
上述仿真节点模块包括云端分布式内存数据库系统,利用所述云端分布式内存数据库系统在云端建立多个云端仿真节点;所述仿真数据处理模块将接收到并且已处理的数据以key-value形式将对应的ID和数据存入云端分布式内存数据库系统中;所述云端仿真节点根据自身属性从云端分布式内存数据库系统中得到所需数据以与对应物联网感知设备保持同步;所述云端仿真节点将所得到的数据进行封装以接口形式对外提供服务供云服务程序调用,如果对应的是可控的物联网感知设备对外提供数据传入接口供云服务程序调用,将得到的数据传送给仿真数据处理模块。
一种对物联网感知设备进行云端实时仿真的方法,包括以下步骤:
1)物联网感知设备通过其所在的传感网络与物联网网关设备建立socket连接以进行数据的传送,所述物联网感知设备或其所在网络的主设备作为客户端,所述物联网网关设备作为服务端;
2)物联网网关设备利用MQTT协议作为一个客户端利用MQTT服务器4进行消息的发布和订阅,所述物联网网关设备一旦接到由物联网感知设备发送的数据就以MQTT发布消息的形式实时推送出去,同时以MQTT订阅消息的形式接收来自于仿真数据处理模块发送的数据;
3)仿真数据处理模块利用MQTT协议作为另外一个客户端利用MQTT服务器同物联网网关设备进行消息的订阅和发布,仿真数据处理模块以MQTT消息订阅的形式接收来自于物联网网关设备推送的实时数据,以消息发布的形式推送来自于仿真数据处理模块的数据给物联网网关设备;
4)仿真数据处理模块将得到的数据进行处理并根据物联网感知设备的ID以key-value的形式将得到的数据存入到云服务器中的云端分布式内存数据库系统中;
5)仿真节点模块根据物联网感知设备的属性在内存数据库中为每个云端仿真节点分配一个实时数据存储空间,当有同一key对应的新数据到来时替换原有数据以保证云端仿真节点与其所对应的物联网感知设备保持实时同步;
6)云端仿真节点通过仿真节点模块在内存数据库中获取到其所对应的最新数据,当云服务程序访问云端仿真节点时,仿真节点模块以接口的形式将最新数据传送给云服务程序。
上述步骤5)中一个云端仿真节点可以由一个物联网感知设备组成也可以由多个物联网感知设备组成,由多个物联网感知设备组成的云端仿真节点,其对应的物联网感知设备可以是从同一物联网网关设备接入的多个物联网感知设备也可是从多个不同物联网网关设备接入的多个物联网感知设备,据此云端仿真节点可分为独立仿真节点、本地组合仿真节点和远程组合仿真节点。
上述步骤6)中仿真节点模块如果对应的物联网感知设备具有数据接收功能或受控功能,仿真节点模块还需要有供云服务程序使用的数据接收的接口,当云服务程序需要传输命令或数据给物联网感知设备时直接调用云端仿真节点的接口,云端仿真节点将命令或数据传送给仿真节点处理模块,仿真节点处理模块将命令反向推送给物联网感知设备以保持物联感知设备和其对应的云端仿真节点的同步。
本发明的有益效果:本发明具有如下优点:
1、在云端虚拟物联网感知设备就如同感知设备处于云端一样,便于云服务程序或远程应用程序对物联网感知设备的访问;
2、组合仿真设备的建立便于云服务程序或远程应用程序同时访问多个处于不同区域的设备,减轻了设备访问的逻辑复杂性;
3、云端仿真节点接口的使用便于云端服务程序同时获取大量物联网感知设备的实时数据;
4、设备的仿真使得云端服务程序或远程应用程序无法直接访问实体设备有利于物联网感知设备及其所在传感网络的安全性,便于对设备进行访问控制。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。
本发明实施例的目的之一,是提供一种对物联网感知设备进行云端实时仿真的系统,通过在传感网络中接入物联网感知设备1和网关设备,在云端设计和部署与物联网感知设备1对应的云端仿真节点,并利用MQTT协议用在云服务器上部署的MQTT服务器4作中介实现物联网感知设备1和云端仿真节点间的数据和状态同步。
主要实现以下两个功能点:
(1)在云端建立物联网感知设备1云端仿真节点集群。本发明利用云端分布式内存数据库系统5在云端建立虚拟的云端仿真节点,使云端仿真节点能够具有同实际设备一样的属性;
(2)保持物联网感知设备1同云端仿真节点的数据同步。本发明采用MQTT即时通信协议分别在实体物联网感知设备1端和云端建立MQTT客户端,并在云服务器上建立MQTT服务器4,一旦物联网感知设备1端或云端仿真节点有新数据产生立即以MQTT消息发布的形式推送出去,另一端以监听MQTT服务器4的形式获取最新数据,以此保证物联网感知设备1和其对应的云端仿真节点数据和状态的一致性。
为达到上述目的,所述对物联网感知设备进行云端实时仿真的系统架构图如图1所示,系统总体分为感知层11、传输层10和云端仿真层9,其中:
感知层11包括物联网感知设备1和物联网网关设备2,所述物联网感知设备1处于传感网络中,所述物联网网关设备2一端接入互联网并实现多种异构网络接入和融合。
传输层10包括传输网络8和MQTT服务器4。
云端仿真层9包括云端设备仿真中心,所述云端设备仿真中心包括仿真数据处理模块3和仿真节点模块。
具体的,物联网网关设备2是传感网络与互联网进行融合和互联的中介,物联网感知设备1通过传感网络接入并与网关进行直接或间接的通信,传感网络中的主设备与物联网网关设备2通过Socket通信的形式进行数据的交互。MQTT服务器4、仿真数据处理模块3和仿真节点模块部署在云端,MQTT服务器4分配有一个固定的IP并对方开放一个MQTT服务端口,仿真数据处理模块3和仿真节点模块是设备仿真节点的云端载体。
实体设备端和云端数据的实时同步是通过即时消息机制来实现的,一旦MQTT客户端有新的消息产生立即推送给另外一个客户端,在一端没有接到最新数据之前一直保持之前接收到最新数据的状态。物联网感知设备1和云端仿真节点的通信模型如图2所示,物联网网关设备2端和仿真数据处理模块3端分别作为一个MQTT客户端通过向MQTT服务器4进行消息发布和订阅的方式进行相互实时通信。
具体的,当物联网网关设备2作为MQTT的一个客户端进行消息推送时其流程图如图3所示,其具体步骤为:
(1)物联网网关设备2作为一个MQTT客户端连接服务端;
(2)判断是否已经处于连接状态若已经连接跳转到步骤(5);
(3)若未进行连接物联网网关设备2通过MQTT的IP+服务端口与MQTT服务器4进行连接,向MQTT服务端发送用户名和密码并进行认证;
(4)判断请求认证是否通过,若未通过认证跳转到步骤(1)或终止认证;
(5)若认证通过MQTT服务器4对客户端认证通过后对客户端进行应答,并保持连接状态;
(6)当物联网网关设备2MQTT客户端将数据对应设备的ID号作为消息标识将数据传送到MQTT服务端;
(7)MQTT服务端接到要发布的数据时根据消息标识将消息发布出去并向物联网网关设备2返回消息发布成功。
云端设备仿真中心数据处理模块作为MQTT的一个客户端进行消息的推送时过程与之类似。
具体的,当物联网网关设备2作为MQTT的一个客户端进行消息接收时其流程图如图4所示,其具体步骤为:
(1)物联网网关设备2数据处理端作为MQTT的一个客户端连接服务端;
(2)检查是否已经与MQTT保持着连接,若已经连接则转到步骤(6);
(3)若未连接,物联网网关设备2数据处理端向MQTT服务器4以认证的方式进行连接;
(4)判断认证是否通过,若认证未通过则转到步骤(1)或结束连接;
(5)若认证通过则对MQTT的客户端和服务端之间的连接进行保持;
(6)物联网网关设备2数据处理端对MQTT服务器4的服务端口进行监听;
(7)判断是否有自己监听的数据产生,果暂时没有自己所订阅的数据则继续进行监听;
(8)若监听到有自己所订阅的数据产生时则对数据进行接收并及时做下一步的处理。
云端设备仿真中心作为MQTT的一个客户端进行消息接收时过程与之类似。
本发明实施例物联网感知设备1通过构建的传感网络接入,物联网感知设备1由信息感知和处理模块和传感通信模块构成,传感通信模块将物联网感知设备1信息采集模块采集的数据传入传感网络中。物联网感知设备1可分为两种类型:物联网数据采集感知设备和物联网可控感知设备。温湿度感知设备、人体红外感知设备、烟雾监测感知设备、可燃气体监测感知设备、电表感知设备和医疗测试感知设备等属于物联网数据采集设备,电机设备、继电器设备、声光报警设备和红外控制信号发射设备等属于物联网可控感知设备。
本发明实施例物联网网关设备2由传感接入模块、数据融合处理模块和数据推送接收模块构成。传感接入模块为传感网络接入网关的接口,数据融合和处理模块通过统一接收异构网络中数据并进行格式的统一来实现异构网络的融合,数据推送和接收模块采用MQTT协议作为MQTT协议的一个客户端。在物联网网关设备2上建立一个物联网感知设备1标识和地址的映射表用于记录通过本网关接入的设备的标识和地址。数据推送和接收模块MQTT客户端通过监听映射表中的设备标识来接收数据。
具体的,物联网网关设备2端模块结构图如图5所示,传感网络接入模块接收接入网关的传感网络的数据并转发给物联网网关设备2数据融合和处理模块,数据融合和处理模块将接入到物联网网关设备2的设备形成设备标识+设备地址的映射表,并将数据进行处理融合,MQTT客户端通过消息发布和订阅的形式进行数据的推送和接收。
本发明实施例所述处于云端的MQTT服务器4是MQTT协议的服务端,采用mosquitto实现其MQTT服务器4功能,在云服务器上部署mosquitto服务器并为其分配服务端口并设置访问密码。
具体的,MQTT服务器4的设计如下:
在云端部署mosquitto服务端,为服务端提供一个可访问的地址,配置mosquitto服务端开放一个对外服务的端口、设置访问的用户名和密码。客户端通过访问服务地址+端口的形式进行认证和数据的发布和订阅。
本发明实施例所述云端设备仿真中心包括仿真数据处理模块3和仿真节点模块,云端仿真中心架构图如图6所示。
具体的,所述仿真数据处理模块3将要发送给所述物联网网关设备2的数据转化成MQTT消息的格式,将以订阅形式从所述物联网网关设备2得到的消息转换成key-value形式的数据。仿真数据处理模块3将接收到并且已处理的数据以key-value形式将对应的ID和数据存入所述内存数据库中,所述云端仿真节点根据自身属性从所述内存数据库中得到所需数据以与对应所述物联网感知设备1保持同步。
具体的,仿真数据处理模块3的具体设计如下:
仿真数据处理模块3数据处理示意图如图7所示,包括如下步骤:
(1)MQTT客户端从MQTT服务器4监听获取到其订阅的数据;
(2)将得到的数据进行解析并进行封装;
(3)根据解析的数据设备标识将其填入到内存数据库。
具体的,本发明实施例采用开源项目Paho工具包实现MQTT客户端,Paho项目旨在提供可伸缩的开放和标准的Machine-to-Machine(M2M)以及物联网消息协议的开源实现,Paho提供了MQTT发布/订阅实现。为了不影响数据接收的效率,MQTT得到数据后在云端开辟一个单独的线程对得到的仿真数据进行单独解析。数据处理线程将数据解析后并进行封装后以key-value的形式存入到内存数据库中。
仿真节点模块根据实时数据和设备属性建立云端仿真节点。
具体的,仿真节点模块的建立示意图如图8所示,仿真节点模块的具体设计步骤如下:
(1)在云端建立和部署云端数据库系统12;
(2)在云端数据库系统12中建立设备信息表13,设备信息表13包括如下字段:设备编号、设备标识、设备网关地址和设备MAC地址,设备信息表13与每个物联网网关设备2映射表保持同步,一旦网关上有新的设备加入或删除物联网网关设备2就以发布MQTT的形式与云端设备信息表13进行一次同步,保证云端信息表根据设备状态的变化而更新。同时建立组合仿真节点7与物联网感知设备1映射信息表包括如下字段:组合设备编号、设备编号;
(3)在云端建立云端分布式内存数据库系统5,云端分布式内存数据库系统5是云端仿真节点的直接载体,由于会有大量物联网感知设备1需要进行云端仿真,内存计算存储量较大,所以需要多台云服务器做支撑。本发明实施例采用开源项目Redis部署云端分布式内存数据库系统5,给每个用于建立云端仿真节点的云服务器安装Redis并进行配置,指定一台云服务器作为Redis主服务器建立并管理云端分布式内存数据库资源池,根据已经配置Redis服务的云服务器的ip地址将其加入到云端分布式内存数据库资源池中;
(4)当云端设备仿真中心启动时云端内存数据库分布式系统根据云端设备信息表13为每一个物联网感知设备1建立一个信息存储节点作为其仿真载体,根据组合仿真节点7与物联网感知设备1组合设备映射表14为每一个组合仿真节点7在内存数据库分布式系统中建立一个信息存储节点。建立信息存储节点的过程为从Redis云端分布式内存数据库资源池中取一个key-value形式的信息存储节点,当一个物联网感知设备1传送来新数据时以设备标识-数据的形式更新信息存储节点;
(5)云端仿真节点以接口的形式对外提供设备信息服务,对从云端分布式内存数据库系统中获取数据并对数据解析的过程封装成接口,接口中的参数为设备标识和服务类型。
本发明的另一个目的是提供一种对物联网感知设备进行云端实时仿真的方法,一种对物联网感知设备进行云端实时仿真的方法的示意图如图9所示,其具体实施包括以下步骤:
(1)物联网感知设备1通过其所在的传感网络与物联网网关设备2建立socket连接以进行数据的传送,所述物联网感知设备1或其所在网络的主设备作为客户端,所述物联网网关设备2作为服务端;
(2)物联网网关设备2利用MQTT协议作为一个客户端利用MQTT服务器4进行消息的发布和订阅,所述物联网网关设备2一旦接到由物联网感知设备1发送的数据就以MQTT发布消息的形式实时推送出去,同时以MQTT订阅消息的形式接收来自于仿真数据处理模块3发送的数据;
(3)仿真数据处理模块3利用MQTT协议作为另外一个客户端利用MQTT服务器4同物联网网关设备2进行消息的订阅和发布,仿真数据处理模块3以MQTT消息订阅的形式接收来自于物联网网关设备2推送的实时数据,以消息发布的形式推送来自于仿真数据处理模块3的数据给物联网网关设备2;
(4)仿真数据处理模块3将得到的数据进行处理并根据物联网感知设备1的ID以key-value的形式将得到的数据存入到云服务器中的云端分布式内存数据库系统5中;
(5)仿真节点模块根据物联网感知设备1的属性在内存数据库中为每个云端仿真节点分配一个实时数据存储空间,当有同一key对应的新数据到来时替换原有数据以保证云端仿真节点与其所对应的物联网感知设备1保持实时同步;其中,一个云端仿真节点可以由一个物联网感知设备1组成也可以由多个物联网感知设备1组成,由多个物联网感知设备1组成的云端仿真节点,其对应的物联网感知设备1可以是从同一物联网网关设备2接入的多个物联网感知设备1也可是从多个不同物联网网关设备2接入的多个物联网感知设备1,据此云端仿真节点可分为独立仿真节点6、本地组合仿真节点7和远程组合仿真节点7;
(6)云端仿真节点通过仿真节点模块在内存数据库中获取到其所对应的最新数据,当云服务程序访问云端仿真节点时,仿真节点模块以接口的形式将最新数据传送给云服务程序;仿真节点模块如果对应的物联网感知设备1具有数据接收功能或受控功能,仿真节点模块还需要有供云服务程序使用的数据接收的接口,当云服务程序需要传输命令或数据给物联网感知设备1时直接调用云端仿真节点的接口,云端仿真节点将命令或数据传送给仿真节点处理模块,仿真节点处理模块将命令反向推送给物联网感知设备1以保持物联感知设备和其对应的云端仿真节点的同步。
综上,本发明具有如下优点:
1、在云端虚拟物联网感知设备就如同感知设备处于云端一样,便于云服务程序或远程应用程序对物联网感知设备的访问;
2、组合仿真设备的建立便于云服务程序或远程应用程序同时访问多个处于不同区域的设备,减轻了设备访问的逻辑复杂性;
3、云端仿真节点接口的使用便于云端服务程序同时获取大量物联网感知设备的实时数据;
4、设备的仿真使得云端服务程序或远程应用程序无法直接访问实体设备有利于物联网感知设备及其所在传感网络的安全性,便于对设备进行访问控制。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。本实施方式中没有详细叙述的部分属本行业的公知的常用手段,这里不一一叙述。