基于Watir的物联网数据处理系统设计

2015-06-22 14:40孔英会高育栋
电视技术 2015年20期
关键词:网页页面客户端

孔英会,高育栋

(华北电力大学 电子与通信工程系,河北 保定 071000)

基于Watir的物联网数据处理系统设计

孔英会,高育栋

(华北电力大学 电子与通信工程系,河北 保定 071000)

设计了一种基于Watir的物联网Web事件处理系统框架。首先搭建ZigBee无线传感器网络,把终端节点的属性描述到网页并进行服务器部署,其中用微数据来描述每一个实体的静态属性,用JS文件描述动态属性。然后采用Web自动化测试框架Watir,通过Css Selector定位技术实现对动态页面数据的实时采集,将实时采集的数据通过预处理后添加事件处理,提取关键和有效的事件数据并保存。最后基于不同的客户端对事件条件下不同平台和不同结构的物联网网页进行测试,结果表明基于Watir的物联网Web事件处理系统能准确和高效地获取事件数据。

物联网;动态网页;事件; ZigBee网络

物联网(Internet of Things,IOT)是当前各国政府都寄予很大希望的未来增长领域。在物联网的系统中,对传感器的数据管理和查询是十分重要的。在现阶段的物联网传感器的数据获取和处理上,基于Web的物联网数据管理获得了广泛应用。基于Web的物联网系统可以通过嵌入式设备将各种智能物体相关的信息全部集成到Web实现事物的互联,对智能物体的访问,可以通过现有的已经被很好地理解和接受的标准来实现,例如URI、HTTP、REST等。

事件是指在一个流程中,当达到某种状况或条件而触发某种行为的消息或请求,通常可理解为现实世界中某种状态的改变。物联网事件处理的主要工作是根据已知给定的规则和模式,从基于分散信息系统的大量信息中检测并提取被定义好的事件。对物联网海量数据,找出用户感兴趣的数据、过滤掉其他的冗余数据尤为关键,用户不关心传感器产生的所有数据,只关心对他们有用的数据,比如在“所有温度传感器产生的温度数值中,用户只对最高的温度值产生兴趣,看有没有超过设定的阈值”。文献[1]主要是针对网页信息定位的数据抽取系统的研究,利用树结点的Xpath位置路径定位到待抽取信息的位置,但是没有实现按照设定的目标来实现信息抽取的任务。文献[2]介绍了事件技术在Web中的应用,而且应用背景主要是静态网页,对实时变化的物联网Web网页并不适用。文献[3]中的基于JSSh的方案一次HTTP请求仅获取一次DOM信息,请求和回应耗时长,无法满足实时获取页面动态变化的数据。文献[4]提出一种描述物联网实体静态属性的方法并将描述的网页保存到Apache服务器上,但是通过链接将动态内容保存到本地的文档,这就限制了对动态内容的访问。

针对以上问题,本文面向物联网Web网页,设计了基于Watir的物联网Web事件处理系统框架,首先创建物联网页面,将实体的静态属性保存到Apache服务器,动态属性保存到Jetty服务器上,采用自动化测试框架Watir方法加载到物联网实时动态页面,结合Web页面的结构和内容对HTML文档进行解析并添加事件,将某种条件下的事件数据保存以满足应用需要。最后针对不同平台多网页实时抓取,结果表明该系统实时性高,响应时间短,可扩展性好,能满足物联网网页实时数据的需求。

1 总体设计

本文系统设计工作包括基于Web的物联网页面创建、服务器部署和Watir加载与事件获取3个方面,具体过程为:将物联网Web页面放到服务器上,对于任何一个能连网的客户端,通过基于Watir的自动化测试框架,获取事件条件下的物联网页面实时信息并存储。系统的总体框图如图1所示。

图1 系统总体框架

基于Web的物联网页面创建又包括感知层、网络层和应用层3个部分。

1.1 感知层和网络层

感知层主要实现对物理世界的智能感知识别、信息采集处理和自动控制,并由通信模块将物理实体连接到网络层和应用层。其中,ZigBee[5]技术是常用的一种连接物理实体的通信技术,它基于IEEE802.15.4无线标准研制开发,用于短距离、低速率无线网络通信。其突出优点是应用简单,工作频段灵活,功耗低,成本低,可靠性高,具有自组网和自恢复能力等。本文采用TI公司的第二代芯片CC2530,设计了基于ZigBee的无线温度监测系统作为感知层实现数据的读取,温度传感器采用DS18B20[6]。用两个温度传感器DS18B20与两个CC2530模块相接作为终端节点,另外一个CC2530模块充当协调器,在MSSTATE_LRWPAN协议栈的基础上进行应用开发,组建一个ZigBee网络,实现无线组网,终端节点采集温度信息,协调器接收到信息后将温度信息通过串口发送给PC计算机,然后通过网页显示。

