智能家居控制APP系统的设计与实现
2017-02-22陆文骏
丁 函,罗 军,陆文骏,叶 菲
(解放军陆军军官学院,安徽 合肥 230031)
智能家居控制APP系统的设计与实现
丁 函,罗 军,陆文骏,叶 菲
(解放军陆军军官学院,安徽 合肥 230031)
智能终端设备的迅猛发展加速了APP应用客户端的开发更新,APP的广泛应用也为大众生活提供了方便实时的服务。为了提高家居设备的智能化水平,解决设备控制实时性不强的问题,在研究分析无线通信和数据处理技术以及APP智能控制的硬件环境架构的基础上,提出并设计实现了一种基于IntelliJ IDEA 14.0.2集成环境的Android智能APP客户移动终端系统。该软件系统拥有无线Wifi管理、数据设置及操作、冲突管理、数据通信、数据读取和状态控制等功能,操作界面友好。为验证该智能移动终端系统的有效性和适用性,进行了系统功能模块的测试验证。测试验证结果表明,所设计实现的智能移动终端系统稳定性好、实用性强、准确性高,具有良好的可扩展性,较好地实现了智能手机等移动终端对家用电器和设备的远程自动控制,呈现出广阔的市场前景。
APP软件系统;IntelliJ IDEA 14.0.2;Android;智能家居控制
0 引 言
近年来,随着智能手机和IPAD等移动终端设备的迅速发展,人们已经逐渐习惯了APP软件应用。APP软件系统具有便捷性、精准性、互动性和超强的用户黏性。在市场上,它不仅为广大企业和商家积累了庞大、忠诚的网络用户,而且提升了企业和商家的知名度。当前,其应用正逐渐渗入人们的家庭生活之中,已有一些产品问世,但在智能家居控制方面还有待进一步研发,市场潜力还需进一步挖掘[1]。
智能家居控制(Smart-home Control Systems,SCS)是以智能家居系统为平台,利用网络通信技术和自动控制技术将家居生活有关的设施进行高效集成的系统[2]。近年来,国内外许多企业在这一领域推出了相应产品,但是将它移植到智能手机或IPAD上进行APP应用还比较少。为此,基于IntelliJ IDEA 14.0.2集成环境和Wifi环境下移动终端用户的复杂交互,提出并设计开发了移动终端远程智能控制APP软件系统,实现了移动终端对家居设备的实时远程控制和数据读取,并具有较好的可拓展性。
1 APP智能控制硬件环境
如图1所示,APP智能控制硬件环境由APP终端(智能手机或IPAD平板)、数据集中器、服务器和家居设备(如照明设备智能控制器、电子球阀、电表、电能表、水表、燃气表、流量计等)组成。数据集中器与服务器(实时分析、处理、存储各个家用电器和设备数据)进行有线传输,与各个家用电器和设备进行无线数据实时传输。APP终端通过Wifi与数据集中器、服务器进行通信连接,实时读取来自设备的状态数据,同时采用智能控制APP软件系统,实现对各个家用电器和设备的控制、管理[3-4]。
图1 APP智能控制硬件环境图
2 软件设计与实现
APP是一款智能控制的Android系统软件,操作系统为Android4.4以上版本,支持智能手机或IPAD平板终端[5]。采用JetBrains公司IntelliJ IDEA集成环境,IntelliJ是业界公认的最佳Java开发工具,尤其在智能代码助手、重构、J2EE支持、Ant、JUnit、CVS整合、创新GUI设计等方面功能超常。
该系统主要分为三级界面,包括登陆模块、网络模块、设置模块和控制模块,结构示意如图2所示。
图2 APP软件模块示意图
用户点击APP软件系统,进入登陆模块,输入用户名和密码,核实正确后进入网络模块。网络模块用于控制无线Wifi的连接,只有连接Wifi后才能进入设置模块和控制模块。进入设置模块,通过读取.txt文本显示通信IP地址、端口号和应用设备编号,可以对其进行增、删、改、存操作。控制模块利用网络通信实时读取客户所需设备数据,并可以随心所欲地控制照明设备或水龙头的开关。下面重点介绍网络模块、设置模块和控制模块的设计实现。
2.1 网络模块
由于现在无线网络的高使用率和高覆盖率,该APP软件系统的网络模块采用Wifi无线连接的方式,IDEA拥有强大的网络管理功能。其中,WifiManager代表Android Wifi连接服务。它能够用于配置Wifi网络连接、管理当前的Wifi连接、扫描接入点及监视Wifi连接变化。
为了使用WifiManager,首先要在应用程序的manifest文件中添加用于访问和更改Wifi状态的uses-permissions:
然后通过getSystemService访问WifiManager,并传入Context.WIFI_SERVICE常量。当建立了一个活动的Wifi连接后,使用WifiManager的getConnectionInfo()方法找出连接的状态信息,程序如下:
wifi=(WifiManager)this.getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifi.getConnectionInfo();
最后通过getWifiState()和getSupplicantState()方法判断Wifi硬件是否启用以及软件是否连接成功,若正常启用则给出提示,否则也给出提示并要求用户进行手动选择连接:
if(!wifi.isWifiEnabled()){ //判断wifi是否可以用
if (wifi.getWifiState() !=WifiManager.WIFI_STATE_ENABLING){
Toast.makeText(first.this,"当前wifi尚未打开!",Toast.LENGTH_LONG).show();
imbt_red1.setVisibility(View.VISIBLE);}}
if(wifiInfo.getSupplicantState()!=SupplicantState.COMPLETED){
Toast.makeText(first.this,"当前wifi尚未连接!", Toast.LENGTH_LONG).show();
mbt_red1.setVisibility(View.VISIBLE);}
2.2 设置模块
2.2.1 数据设置及操作
该模块主要用于数据的显示和设置,通过对.txt文件的读取和重写完成对Tablayout布局的操作。Tablayout没有边框,它由多个TableRow对象组成,每个TableRow设置多个单元格,每个TableRow和单元格均通过Addview()方法添加。
集中器设置两个TableRow,每个TableRow含有两个单元格,点击“添加”按钮可以按照协议读取“jizhongqi_xinxi.txt”文件,获取Server的IP地址和端口号,也可以对其进行更改,最后重写文件;其他设备根据从.txt文件中读取的设备编号个数设置TableRow的个数,每个TableRow包含三个单元格,分别显示多选框、序号和设备编号。以智能控制器为例,图3为其设置界面,界面启动时读取“Kongzhiqi_xinxi.txt”文件,显示照明设备的数量和编号,通过该界面还可以对照明设备的数目和编号进行修改操作,包括添加、删除和更改三种,完成操作后重写.txt文件,方便后续读取。
图3 智能控制器设置界面
2.2.2 数据操作中的冲突避免
对数据的添加、删除和修改操作实际上最终还是对.txt文本的操作,因为在对数据进行更改后都要对.txt文本进行修改保存,再次引用数据时,只要读取相应文件中的对应数据就行了,这样采用同样的读取标准,在数据量很大时可以大大减少错误率。在数据的三类基本操作中,数据的添加是直接在文本文件的末尾进行,即新增的设备编号数据是加在之前所有数据的后面,不存在遍历搜索的问题,但是每次对数据进行删除和修改操作前,必须对文本文件中的设备编号进行遍历搜索,搜索到相应的编号后进行更改,这就存在一个搜索效率和正确率的问题。
因此,该系统采用近年来被广泛应用的Bloom filter数据结构来判断一个给定属性值的元素是否属于某一集合。Bloom filter是由Burton H.Bloom于1970年提出的,它突破了传统哈希函数的映射和存储元素的方式,是一种节省空间、高效率的数据表示和查询结构,而且该结构对向量中的元素进行编码,保密性好,利于保护隐私。由于所涉及的设备编号可以看作特定的数据集合,并且具有更新删除的功能,所以当用户添加设备编号,读取.txt文本判断是否进行更改和删除编号时采用改进的可删除元素的Bloom filter结构[6]。
设S={x1,x2,…,xn}为具有n个元素的集合,Bloomfilter使用k个相互独立的哈希函数,它们分别将集合中的元素映射到BFV数组的k位中。对于任意一个元素x,第i个哈希函数映射的位置hi(x)就会被置为1(1≤i≤k),如果一个位置已经为1,那么随后映射到该位置时其值不变。当查询元素zi时,用Bloomfilter的k个哈希函数映射到BFV中,如果每一个哈希函数映射到的位置都为1,则认为zi属于S,否则zi不属于S,无法进行更改和删除操作。这里还设计了一种称为计数型CBF的4位数组CBFV作为计数器,当要删除和添加设备编号时,分别用k个哈希函数映射到CBFV上的k个计数器,并将这些计数器减1或加1。具体基于Bloomfilter的数据查询原理如图4所示。
图4 基于可删除Bloom filter的数据查询示意图
2.3 控制模块
2.3.1 数据通信
(1)UDP通信。
为了提高数据的传输速率,该APP软件系统采用的是Socket通信中的UDP通讯方式[7-8]。该通讯方式不需要先建立网络链路,将数据放到数据包后,根据文件中读取的预设的IP地址自行寻找路径到目的地。同时,在传输过程中,为了提高数据传输的可靠性,实时对传输数据的准确性进行检测并及时提醒。
首先创建服务器(Server),Server要先创建一个DatagramSocket对象,并且指定监听的端口。接着创建一个空的DatagramSocket对象用于接收数据[9]:
DatagramSocket socket=new DatagramSocket
(2222);
DatagramPacket packet=new DatagramPacket(data,data.length);
使用DatagramSocket对象的receive()方法接收客户端(Client)发送的数据,在没有数据进行接收时处于阻塞状态。
socket.receive(packet);
Client也需要先创建一个DatagramSocket对象,并且指定监听端口。接着创建一个InetAddress对象,这个对象用来设置网络发送的地址[10]:
DatagramSocket socket=new DatagramSocket
(3000);
InetAddress serverAddress=InetAddress.getByName("192.168.1.101");
然后创建一个DatagramPacket对象,并将这个数据包发送到刚才设定的网络地址及端口号,最后使用DatagramSocket对象的send()方法发送数据:
DatagramPacket packet=new DatagramPacket(data,data.length,severAddress,2222);
socket.send(packet);
最后,无论是Server还是Client在接收或发送数据完毕后,都要将socket关闭,读取的数据将重新写入相应的文本文件以备后续读取使用。
socket.close();
(2)多任务异步处理。
考虑到楼层、住户、房间的数量较大以及设备单元的种类较多,并且具有不确定性的特点,从网络上获取数据的操作数量也不确定。大量的UI操作会耗费大量时间,并且多种设备的数据读取和操作都在后台同时进行,对于这种同时进行的任务,为了避免数据冲突和丢失,必须创建新的进程,每个任务对应一个进程单独执行,互不干扰。而且,在Android系统默认的情况下,所有的操作均在主线程中进行,主线程负责管理与UI相关的事件,但是在用户自己创建的子线程中,不能对UI组件进行操作,强行操作系统将会抛出异常。
因此,该APP软件系统采用了Thread类和Handler消息传递机制相结合的异步数据处理方法实现多线程操作UI界面[11],工作原理如图5所示。
图中Activity对应一个界面,每个Activity对应一个主线程,主线程自动创建Handler对象操作UI,但新建的线程要通过Looper对象创建Handler操作UI,每个线程对应一个Looper循环对象,而每个Looper对象对应一个MessageQueue消息队列,MessageQueue用于存放Message消息,存放消息是按照FIFO(先进先出)的原则执行。
所以对于每个不同编号的设备都可以创建一个子线程,在创建新线程时采用了继承Thread类的Looper-
图5 异步数据处理工作原理图
Thread,并重写run()方法。首先使用Looper.prepare()方法初始化一个Looper对象,然后实例化一个Handler对象Handler1=new Handler(),用handleMessage()方法来处理消息队列。然后通过Handler1.obtainMessage()方法获得每个Message消息。最后使用Handler1.sendMessage()方法发送消息,使用Looper.loop()方法启动Looper线程,这样新建的LooperThread线程就会从消息队列中获取和处理消息,从而实现了不同编号设备的数据通信[12]。
2.3.2 数据读取和状态控制
该模块主要利用自定义格式的Dialog控件显示读取到的数值,比如照明设备的电流、电压值和功率因素,电表的电量值,水表的水量值,燃气表的燃气量和流量计的水量值等。同时,在窗口中也可以使用Switch开关控件控制设备的开关状态。该系统主要包括智能控制器和电器球阀的开关,其中智能控制器用来控制照明设备的开关,电子球阀包括1/3开、2/3开、全开和全关四种开合状态,控制水龙头的开合。
将读取的数据保存到特定的文本当中,定期进行整理,可以对某段时间内的数据进行分析,比如每隔5天读取数据,连续读取7次,就可以得到30天(1个月)内的数据变化情况,便于根据需要进行数据分析。图6为1个月内电量、水量和燃气量的变化趋势。
该系统开发完成,编译通过,生成apk文件后就可以在智能终端上运行测试了,测试结果功能完好。该APP已经通过合肥骐骥智能控制有限公司向家居智能化市场推广使用,并取得了专利,获得了良好的业界口碑[13-14]。
3 结束语
为实现移动终端用户对家居设备的实时远程控制,在研究分析APP智能控制硬件环境架构的基础上,提出并设计开发了具有无线Wifi管理、数据设置及操作、冲突管理、数据通信、数据读取和状态控制等功能的移动终端远程智能控制APP软件系统。产品运行结果表明,所开发的软件可以将智能手机(或IPAD平板)和传统的家居设备通过无线Wifi连接,具有照明和电子球阀的远程开关控制,以及电表、水表、燃气表、流量表等设备数据的实时读取与分析功能,实用性强、操作界面友好、功能扩展能力佳,有助于提高家居设备的监管和控制能力。
图6 数据变化曲线图
[1] 张博群.基于PLC智能家居系统的研究与设计[J].无线互联科技,2016(10):60-61.
[2] 张新猛.基于Android的移动学习平台研究与设计[J].福建电脑,2016,32(6):118-119.
[3] 张 阳,齐万华.Speex在基于Android的楼宇可视对讲程序中的应用[J].数字技术与应用,2016(6):109.
[4] 马大坚,郑胜平,马才华.基于Android控制智能台灯的设计[J].电子世界,2016(12):43.
[5] 邱 恬.智能家居网络控制系统的主要方案分析[J].科技创新与应用,2016(20):80.
[6] 陈剑洪,朱建中,张晓川.基于Bloom filter算法的优化查询分析方法[J].移动通信,2012(S1):85-89.
[7] 陶 阳.基于Android平台的LBS实例设计与实现[J].电脑编程技巧与维护,2016(13):41-46.
[8] Bertseh L A.Development tools for home automation[J].IEEE Transactions on Consumer Electronics,1990,36(4):854-858.
[9] Alam M R,Reaz M B I,Ali M A M.A review of smart homes-past,present,and future[J].IEEE Transactions on System Man and Cybernetics Part C:Applications and Reviews,2012,42(6):1190-1203.
[10] Byun J,Jeon B,Noh J,et al.An intelligent self-adjusting sensor for smart home services based on ZigBee communications[J].IEEE Transactions on Consumer Electronics,2012,58(3):794-802.
[11] Gaddam A,Mukhopadhyay S C,Gupta G S.Elder care based on cognitive sensor network[J].IEEE Sensors Journal,2011,11(3):574-581.
[12] 李梦伟.Android 4编程入门经典—开发智能手机与平板电脑应用[M].北京:清华大学出版社,2012.
[13] 张 领,李根福,王敏杰.Android程序开发范例宝典[M].北京:人民邮电出版社,2015.
[14] 郭金尚.Android经典项目案例开发实战宝典[M].北京:清华大学出版社,2015.
Design and Implementation of APP System for Intelligent Home Control
DING Han,LUO Jun,LU Wen-jun,YE Fei
(Army Officer Academy of PLA,Hefei 230031,China)
The rapid development of intelligent terminal equipment has accelerated the development of the APP application client,and the wide application of APP also has provided a convenient and real-time service for the public life.In order to improve the intelligent level of home equipment and to solve the problem of real-time control of equipment,on the basis of research and analysis of wireless communication and data processing technology as well as the hardware environment architecture of APP intelligent control,an Android intelligent APP mobile terminal system has been designed and implemented,which has the function of wireless Wifi management,data setting and operation,conflict management,data communication,data reading and state control,and the operation interface based on the integration environment of IntelliJ IDEA 14.0.2.In order to verify the effectiveness and applicability of the intelligent mobile terminal system,the system function modules have been tested and verified.The test results show that it has good stability,strong practicability,high accuracy,good scalability and is better to realize the remote automatic control of home appliances and devices,such as smart phones and other mobile terminals,showing the broad market prospect.
APP software;IntelliJ IDEA 14.0.2;Android;intelligent home control
2015-08-19
2015-12-16
时间:2017-01-04
总参院校武器装备科研项目(JNKY2012011)
丁 函(1982-),女,讲师,硕士,研究方向为检测技术与信号处理。
http://www.cnki.net/kcms/detail/61.1450.TP.20170104.1017.014.html
TP311.52
A
1673-629X(2017)01-0121-05
10.3969/j.issn.1673-629X.2017.01.027