APP下载

基于云服务的智能家居系统的设计与实现

2017-09-29祁冬张建明沈之浩李家钊

中国信息化 2017年9期
关键词:网关客户端智能家居

文|祁冬,张建明,沈之浩,李家钊

基于云服务的智能家居系统的设计与实现

文|祁冬,张建明,沈之浩,李家钊

随着物质水平与精神文明的提高,人们更加追求方便、舒适、节能的家庭生活环境,智能家居也因此受到越来越多的关注。目前智能家居系统主要以本地服务器为中心,实现家电控制和系统数据的存储计算。但这种系统存在成本高、计算资源有限、系统升级复杂等问题。为有效解决上述问题,本文结合可以动态申请与释放计算、存储等资源的云计算服务,设计与实现了基于云服务的智能家居系统。本系统建立了统一的平台为用户提供服务,降低了智能家居的成本,可以动态申请与释放计算资源、存储资源,方便系统的进一步扩展与升级。

一、系统概述

本文所设计的智能家居系统的实现包括两部分:首先,通过云服务器、客户端、网关、数据库的设计实现,完成对家庭硬件设备的控制及对家庭温度、湿度、二氧化碳浓度的检测查询。其次,在对分时电价、天气信息及各类传感器数据、社交行为等数据即时获取的情况下,通过云服务器端的负载调度算法生成负载的调度策略。在提升用户满意度与舒适度的情况下,减少用户所需电费和节省能耗。系统总体框架如图1。

图1 系统框图

本系统主要分为三个部分:云平台、客户端、网关。云平台主要负责用户管理、传感器数据处理、家电设备控制、用户用电规律分析以及用电负载调度等工作。客户端是整个智能家居系统的控制终端,主要负责家电的远程控制,以及向用户展示家庭设备情况。网关是智能家居系统的桥梁,负责家用设备数据向云服务器的提交和云服务器生成的控制命令的传递。

二、系统控制流程

系统控制流程如下:(1)控制指令下达:用户在经过用户认证后,进入其所拥有的房间,生成控制命令,客户端将带有房间ID的控制指令转换为JSON格式后发送给云服务器。(2)控制指令保存:云服务器将用户的控制指令保存进数据库。(3)控制指令轮询:每个用户名下的不同房间的网关通过定时向云服务器轮询该房间的家电设备的控制指令,并将其取出。(4)控制指令执行:取出控制指令后,网关对控制指令进行判断,根据相应控制指令对相应家电设备发送控制码进行控制。具体控制流程如图2。

图2 基于云服务的智能家居系统控制流程

三、系统设计

智能家居网关、客户端、云平台之间网络协议的通信方式,采用较广泛应用的HTTP协议。网关、客户端均使用HTTP请求的方式向云平台请求相关的资源与服务。在云平台上,设计实现HTTP请求的统一接口,供网关和客户端调用,执行查询、保存等相关操作,并使用轻量级的数据表示语法JSON作为云服务器与客户端、网关之间的数据交互格式。编写服务器端、网关、客户端程序,实现用户认证、用户房间管理、设备管理、数据管理、优化调度管理等功能。

(一)用户认证与管理的设计

在基于云服务的智能家居系统下,用户认证是用户通过账号和密码获取基于云服务的智能家居系统RESTful接口调用凭证,成功认证后会获得一个有效的调用凭证,然后对智能家居系统进行操作。为防止用户私人信息泄露,该系统为每位用户保存独一无二的用户ID。用户与房间是一对多的关系,一个用户可以拥有多个房间。在基于云服务的智能家居系统下,每个用户在云平台上都拥有自己的用户信息,而用户信息在注册时提交生成,云平台需要对所有用户的注册信息进行管理,以区分不同用户。此外用户管理还包括对其所拥有房间的管理。

(二)设备管理

在基于云服务的智能家居系统中,在云平台上注册的属于不同用户的家电设备都应当归属于该用户的某一房间,不应当出现设备无归属的情况。如此,网关才可在数据库中唯一找到属于自己房间的家电设备,并进行控制操作。为对不同的设备进行准确的区分,为每个设备设置唯一的房间ID。设备与网关是多对一的映射关系,一个网关可以对多个设备进行控制和数据收集。

1.设备添加

设计相应网关程序以添加房间中不同设备实体的不同资源访问方法,当网关使用该访问方法向云平台家电设备数据表中添加设备实体时,设置设备的相关初始信息,添加成功,云平台返回结果码为0,失败结果码为1,服务器存在问题结果码为2。添加设备的序列图如图3。

图3 添加设备序列图

2.设备控制

在云服务器上,设计根据房间ID查询所有属于该房间的设备的功能,并提供外部访问方法,客户端调用该方法查询当前房间下的家电设备实体,存入家电设备数组,返回给客户端。客户端根据返回的实体个数,更新家电设备控制界面上家电的数量,对设备进行控制,设备控制序列图如图4。

Hand segmentationfrom a single depth image basedonhistogram threshold selection and shallow CNN························XU ZhengzeZHANG Wenjun(5,675)

图4 设备控制序列图

(三)数据管理

在基于云服务的智能家居系统中,数据管理主要分为用户数据管理和用户房间数据管理。用户管理功能主要是针对每位用户特的有数据的管理,比如位置数据、负载使用记录数据、用户行为分析数据、用户需求分析等数据的管理。房间数据管理主要包括数据库中记录设备实体、设备状态、设备数据等的相关数据表的管理,增加房间ID属性,使不同的设备实体、设备状态、设备数据唯一地匹配到所属房间。其他数据管理包括在服务器端收集到诸如天气信息、电价信息等数据,将其保存于统一的表中,待优化调度及用户查询时使用。