1.2 应用层

应用网络层即终端处理层,它是输入输出控制终端,包括计算机、手机等服务器终端,实现对传输层发送的信息的分析、存储、挖掘处理等应用。本文将监测的温度数据实时显示到Web网页,并将动态网页部署到Jetty服务器上,发布到局域网。

2 物联网页面的描述

本文对实体的描述分为两类,对静态属性的描述和动态属性的描述。静态属性包括传感器的自然属性、空间属性、时间属性,动态属性包括传感器的动态数据。将两种属性描述到Web网页并部署到服务器上,静态数据发布到Apache服务器上,动态数据发布到Jetty服务器上。通过静态网页上的链接地址,链接到动态页面。本文用于测试的两个服务器部署在一台计算机上,所以两个网址的端口号不同,Jetty服务器的设定端口号为80,Apache服务器的端口号为8080,访问地址均为本地IP。

2.1 静态页面的描述

本文静态网页采用微数据描述。微数据是标记信息内容的一种方式。微数据表现为可被嵌套的名值对(Name-Value Pairs)。这些名值对的组合被称为条目,每个名值对被称为一个成员属性[7]。在本文中,通过微数据描述传感器的静态页面,Itemid描述条目的全局标识符,Itemprop描述条目的对象属性定义,Itemref拥有一个Itemscope属性,Itemscope属性主要描述一个布尔型的属性,可以创建一组名为条目的名值对。静态属性包括传感器的名称、类型、时间特性、地理特性。在对协调器地理特性的描述中,本文使用浏览器自带的地理位置获取方式,由于协调器与计算机串口相连,使用HTML5的GEolocation API调用浏览器来确定协调器的位置信息,从而能确定该ZigBee网络的地理位置。本文将微数据描述的网页利用Google的Live Microdata和Testing Tool来确定微数据描述的正确性,将编写的网页源代码放入编辑区间,查看两者显示的数据结构。Live Microdata通过将数据结构变为Json格式,将每个实体的全部静态属性在Items项中显示出来,微数据将包含在区间的名值对属性全部显示到一个Items中。Testing Tool将每个实体静态属性按照名值对显示出来,根据以上的两种方式测试,证明微数据网页结构的语义性和方便性。

本文使用Apache2.2版本将静态网页部署到服务器上,通过Serverroot命令设置保存服务器文件的目录,配置文件所在位置为D:Apache Software FoundationApache2.2conf,主要的配置修改如下:1)修改Listen为211.82.237.78:8080,其中211.82.237.78为本地IP地址,服务端口号为8080;2)修改默认的自动运行文件名称,修改dir_module模块,将微数据编写的静态网页index.html保存到dir_module模块中。通过对Apache的部署,实现对网页的访问。

2.2 动态页面的描述

本文使用JFinal作为开发动态页面的框架,JFinal框架的架构由空间建构和逻辑架构组成。其中,空间架构采用微内核全方位扩展架构,它由Handler、Interceptor、Controller、Render和Plugin五大部分组成。每个部分都基于接口实现,支持完整的自定义,扩展性强,使用灵活,设计精巧且使用简单[8]。本文使用JFinal框架调用和启动Jetty服务器。Jetty是一个完全由Java实现的、开源的HTTP服务器和 Servlet容器,其运行速度快。Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server,并且Jetty可以非常容易地嵌入到Java应用程序当中。

对动态页面的处理使用JSP实现,脚本语言和页面布局采用的是Extjs进行操作,Extjs是一种主要用于创建前端用户界面。在对脚本代码的编写中,具体内容如下:首先设置页面的布局,页面的布局包括Panel,Button和Label等。通过在Items组件中添加Button和Label来显示传感器数据。其中,Items包含了所有的子组件,若需要再添加传感器,直接可在Items里边添加,这个可以在后续的扩展中方便添加其他的传感器。在Button按钮的设置中,主要是添加Button的点击事件,用来获取数值。在Handler的处理上,添加自定义的Task事件,利用SetText方法将数据显示到Label上。在对串口数据的获取过程中,通过定义SerialPort类来确定串口设置,包括数据位、校验位和停止位等,通过对每个字节的数据处理,显示出原来的数值。

