周祥,徐永安,戴萍
(扬州大学信息工程学院,扬州 225127)
一种基于Windows服务的智能家居定时控制系统
周祥,徐永安,戴萍
(扬州大学信息工程学院,扬州 225127)
对于完整的智能家居系统来说,无需人们亲自动手,家居设备自动按要求工作是必不可少的功能。将典型智能家居系统结合云端服务器的Windows服务技术,实现一种根据用户需要,自动定时执行控制任务的系统。介绍智能家居和Windows服务技术的概念,进而介绍系统的组成、定时控制的流程、数据库表的设计以及定时任务程序的设计,给出部分关键代码,给出Windows服务的安装部署方法,手机终端软件的设计以及成果展示。
智能家居;Windows服务;定时控制;云端服务
随着生活和科技水平的提高,大家对家居智能化的需求越来越高,市面上有很多智能控制网关开发套件,可以实现手机或PC端在内外网模式下通过无线网络与家中智能家居控制网关相通信,进而实现远程控制家居开关的作用,但是仅仅远程控制家中设备的开关是远远无法满足人们的需求的,人们需要一种可以云端存储用户需求、自动执行控制任务的系统。本文以一种目前市面上典型智能家居系统组网方式为基础,开发了一种基于Windows服务的智能家居云端定时控制系统,让用户可以通过上传任务清单到云端服务器,云端服务器自动按照要求实现控制功能。
1.1 智能家居
智能家居是在目前互联网的影响下物联化的体现,通过物联网技术将家中各种设备连接到一起,提供家电控制、室内外遥控、灯光控制、防盗报警灯一系列人与家居信息化交流的功能。智能家居与普通家居相比,就是把原来被动的静止的家居结构转变成能动的智慧的智能家居结构,通过把综合布线技术、安全防范技术、网络通信技术、自动化技术、视频音频技术运用到住宅平台,集成家居生活相关设施,构造安全、高效、舒适、便利、节能、环保、和谐的居住环境。
本文利用带Wi-Fi调制解调功能的通信模块设计了一种可以实现远程控制的智能家居组网方式。
1.2 Windows服务
服务是一种常驻内存的、特殊的应用程序,是一种不要求用户交互、后台长期运行的程序。Windows服务程序是在Windows操作系统平台下后台自动执行的服务程序,在Windows系统启动或重启之后用户登录之前就开始执行,Windows系统关闭才最后停止。像SQL Server、IIS和杀毒软件等都是采用Windows服务这种方式独立于某一用户,服务于所有进程,持续地监控着计算机上发生的每一件事件或执行计算机上每一个任务。
本文利用Windows服务长时间后台自动运行的特性,创建一个运行在云端服务器上的Windows服务程序,实现定时任务的自动执行功能。
2.1 系统的组成结构
如图1所示为本系统的组成结构,该系统可以分为客户端、智能家居控制网关、云端服务器和智能家居四个模块。
图1 智能家居系统组成图
(1)智能家居控制网关模块是本系统的核心模块,主要由低功耗的Wi-Fi模块构成,用来接收客户端App发来的无线控制命令,将该命令转发向被控端智能家居设备。该控制网关内的Wi-Fi芯片与户内连接Internet的无线路由相连,从而实现网关与Internet的互联互通,让用户在世界任何有互联网的地方都可以实现对该网关的控制。该模块中内置有Wi-Fi转红外、Wi-Fi转ZigBee及Wi-Fi转电力线载波等通信接口,实现Wi-Fi信号与目前市面上存在的智能家居设备通信接口的兼容性与相互转化性。
(2)终端设备是具有连接Wi-Fi功能的智能终端,包括智能手机、笔记本电脑、iPad等,是本系统中的控制设备,通过该设备远程或内网发送控制信号,实现智能家居的控制。
(3)智能家居是具有接收被控命令、执行相应操作功能的被控设备,包括智能开关、智能插座、智能空调,智能水表、气表、电表等,该模块中内置有自己的通信接口,方便智能家居控制网关与其通信,发送和接收交互时的消息。用户通过终端设备远程发送某一智能家居设备的控制信号,控制其相应状态的改变。
(4)云端服务器是在公网中运行的云服务器,是本系统实现定时控制任务的核心,客户端通过Web Service与其交互,添加新的定时任务设置或获取定时控制任务执行状况。通过该服务器上长时间自动后台运行的Windows服务实时监控着数据库中用户设置的定时任务信息,自动按照任务信息执行所设定的任务,从而达到智能家居自动定时控制。
2.2 数据库的设计
该表是实现系统自动定时执行用户设定的相关任务的核心,用户使用客户端通过Web Service等技术将其所需的定时任务信息上送到云端,由云端Web Service进行处理解析并保存到云端数据库的该表中。
表1 定时任务信息表
云端定时任务Windows服务通过不断地轮询该表,获得当前时段所需执行的控制任务,并且通过表中字段isRuned中的值判断是否执行完成。为了防止该表的无限扩张,本表的管理还加入了一种“覆盖或新增”的方法,每次有新数据需要添加时,首先选择isRuned字段为True的行进行更新覆盖,当无这行记录时才进行添加数据操作,这样让存在于该表中的无用数据都会最终被覆盖,减少数据表的冗余。
2.3 智能家居定时控制流程
如图2所示为本系统的定时控制执行流程图,通过运行云端服务器上的Windows服务初始化一个定时为60s的定时器组件,开启两个独立线程分别用于数据接收和数据处理。定时器回调方法让程序每60s执行循环任务,获取数据库表中当前时段需要执行的控制任务列表并依次发送相应控制指令,循环任务执行的周期设定为5s,用于等待接收和处理线程根据设备端的回复消息更新数据库表。接收线程在服务开始运行时便监听着本云端服务器指定的UDP消息接收端口,等待接收设备端传回的数据并将其放入消息队列。数据处理线程通过轮询该消息队列解析接收到的数据并给数据库表中字段“isRuned”赋值,当接收和处理周期时间到后,定时器回调函数继续从数据库获取未完成的任务列表并执行控制命令的下发,直到数据库表中当前时段未执行成功的定时任务列表为空时结束本次定时器事件,保证所有设备都可以被控制完成。
2.4 定时任务服务程序的实现
.NET Framework对Windows服务提供了强大的支持,通过VS 2010可以很容易地完成Windows服务程序的创建和实现过程。
图2 智能家居定时控制执行流程图
创建的服务框架主要用到命名空间为System.ServiceProcess。包括如下五个主要类:
①ServiceBase所有Windows服务的基类;
②ServiceController该类的一个实例代表一个具体的Windows服务;
③ServiceControllerPermission用于控制Service-Controller的使用权限;
④ServiceInstaller用于执行对Windows服务的安装;
⑤ServiceProcessInstaller用于执行对Windows服务的安装,与前面几个类不同的是,该类可以代表一个可以执行的Windows服务的进程。
另外由于需要做定时执行,本程序还添加了System.Threading.Timer类,该类用于提供指定相同的时间间隔执行定时任务回调方法。
启动服务主要由ServiceBase类中的OnStart( )方法提供,在OnStart( )方法中启动定时器组件,设定定时器定时执行时间,同时采用多线程编程方式,开启接收数据和处理数据两个独立的线程。具体的执行代码如下:
定时执行的Timer类主要通过设定间隔时间,使用TimerCallback委托指定回调方法,采用定时执行该方法的形式完成定时任务的执行,为了使本设计中定时器组件尽可能准确,此处采用一种自动校正方案,即当定时回调方法执行时通过获取服务器系统时间调整定时间隔,保证每次定时回调都在准确的分钟内,定时回调方法的代码如下:
2.5 Windows服务的安装与部署
Windows服务与普通应用程序不同。不能通过简单地点击一个EXE文件就来启动服务。Windows服务的安装需要通过.NET Framework提供的InstallUtil.exe来完成,或者通过创建一个Microsoft Installer(MSI)这样的文件部署项目完成。
本系统采用InstallUtil的方式完成服务的安装工作,具体步骤如下:
①打开运行,输入CMD进入命令行窗口;
②改变路径到项目生成文件所在文件夹位置;
③输入“InstallUtil.exe AutoOrderInface.exe”(Auto-OrderInface为本系统所用Windows服务名)执行注册服务命令,使它建立一个合适的注册项;
④完成注册操作后就可以右击桌面上“我的电脑”,选择“管理”,在“服务和应用程序”里面的“服务”部分里找到本系统所用的Windows服务程序已经被包含在服务列表当中了;
⑤从服务列表中可以看到该服务的运行状态,启动类型等,右击该服务名称选择启动就可以启动本系统的定时任务服务了。
生成的服务在云端服务器后台运行的情况如图3所示,AutoOrderInface服务即为云端服务器后台运行的本系统定时任务服务程序。
2.6 手机终端设置程序的设计
手机终端是智能家居添加云端定时任务的交互设备。用户通过手机终端中的定时任务设置程序可以完成用户对智能家居设备单次或周期性执行某项控制的设定。
本文的终端定时任务设置程序界面设计如图4所示,从设置界面可以设置单次、每周、每天或者工作日和周末4种不同周期的定时控制任务以及开、关、置反3种不同控制方式。用户选择操作完毕后点击确定手机终端程序即通过无线网络调用云端Web Service接口将此任务记录上传至云端数据库中的定时任务信息表中。
图3 Web Service发布后的文件结构
图4 定时任务列表界面
2.7 成果展示
用户通过前文所述终端设置程序,将设定好的定时任务上传到云端服务器,云端服务器中的Windows服务程序便可以在指定时刻按照用户要求执行对智能家居设备的操作。如图5所示为试验设备初始状态,此时在终端程序上设置下一分钟灯4单次关的操作并单击确定,终端弹出设置成功提示。图6为一分钟时间到后试验设备状态,由图看出该定时控制任务系统很好地完成的用户设定的定时任务,达到系统预期目的。
图5 试验设备初始状态
图6 定时时间到后试验设备状态
家居的远程控制是人们长久以来迫切想要实现的智能家居功能,随着现在通信技术的发展,实现这样的功能已经不是难题,那么如何更好地提高家居智能化的“智能”特点便成为了大家研究的课题。本文通过在云端服务器中运行后台Windows服务程序的方案,实现了智能家居的云端定时控制功能,同时该设计方法还可以进一步拓展。利用其持久后台运行的特点拓展成智能家居设备与云端服务器自动交互处理程序,通过判断智能家居设备发来的具体信号做出相应控制命令下发,使智能家居真正做到代替人工的“智能”。
[1] 胡俊敏.利用Windows服务实现数据库数据监控[J].电脑知识与技术,2009,36:10457~10458
[2] 谢伟.基于.NET的Windows服务开发[J].科学咨询(科技·管理),2013,12:78~79
[3] 周鹏,高昂,刘超.Windows服务程序的编码与分析[J].微计算机应用,2011,10:62~65
[4] Christian,Bill,Jay.C#高级编程[M].李铭,黄静译.7版.北京:清华大学出版社,2012
[5] 黄宇.面向智能家居的安卓控制系统设计与实现[D].华中科技大学,2013
[6] 熊光彩.家居物联实时终端设计与实现[J].测控技术,2012,31(3)
[7] 高章飞.远程设备监控系统设计与实现[D].浙江大学,2006
[8] Michael.The Benefits of a Service-Oriented Architecture[J].EAI Journal,2002,4:20~22
[9] 俞文俊,凌志浩.一种物联网智能家居系统的研究[J].自动化仪表,2011,08:56~59
[10] Wang Jinbiao.The Field Control Bus Systems Illustration[J].Metallurgy Automation,2000(6):1~6
[11] Jay Liebowitz,Janet Liebowitz,Jason,Kenny.Intelligent Systems at Home in 2000[J].AI&Society,1994,8(4):359~363
[12] 吕莉,罗杰.智能家居及其发展趋势[J].计算机与现代化,2007,11:18-20+23
[13] 张永刚,王斌.物联网技术在智能家居中的应用[J].智能建筑与城市信息,2012,02:27~30
[14] 童晓渝,房秉毅,张云勇.物联网智能家居发展分析[J].移动通信,2010,09:16~20
[15] 张学谦.基于物联网的智能家居的研究与实现[D].东北:吉林大学,2013:2~4
[16] 黄贻培,陈帅华,周芳,何小霞.基于Wi-Fi通讯的智能家居系统[J].电子世界,2013,14:82
[17] 胡泽,廖闻剑,彭艳兵.Web Service技术研究及应用[J].硅谷,2009(005)
Smart Home Timing Control System Based on Windows Services
ZHOU Xiang,XU Yong-an,DAI Ping
(College of Information Engineering,Yangzhou University,Yangzhou 225127)
For a complete system of smart home,the function which can make smart home device automatically work according to the essential requirements.Uses Windows Services technology and designs an automatic timing control system which is based on user's needs.Introduces the concept of smart home system and Windows Services technology,and then introduces the design of the system components,timing control process,database and the design of timing task program,and gives some key code.Gives the Windows service’s installation,supporting mobile terminal software design and system results.
Smart Home;Windows Services;Timing Control;Cloud Servers
1007-1423(2015)04-0075-06
10.3969/j.issn.1007-1423.2015.04.020
周祥(1990-),男,江苏南京人,硕士,研究方向为物联网、图形图像
徐永安(1965-),男,江苏兴化人,博士后,副教授,研究方向为计算机图形学
2014-12-18
2015-01-05
戴萍(1988-),女,江苏泗洪人,硕士,研究方向为数字签名