庞中强郑州大学信息工程学院
面向智能家居的数据库中间件软件设计
庞中强
郑州大学信息工程学院
文章旨在将不同无线网络、不同通信格式的设备结合起来,从而构建一个面向智能家居的异构网络控制系统。针对不同协议、不同厂家的无线设备难以互通互联、统一控制的问题,本文提出了一种基于Web的中间件软件架构。该中间件进行数据格式转换的同时还能结合Web界面控制设备呈现给用户。上层控制端通过对数据库的操作来实现对不同通信网络智能家居设备的控制和联动。异构无线网络-ARM网关-数据库中间件-控制端的架构能够使用户在避免接触底层硬件系统和软件编程的情况下,快速组网灵活控制智能家居设备,增强了智能家居的系统的易用性。
中间件 数据库 无线传感器网络 网关
随着物联网技术的不断发展,对家居的智能控制成为时下人们对生活质量提高的一种新的需求。智能家居控制系统是将整个家庭中的家居设备有机的整合到一起,并对这些设备进行有效的控制,形成功能完善的系统。现阶段智能家居系统尚处在起步阶段,市场上没有一种统一的智能家居控制系统。由于不同厂家的设备种类众多,通信协议不同,并有各种不同的通信数据格式,难以实现对设备的统一控制。因此,现阶段的智能家居控制系统兼容性差、用户使用不便。针对上述问题本文设计了一种面向智能家居的数据库中间件。结合Web界面构成的智能家居控制系统可以使通信协议不同、数据格式不同的各种智能家居设备连接在一起,实现远程的智能监控。整个智能家居控制系统分为网关、数据库中间 件和Web控制界面,本文将重点介绍第二部分。
网关可以与三种不同协议的智能家居设备进行通信;数据上行:网关把设备通过Zigbee、 Bluetooth、RS232上传的数据加上设备编号,再通过WiFi上传给服务器;数据下行:网关把上层控制界面通过WiFi下达的指令按编号发给相应的设备(以 该设备的通信方式)。系统结构可分为四个部分:(1)Zigbee控制模块及拓扑结构。(2)Bluetooth控制模块及拓扑结构。 (3)WiFi控制模块。(4)基于ARM的异构网络嵌入式网关。
数据库中间件是上层控制界面(组态软件或者web界面)与下层智能家居设备(节点与网关所组成的网络)之间相互通信、交换数据的桥梁。其旨在为各种不同的上层界面和下层设备提供一个通用的驱动程序。网关和数据库中间件能够使来自于不同生产厂家、通信方式不同的多个设备节点都能连接到本课题设计的系统上,并进行统一监控。用户可以通过web页面监视设备的状态,也可以通过改变数据库中的数据来实现对节点的控制。
数据库中间件主要任务包括:将网关上传的各节点采集到的状态数据按编号存入数据库;把用户发送的目标状态存入数据库,通过对比当前状态与目标状态查询相应的控制指令;把指令加上节点编号发送给网关,由网关按编号发给相应的设备,从而完成用户对节点的控制。
2.1通信模块
通信模块主要包含两个功能:接收网关上传的各设备节点数据,存入数据库;把数据库中的指令取出并发送给网关。包含TCP以及UDP两种通信协议,主要任务:接收网关发送的数据存入数据库; 合成指令发送给网关。
上传数据:网关将设备节点采集的信息加上分配的编号,通过WiFi发送给服务器,PC上的通信模 块与网关建立socket通信,通信模块接收到数据以后 将数据存入数据库中。
下达指令:通信模块从指令表中查询指令,按数据格式表中的格式合并,然后加上网关预先分配的设备节点编号发送给网关,再由网关指令下达给相应的节点。
2.2数据库
本课题采用在windows环境下运行的Mysql数据库。Mysql是一款自由软件,由瑞士的Mysql Lab公司开发,是一款真正快速、多用户、多线程的SQL 数据库服务器。相对于Oracle等其他数据库来说,Mysql的使用非常简单,整个数据库小巧、简单、快速,符合智能家居系统数据量小、结构简单、要求快速和实时性以及对设备配置需求低的特点。整个数据库共包含9个表:目标状态表、目标表、发送指令表、接收数据表、数据格式表、设备信息表、接收信号表、阈值表和逻辑表。
目标状态表是用来储存各个设备节点的当前状态信息和上层界面发送的目标指令,存储的数据类型包括布尔值、浮点数;设备编号列由网关进行分配;对于控制设备(可以进行操控的设备)状态列存储每个节点的当前状态如:灯的亮灭、窗帘的开关等,目标列存储节点的目标状态,即将要达到的状 态;对于监视设备(只负责采集数据的设备)状态列存储变化前的设备初状态如:座垫下压力传感器的压力值,设置阈值做判断的将判断后的结果(布尔 值)存储在本列,目标列存储变化后设备的末状态。
设备信息表用来存储控制设备由当前状态转变到目标状态需要下达的机器指令(节点收到的控制指令)。该表共有六列:当前状态列、目标列、指令列、设备号列、序号列和设备名称列。其中目标列、状态列和设备号列与目标状态表中对应的列存储的内容相同。指令列存储控制设备所需的指令,对应该行的目标和状态,指令的数据格式为字符串。设备名称列存储设备的中文名称。
数据格式表用来存储与每个节点通信的数据格式,网关上传数据时查询数据格式表,按该节点的数据格式拆分数据存入状态表,下达指令时也要先查询数据格式表,按格式发送指令。网关上传的数据存储在接收数据表中,上层控制界面下达的指令存储在发送指令表中。由触发器生成指令,触发事件:改变目标表的数据;执行语句:生成指令,执行预先设定了逻辑。逻辑表存储预想设定的控制逻辑。
2.3控制流程
首先,上层界面把用户发出的控制指令即目标状态存入目标状态表中,如打开电灯则在目标表中对应的电灯节点一行存入1(代表电灯亮),并置反目 标表中的布尔数。其次,目标表发生更改时数据库触发器触发, 执行如下操作:找出目标状态表中状态列与目标列不同的行,此行的数据与设备信息表中相应节点的当前状态和目标状态比较,找出对应的指令,将生成
的指令存入发送指令表;将指令发送给控制节点,控制成功将返回新的状态存入状态表,控制失败程序将经过设定延时后再次发送指令,发送设定次数后仍失败将控制失败信息返回给上层界面;
最后,进行事件的逻辑判断,在逻辑表中查询当前的事件是否属于逻辑事件,如果是逻辑事件且逻辑未结束则跳回第二步继续循环,如果不是逻辑事件或者逻辑事件结束则跳出循环。
本课题使用Apache服务器,通过Thinkphp框架搭建Web控制页面。通过网页用户可以:实时监视设备状态、手动控制设备、以及设置逻辑控制实现设备联动。网页主要分为三个页面,分别为:监控页面、设备添加页面和逻辑设置页面。其中逻辑设置页面可通过拖拽事件元素实现设置功能。这样的设计保证了软件的易用性,降低了对设备的依赖性。
本文简要分析了现阶段智能家居控制系统的缺陷,在此基础上提出了一种面向智能家居控制的数据库中间件。该中间件改变了上层应用程序的控制方式,把直接向节点发送指令转变成对数据库内数据进行操作再由中间件合成指令控制节点的方式。解决了不同协议、不同厂家、不同数据格式的无线设备难以互通互联、统一控制的问题。对于网页访问数据库实现智能家居控制有很大的应用优势,基于此中间件的架构使得网页控制界面易于操作,只需在中间件的数据库基础上搭建服务器,在动态网页页面上拖拽设备元素和事件元素设置控制逻辑,极大地简化了操作过程。综上所述本课题研究的中间件在智能家居的开发上具有一定的应用价值。
[1]俞文俊,凌志浩.一种物联网智能家居系统的研究[J].自动化仪表,2011,08:56-59.
[2]沈玉龙,王琨.智能家居控制系统设计[J].电子科技,2004,05:47-50+54.
[3]刘俊杰.新型DCS组态软件框架和数据库的研究与开发[D].山东大学,2008.
[4]周欢,莫军,李代生,梁文铮.基于LabSQL的LabVIEW数据库访问功能研究[A].中国仪器仪表学会.2009中国仪器仪表与测控技术大会论文集[C].中国仪器仪表学会:,2009:4.
[5]李荣国,王见.MySQL数据库在自动测试系统中的应用[J].计算机应用,2011,S2:169-171+175.
[6]赵建华,师振伟.嵌入式Web服务器在智能家居控制系统的实现[J].计算机技术与发展,2013, 03:164-167.
[7]毛明毅,蒋元恒,陈志成.智能家居远程Web管理控制平台的设计与实现[J].微电子学与计算机, 2013,05:121- 124.
[8]侯维岩,许静,费敏锐,王海宽.工业现场总线与无线通信的集成模式.自动化仪表.2003, 24(12):10-13.
[9]王成光.流程工业大型实时数据库理论、技术与应用[D].浙江大学,2003.