在数值的计算和处理中,将处理后的数据用RenderJson对数据进行格式转换,Render系列方法将渲染不同类型的视图并返回给客户端,Json是一种将数据从服务器传递到客户端的更为有效的办法,转换成Json格式的,传递给各自的Label标签,变为易于JS文件读出的数据。在JSP文件中,调用JS文件,将Json变量的数据显示出来。其中,在Task的事件中,时间的处理用了Interval方法,设定Interval:3000,每3 s刷新一次数据。显示部分结果如图2所示。

图2 部分显示效果(截图)

3 基于Watir的物联网Web事件处理

Watir是一个用于网页自动化测试的开源工具,主要是通过使用Watir::IE的一个实例化对象@IE来获得页面上的各种元素,Watir::IE封装的是一个当前页面的DOM Tree,而不是页面源代码,比如页面如果用JS动态产生一个元素,在Watir中仍然可以访问。Watir是用Ruby语言实现的,Ruby语言自然简洁,却依然拥有强大的数据分析和处理能力,主要应用于网络开发语言、数据处理和数据挖掘等方面。Ruby的插件Nokogiri是一种HTML、XML、SAX阅读解析器,Nokogiri的速度比应用广泛的Hpricot要快许多。Ruby的另一种插件Rufus-scheduler 是一种可以定时的插件,可以让程序在指定的时间内运行。

本文用Watir来加载传感器页面并获取数值,根据需要可实现按一定时间间隔连续获取,如每10 s完成一次获取。该方法实时性高,连续性好,能满足各个领域对物联网实时数据的需求。基于Watir的物联网Web事件处理的流程图如图3所示。

图3 基于Watir的物联网Web事件处理流程

3.1 加载、获取并解析HTML文档

本文首先通过“ie = Watir::Browser.new”创建一个浏览器对象实例,通过“ie.goto (‘http://211.82.237.78/’)”,采用跳转方式打开预期的页面,同时用Span标签下的Button按钮利用Click方法来模拟点击按钮,让其显示动态的数据,在完成Watir加载定位之后,通过“ie.html”方法获取框架下的HTML文档。网页的部分HTML文档如图4所示。

图4 部分HTML文档(截图)

Nokogiri通过“Nokogiri::HTML.parse”方法获得HTML文档,并进行解析。Nokogiri提供了XPath及CSS Selector方式来定位文档里的节点,但是CSS locator比XPath locator速度快,并且CSS Selector能非常精准地定位到测试的Elements。CSS Selector可以粗略分成几类基本的类型:ID选择器(#id)、Class选择器(.class)、类型(type)选择器(p)等。这些都是单一的选择器,可以在应用中把它们组合起来,如:div#id,div#p等。本文采用CSS Selector来查找页面上所需内容的节点,用ID选择器(#id)实时定位该时刻的页面文本信息。

3.2 基于Watir的事件处理的方法

本文首先将解析后的数据进行预处理,利用Ruby的Araay类来创建数组,以其中一个网页内容进行实时解析为例,解析内容如表1所示。

表1 实时解析网页

解析时间解析内容处理方法保存方式实时解析标签light逐位解析doccss(‘#light’)text[i]保存到数组shu⁃zi 实时解析标签light1逐位解析doccss(‘#light1’)text[j]保存到数组shu⁃zi1实时解析标签内容doccss(‘#light’)text保存到数组或者数据库实时解析标签数字wendu[0].split(“:”)[1]保存到数组或者数据库

最后给预处理后的数据添加事件,事件方法包括阈值的添加,其中阈值添加包括上下限阈值和区间阈值。本文以其中一个传感器为例说明。

在上下限阈值的处理上,本文使用逐位算法与阈值作比较。通过阈值和实时解析的逐位判断。当在阈值范围内时,将数据实时上传并保存,否则用“超出阈值“来表示,下限的处理过程类似于上限阈值。对区间阈值的处理上,通过Ruby的区间Range方法来添加区间范围,使用区间表示方法表示一个半闭半开的区间。当数值在此范围时实时上传数据,不在此范围时显示“超出阈值”字样。在后续的扩展中,当网页上有多个传感器的数据时,可以给每个传感器都设定相应的阈值,实时比较传感器之间的大小,将最大或者最小值输出。当传感器有其他的事件时,可以实时添加,扩展性得到了很大的提高。

3.3 事件结果数据的存储

本文通过Ruby中的文件操作来存储数据,File类是IO类的子类,通过File.new(“d.txt”,“w”)方法实现创建txt文档,其中“w”意思是表示以写入的方式打开文件,“d”为文档名称。在本文中,文档名称为“filewendu”,通过file.puts方法将获取的数据保存到filewendu.txt中。同样可以创建几个文件实例,经过数据处理后的数据,可以分开保存并呈现给用户。

3.4 事件数据的显示

本文使用JS文件调用已经保存的文本内容,通过网页显示事件检测结果。首先通过JavaScript的ActiveXObject来创建FileSystemObject对象实例,利用OpenTextFile方法通过地址打开文件,通过循环将读取的文件内容显示到TxtArea标签内,将文本内容显示到网页上。

4 实验及结果分析

本文选取几个典型的物联网系统进行实验,选取的3个物联网网页结构都不一样。实验系统包括:1)XX大学现代无线通信实验室(物联网实验平台)的智能家居系统;2)XX大学现代无线通信实验室(物联网实验平台)的用电信息采集系统;3)本文自行搭建的物联网实验系统。其中系统1)显示的内容包括窗户和门口两个实体,每个实体的监测内容包括温度、湿度和光照,6个传感器采用Push的方式将感知到的信息实时推送到网页上,且6个传感器异步更新,各个位置的数据更新周期均为5 s,并实时动态地显示每个实体的数据至网页上,平台链接地址为http://211.82.236.83/sh/。系统2)的用电信息采集系统主要汇总各房间的用电数据至网页,包括8个房间的用电数据采集-电压、电流、功率、电能量采集等,每5 min刷新一次。平台的链接地址为http://211.82.236.83/dianli/system/。系统3)的内容为两个温度传感器上传数据至网页,链接地址为http://211.82.237.78/。其中系统1)和系统2)在同一个平台的服务器上,系统3)在另外一个平台的服务器上。