(四)优化调度管理

在基于云服务的智能家居系统下,系统云平台根据收集到的用户数据、房间数据、天气数据、电价数据等,通过运行优化调度算法对各种数据进行分析挖掘,为用户提供更舒适的家庭环境。同时,减少用户的电费消耗。

四、系统实现

(一)数据库设计实现

首先,根据用户认证、用户房间管理所需功能,在数据库中,应当设计两张表保存用户注册时的用户和房间信息。所以,首先应该在数据库中增加用户信息表、房间表来记录用户属性、房间属性及用户和房间之间的所属关系。同时,根据前面对系统的分析,用户是可以拥有多个房间,所以在房间表中增加用户ID表示房间对用户的满射关系。

同时,根据设备管理所需功能,建立设备归属的管理,在原系统的硬件设备中增加房间ID属性,建立硬件设备与房间之间的所属关系。以空调数据表为例,其余硬件表包括插座表、插座数据表、热水器表、热水器状态表、电灯表、电灯状态表、窗帘表、窗帘状态表、各类传感器表、社交活动表、社交活动需求表、位置信息表、位置需求表等。

(二)云平台实现

云平台端的程序基于MyEclipse开发环境,采用Maven构建工程项目,主要采用Java语言进行程序编写。程序架构风格是当下比较流行的表述性状态传递,即REST软件架构风格,使用Jersey框架构建的REST,并采用了资源层、业务逻辑层和数据访问层三层结构进行编写。

1.数据访问层

数据访问层采用JPA实现,根据系统要实现的用户认证、用户房间管理、设备管理等功能,首先设计所需增加的实体属性及与数据库的映射关系,增加用户与房间实体。根据用户表、房间表中设计的属性,在用户、房间实体中定义相应的私有变量。生成构造函数以提供外部访问接口。在所有变量的构造函数上方,通过注解的方式实现与数据库属性的映射关系。

2.业务逻辑层

业务逻辑层根据资源层所需对数据的操作,设计相应的函数,以对数据访问层进行调用,对相关数据对象进行增、删、改、查操作。设计与实现保存用户注册信息到数据表的函数public void saveUserInfo(UserInfo userInfo)、根据用户名取出用户实体的功能函数public UserInfo queryUserInfo(String username)、根据用户ID查询其名下的房间实体功能函数public Room[]queryRoom(Interger id)等功能函数。

3.资源层

资源层是根据客户端、网关所需的资源,设计提供相应的资源访问方法,供网关、客户端使用。根据系统要实现的用户认证、用户房间管理、设备管理等功能,设计相应资源层所需提供的资源访问功能,根据房间ID保存智能插座实体的功能public Response saveSheSwitch(@PathParam("id") Integer id),根据房间ID查询智能插座状态信息的功能public Response querySheSwitchStatus(@PathParam("id") Integer id)等功能函数。同时,在设计完所有的资源类后,还需要在JAXRSApplication类文件中注册新建的资源类,在系统启动加载资源类时,对新设计的资源类进行加载。

4.客户端实现

客户端在安卓平台上设计实现。目前,安卓程序的开发是在Android Studio中完成的,使用谷歌开发设计的MVC(模型-视图-控制器)设计模式。

视图层部分主要是Android中的XML文件,文件中主要实现客户端界面的展示效果。根据用户认证、用户房间管理功能的需求,设计用户注册界面、用户登录界面、新建房间界面并修改界面FamilyFragment布局。界面控制层实现用户输入活动的响应,用户信息的提交,界面控件的初始化、监听与触发。设计实现界面与服务器的通信函数,完成数据的提交与对服务器资源的请求。安卓端模型层与服务器端类似,增加用户信息实体表和房间实体,并增加所有用户相关、房间相关数据表的属性,增加房间表、用户信息表以及对家电设备、电力数据、传感器数据表增加房间ID属性。客户端设计示意图如图5。

图5 客户端设计示意图

(四)网关实现

网关是智能家居系统连接家庭内部和外部的桥梁,负责将Arduino板采集到的房间数据保存到服务器的数据库中,以及从服务器数据库中轮训各家电设备状态表,并对家电设备进行控制。程序在MyEclipse开发环境,采用Java语言编写,运行在本地PC上。主要包括设备添加功能,家电控制功能,实现家电与服务器之间的交互。

本文设计与实现的系统在阿里云上部署实现,智能家居系统服务端通过MyEclipse部署在Apache Tomcat服务器中运行,同时部署有MySQL5.5供服务器操作数据。

五、结论

本系统结合云计算服务平台,设计与实现了基于云服务的智能家居系统,该系统实现了家用设备的智能化控制与集中控制,使家庭生活更加快捷方便。该系统可以有效地降低智能家居的成本,利用云计算平台动态申请与释放计算、存储等资源的优势,方便系统的进一步扩展与升级,云计算在智能家居上的应用也会成为未来的一种发展趋势。

作者单位:祁 冬,中国联合网络通信有限公司山东省分公司张建明,中国联合网络通信有限公司山东省分公司沈之浩,西安交通大学李家钊,西安交通大学

猜你喜欢

网关客户端智能家居
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
专题《面向智能家居的理论与实践创新》
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
智能家居在室内设计中的应用研究
智能家居行业仍无“独角兽”
一种主从冗余网关的故障模式分析与处理
智能家居未来感初体验