标题 | 基于Web Service的智能家居系统设计与实现 |
范文 | 常赟杰+张位勇+李桂香
摘 要: 针对由PC机控制的智能家居系统造价高、不能移动、不方便操作的缺点,提出了一种采用Web Service技术的智能家居系统实现方案。服务器端通过移植gSOAP组建嵌入式Web Service服务器和ONVIF视频服务器,客户端采用KSOAP2开发包进行设计。用户可以使用Android手机或者平板电脑对家居设备进行远程控制和视频监控。系统操作简单、成本低、使用方便,具有较高的实用性和推广价值。 关键词: Android; Web Service; 智能家居; 嵌入式网关; 视频监控 中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2017)03-44-04 Abstract: For the smart home system controlled by PC has disadvantages in price, mobility and operation, a new design and implantation scheme of smart home system based Web Service is proposed. The embedded Web Service server and ONVIF video monitoring server are built by transplanting gSOAP, the client end is realized by using KSOAP2 development kit. Users can control and monitor the remote smart home devices via Android phone and tablet. The system has advantage of simple, low cost, portable and practical, and it is worth to be promoted. Key words: Android; Web Service; smart home; embedded gateway; video monitor 0 引言 智能家居(smart home)系统通过将家居设备进行组网,将计算机技术和自动化技术进行整合,实现居家环境监测、视频监控、家电控制,以及危险预警系统等诸多服务,提高了人们的生活水平,现在正在慢慢走进人们的生活[1]。目前,大多数的智能家居系统采用PC机进行控制,这种控制系统造价高,不能移动,不方便操作。采用手机或者平板电脑远程连接家庭网络,可以方便快捷的实施监控[2-5]。但是,目前采用这种手机或平板控制的智能家居系统比较少,而且大部分的功能比较单一,界面设计简单,无法提供良好的用户体验。 本文提出了一种采用Web Service技术的智能家居系统实现方案。用户可以通过运行Android系统的智能手机或者平板,连接家庭网关,对家用电器进行远程控制,对居家环境进行远程视频监控。 1 系统硬件平台 智能家居网络总体框架如图1所示。家庭中各个网传感节点和Zigbee协调器组成星型通信网络。各个传感器节点和家居设备以Zigbee方式和协调器通信,协调器通过串口连接网关。本系统的网关采用基于ARM1176JZF-S内核,主频533MHz的高性能嵌入式芯片S3C6410。网关上组建嵌入式Web服务器和视频服务器,提供Web Service服务。运行在手机或平板上的智能家居控制系统客户端通过调用Web Service服务实现以下功能。 ⑴ 通过获取温度传感器、湿度传感器、光照度传感器、红外传感器的数据,实现对居室环境数据进行持续的采集。 ⑵ 对智能家电、智能窗帘和智能灯具等设备的控制。 ⑶ 调用摄像机实现远程视频监控。 2 软件框架 2.1 程序架构 本系统采用目前流行的Web Service技术,实现安卓客户端和网关服务器之间的通信。Web Service是一种跨平台的分布式Web应用程序。Web Service服务由服务器提供,客户端可以在网络上的任何一个位置调用此服务。Web Service三个重要的组成部分是SOAP、WSDL(Web Services Description Language)和UDDI(Universal Description Discovery and Integration) [6]。SOAP是一个基于XML的轻量型分布式计算协议,定义了调用Web Service服务的标准方法;WSDL用于描述访问具体的接口的方式;UDDI用来管理、分发和查询Web Service。 软件框架如图2所示。客户端和服务器之间通过HTTP协议进行SOAP消息的传递。网关服务器运行Linux操作系统,提供基于SOCKET的HTTP协议通信协议。然后再移植开源Web Service工具gSOAP来提供Web Service服务所需要的XML解析器和SOAP处理器。 2.2 服務器端程序设计 服务器端程序设计步骤:首先生成C/C++头文件;然后使用SOAP编译器编译后生成RPC服务框架和序列化的数据类型代码;最后将这些代码链接到服务应用程序中,就成为可供客户端调用的Web Service。gSOAP编译器同时会生成一个WSDL文档用于描述这些服务。 在本设计中,客户端的请求分为POST和GET两种方法。GET方法用来处理静态网页,进而为描述接口的WSDL文件提供支持。POST方法用来实现SOAP消息的传输,将接收到的HTTP数据包保存在内存缓冲区,然后再进行进一步的处理。网关服务器对SOAP消息的处理过程如图3所示。服务器在接受到客户端的HTTP请求以后,调用相关模块解析SOAP消息,然后根据解析结果提供相应的服务。最后将执行结果封装成SOAP响应信息返回给客户端。 2.3 视频服务器程序设计 采用建立在Web Service的SOAP通信框架基础之上的ONVIF通信标准,进行视频服务器设计。ONVIF通过定义网络视频设备之间信息交换的通用标准,以实现不同厂家的视频产品之间的互通性。ONVIF也是使用WSDL定义服务,使用XML语言描述数据,采用SOAP通信协议传输信息。ONVIF标准包括设备发现和设备管理两大功能模块,前者通过基于IP组播技术实现,后者通过传递SOAP消息进行通信。SOAP通信框架按照以下步骤生成[7]。 ⑴ 登录ONVIF网下载WSDL文件,该文件描述了与媒体服务相关的Web服务消息格式、操作、数据类型、协议绑定和服务地址。 ⑵ 从网上下载gSOAP 2.8.21工具,解压后得到的wsdl2h和soapcpp2文件。 ⑶ 使用wsdl2h工具将WSDL文件转换成C/C++风格的头文件。 ⑷ 使用soapcpp2工具将上一步产生的头文件生成服务器端提供SOAP服务的框架(Skeleton)代码。 3 安卓客户端程序设计 3.1 客户端与服务器之间的通信 在Android客户端平台上,调用服务器端的Web Service必须使用开发包KSOAP2,以实现SOAP协议的处理。KSOAP2是一个用于资源受限制的Java环境如Applets或J2ME应用程序的第三方类库。 安卓客户端通过调用服务器端的Web Service服务,通过对远程数据库的查询、控制和管理操作,从而实现对家居设备进行控制和监视。本设计采用的KSOAP2软件工具可以封装用户请求,以SOAP格式来调用Web Service,然后将返回的SOAP格式的数据信息解析为SOAP Objecet对象。KSOAP2调用Web Service步骤如下。 ⑴ 下载Ksoap2-Android工具,并导入工程。 ⑵ 指定Web Service的命名空间和调用Web Service方法的名称。 ⑶ 借助Soap Object对象传递参数。 ⑷ 生成调用Web Service方法的SOAP请求信息,并指定SOAP的版本。 ⑸ 调用Web Service,根据返回的数据,解析出结果。 3.2 客户端设计 客户端连接服务器的第一步是登录,进行身份验证,其流程如图4所示。首先输入服务器的用户名和密码。如果服务器验证通过,就可以建立客户端与服务器之间的交互通道,在主界面中接收服务器响应数据帧,同时更新所有家居设备的状态信息。用户登录成功后,可以执行如下相应的动作。 ⑴ 如果要控制设备或者查询设备状态信息,则通过Get方法发送控制帧或者查询帧。 ⑵ 如果要执行视频监控则通过POST方法发送视频控制命令。 ⑶ 如果用户需要更改密码,就要输入旧、新两种密码,如果密码匹配,则服务器返回响应码“201”,表示密码更改成功;否则可以向服务器发送控制或者查询请求,服务器收到后,先返回一个响应,然后执行相应的动作。 3.3 视频监控客户端设计 3.3.1 设备发现和管理 设备发现的主要目的就是获取ONVIF设备的服务功能和服务地址,为后面的视频数据接收和播放提供基础。ONVIF协议的设备发现模块可以让客户端发现服务器的RPC的入口,本设计采用WS-Discovery发现协议实现该功能。WS-Discovery [8]协议采用SOAP和UDP组播协议,客户端使用239.255.255.250:3702地址发送组播消息自动搜索ONVIF设备。服务器端的ONVIF设备收到组播消息后进行响应,客户端根据收到响应数据包来获取相应的设备信息,统计搜索到的设备个数。 3.3.2 流媒体数据接收及分片打包 网关服务器摄像头自带视频采集、视频压缩编码功能,输H.264格式编码的标准数据流。客户端通过RTSP会话接收服务器端的流媒体数据,一次完整的会话过程如下。 ⑴ 连接服务器,同时发送一个RTSP DESCRIBE命令。服务器返回一个描述媒体类型、流数量等信息SDP。 ⑵ 分析收到的SDP,为会话中的流发送一个SETUP命令建立RTSP。客户端通过此命令将自己的端口号告诉服务器。 ⑶ 流媒体连接过程建立成功以后,客户端发送PLAY命令和TERADOWN来开始和结束视频的播放,还可以发送快进、快进和暂停命令。在播放过程中,服务器使用UDP发送流媒体RTP包给客户端。 本系统需要多个ONVIF IPC设备通信,为了提高数据传输速率和数据处理的效率,课题组采用Select网络模型完成标准的RTSP会话过程。 3.3.3 流媒体解码及显示 为了能显示视频,客户端需要首先移植FFMPGE。使用FFMPGE对接收到的RTSP流媒体文件进行解码,再将解码后的信息转换成为YUNV420P格式,然后再转换为RGB24格式。最后再转换成可在安卓设备上播放的ARGB_8888格式。转换完毕之后,就可以将每一帧显示在屏幕上。 4 结论 本文结合嵌入式系统和安卓平台优势, 采用目前流行的Web Service技术,设计和实现了智能家居系统的服务器端和安卓客户端程序。服务器端通过移植gSOAP和ONVIF协议来组建嵌入式Web服务器,提供Web Service服务。安卓客户端程序给予KSOAP2开发包进行设计,实现了服务器端的Web Service服务的调用。系统主要采用JAVA语言进行开发,具有结构简单,开发难度低的优点。系统操作简单、成本低、使用方便,可以实现家居设备的远程控制和居家环境的远程视频监视,给人们生活带来极大的便利,具有较高的使用价值和推广价值。 参考文献(References): [1] Lin H T. Implementing smart homes with open sourcesolutions[J]. International Journal of Smart Home,2013.7. [2] 周恩,李文军,郑永军等.Android平台的智能家居控制系统设计[J].中国计量学院学报,2013.24(3):261-265 [3] 賈阳静,邹念育,雷冬鸣等.基于Android和WIFI通信的智能家居系统设计[J].大连工业大学学报,2016.1:67-71 [4] 黄成云,卢选民,李戈.基于Android的智能家居控制软件设计与实现[J].计算机与现代化,2014.11:102-105 [5] Kumar S. Ubiquitous Smart Home System Using AndroidApplication[J]. Computer Science,2014.6(1). [6] 龚瑞琴,毕利.基于Web Service的Android技术应用研究[J].电子技术应用,2014.40(1):134-136 [7] 肖路欢,谢灿,何策.gSOAP在基于ONVIF协议的网络视频监控系统中的应用[J].数字技术与应用,2013.6:128-129 [8] Robert Van Engelen.gSOAP 2.8.1 User Guide[S],2011. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。