对3个系统处理的内容分别为:系统1)处理的内容为对6个传感器分别添加上下限阈值和区间阈值。系统2)处理的内容为以其中8个房间的三相电压和总电量为例,给每个房间的电压和总电量添加区间阈值,当超过阈值时,显示警告信息。系统3)处理的内容为前文介绍的事件处理。

实验用两台计算机作为客户端远程访问并抓取和解析数据,研究抓取并解析的准确度。实验中使用Ruby的Time类,在程序的开始和结束加上时间戳,通过两个时间的差值来确定加载并解析的时间和响应时间,其中,响应时间为开始加载到进入网页完成所需的时间。通过Time类的to_f方法,该方法可以精确到毫秒,在数据解析前后加上时间戳,确定解析的时间。周期模式采用连续抓取的方法,时间间隔为10/15/20 s, 本文连续30次抓取页面数据,确定实验结果参数。其中,查准率是根据多次的循环求出的平均数。实验中的相关应用软件如表2所示,实验结果如表3所示。

表2 实验环境和相关配置

用途客户端1客户端2PC硬件配置IntelICorei5-3210M(250GHz),内存4Gbyte,硬盘500GbyteIntel(R)Core(TM)i5-3230M(260GHz),内存4Gbyte,硬盘1TbytePC操作系统Windows7旗舰版32位操作系统Windows7旗舰版64位操作系统PC网络环境某大学校园网某大学校园网应用软件WatirGemNokogiriRubyWatirGemNokogiriRuby

表3 客户端的访问实验结果

实验项客户端1实时获取客户端2实时获取客户端1实时获取客户端2实时获取客户端1实时获取客户端2实时获取加载页面数1个1个2个2个3个3个循环时间/s10/15/2010/15/2010/15/2010/15/2010/15/2010/15/20测试系统系统1)系统1)系统1),3)系统1),3)系统2)系统2)系统2),3)系统2),3)系统3)系统3)系统1),2)系统1),2)系统1),2),3)系统1),2),3)响应时间/s1/1/11/1/12/2/22/2/31/1/11/1/12/2/32/3/21/1/11/1/11/1/12/1/12/2/33/2/2加载并解析的时间/s3/2/33/2/23/3/33/2/32/3/33/2/33/3/43/4/32/2/22/2/24/3/33/4/46/7/65/6/6解析的时间/ms3/2/33/2/24/5/44/5/43/2/23/2/25/5/65/5/62/1/22/1/26/7/66/7/610/10/1210/9/12查准率/%100100100100100100100100100100100100100100CPU占用(前/后)/%3/325/303/405/343/305/283/425/363/295/263/465/403/525/48

由以上实验看出,基于Watir的物联网事件获取方法能按照预先设定的时间连续抓取以保证获取最新的数据。在同一客户端对3个系统的由少到多逐次测试,随着同时加载网页数量增加,加载并解析的时间也会有小幅上升,但是所需总时间很短且响应时间快,查准率一直保持得很稳定,可以100%完成。随着事件数量的增多,解析的时间也会有所上升,但是毫秒级的时间就可以完成实时解析。不同的循环时间对应的结果对比差值很小,说明不同的循环时间均可以实时高效地获取数据,可以满足对物联网Web网页实时性的事件处理。同时可以看出,当Watir处理不同平台的网页时,与处理同一平台相同网页时间对比相差不大,随着网页数量的增加,也可以实时高效地处理网页内容。

在实验中,用了不同配置的计算机完成对3个系统由少到多的逐次测试,不同循环时间CPU的前后占有率几乎差不多。随着加载页面数量的增多,CPU的占有率会有所上升,但是不同配置的计算机上升的幅度会有所不同,配置较高的计算机在CPU的占有率和网页加载并解析的时间稍好于另外一台配置较低的计算机,但是两台计算机都能准确地完成数据的加载和解析。

5 结论

本文利用设计的Web自动化测试框架,通过Nokogiri提供的CSS Selector进行实时定位,结合Ruby的Araay类预处理数据,给预处理的数据添加事件,实现了针对物联网网页在满足某种条件下事件数据的实时获取,不同的用户可以自定义事件来获取数据。通过两个客户端在安装Watir框架后对3种系统进行不同组合的测试,结果表明该方法获取的速度快,响应时间短,准确率高,满足物联网的实时性应用需求。

[1] 侯明燕.基于网页信息定位的数据抽取技术的研究[D].广州:暨南大学,2011.

[2] 仲兆满,李存华,刘宗田,等.面向Web新闻的事件多要素检索方法[J].软件学报,2013,24(10):2366-2378.

[3] 万久士,李翔,林祥.基于JSSh的动态网页获取研究与实现[J].信息安全与通信密,2010(4):93-95.

[4] 魏欣.基于微数据的物联网实体表示与搜索[D].哈尔滨:哈尔滨工业大学,2013.

[5] 高永清,商丹. 基于ZigBee智慧实验室系统的设计[J].电视技术,2015,39(8):17-21.

[6] 赵小峰,张晓东,袁会灵.一种轮胎内部温度无线监测系统的设计[J].中国农机化学报,2015(1):279-281.

[7] MAVRODY S. HTML5和CSS3快速参考[M]. 姚皓,淩杰,译.北京:人民邮电出版社,2013.

[8] 杨宁,刘丹军.基于JFinal框架的Java Web应用开发研究[J].电脑知识与技术,2014,10(7):1440-1443.

System Design for Internet of Things Data Processing Based on Watir

KONG Yinghui, GAO Yudong

(Electronics and Communication Engineering, North China Electric Power University, Hebei Baoding 071000, China)

Web event processing system framework for Internet of Things based on Watir is designed. Firstly, a ZigBee wireless sensor networks is set up, the property of terminal nodes are described with the Web page and deployed them to the server, where the static properties of each entity are described by microdata and the dynamic properties are described based on JS. Then the Web automated testing framework Watir is used to acquire the information of dynamic pages by real-time through CSS Selector locating technology, the real-time data acquired will be add an event handler after pretreatment and then the key data is extracted with event to save. Finally,Mutiple Web pages for different platforms and different structure are tested with event condition based on different client, the results show that Internet of Things Web event processing system based on Watir can accurately and efficiently acquire event data.

Internrt of Things; dynamic pages; event; ZigBee network

TP391.1

B

10.16280/j.videoe.2015.20.013

孔英会(1965— ),博士,教授,主要研究方向为智能信息处理、物联网技术;

2015-06-05

【本文献信息】孔英会,高育栋.基于Watir的物联网数据处理系统设计[J].电视技术,2015,39(20).

高育栋(1989— ),硕士生,主研物联网技术。

责任编辑:许 盈

猜你喜欢
网页页面客户端
刷新生活的页面
如何看待传统媒体新闻客户端的“断舍离”?
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于URL和网页类型的网页信息采集研究
网页制作在英语教学中的应用
Web安全问答(3)