基于Android的温室数据多径通信移动终端设计
2015-12-29林欣铭陈鸣鸠
林欣铭,陈鸣鸠,俞 龙
(华南农业大学工程学院,广州 510642)
基于Android的温室数据多径通信移动终端设计
林欣铭,陈鸣鸠,俞 龙※
(华南农业大学工程学院,广州 510642)
手持式移动终端平台在农业信息采集与监控领域得到广泛应用。为了降低通信成本和提高通信可靠性,本文基于Internet的C/S架构,设计了移动终端平台与数据采集汇聚节点的多径通信系统,并实现了温室监控数据的远近程通信。远程通信时,移动终端平台通过3G或4G电信网络登录到Internet网络,与汇聚节点服务器实现数据通信;近程通信时,移动终端平台通过局域网WiFi的AP模式与汇聚节点直接通信。温室环境参数监测测试结果表明,移动终端能够可靠的的获取温室汇聚节点的数据,并根据网络连接状态和WiFi信号强弱实现远近程两种通信模式自由切换。
温室 Android移动终端 多径通信
0 引言
温室是利用人工建筑的设施,通过可以调控的技术手段,实施高产、高效的现代农业生产方式。温室环境监控技术对农业生产有着重要的意义。目前,温室环境监控主要依托传感技术、网络通信技术和嵌入式技术。随着农业现代化的普及,手持式移动终端平台在农业信息采集与监控领域得到广泛应用[1]。
温室环境监控系统主要分为两类:一类是以本地监控为主,其监控终端依靠本地计算机进行;另一类温室环境监控通过无线的方式进行,包括近程的蓝牙、Zigbee网络等和远程的GPRS网络,3G网络等通信方式[2-5]。在已有的温室监控系统中,用作远程监控的移动设备获取数据的方式都是通过3G网络连接到Internet网络远程访问服务器来实现,在近程通信时移动设备也是通过这一方式来实现。
为了降低通信成本,提高通信可靠性和时效性,本文研究了基于Android的温室数据多径通信移动终端设计,不仅支持通过电信网络远程监控温室,在温室内近程时也能够通过局域网获取温室环境参数。
1 多径通信系统设计
基于Android的温室数据多径通信系统由温室汇聚节点、数据存储转发服务器、Android移动监控客户端3个部分组成,如图1所示。温室汇聚节点由温室环境参数采集和控制模块、无线转发模块组成,它主要负责温室环境参数的获取、采集以及汇聚,还可以通过控制温室设备来调节温室环境参数,如空调,卷帘机等[6]。数据存储转发服务器是温室汇聚节点与移动监控客户端在远程数据通信的桥梁,负责对温室汇聚节点的数据进行存储,当接收到来自Android移动监控客户端的请求,则对温室环境参数进行转发。Android移动监控客户端为用户提供了一个良好的人机交互平台,支持远、近程两种数据通信模式,对获取的温室环境参数存储在移动客户端并予以显示。
远程通信时,Android移动监控客户端获取的温室环境参数的直接接口是数据存储转发服务器。而数据存储转发服务器的数据来源是温室汇聚节点,服务器和温室汇聚节点的数据通信可通过WiFi实现[7]。近程通信时,Android移动监控客户端获取的温室环境参数的直接接口是温室汇聚节点。
图1 多径通信系统架构图
2 基于Android的移动监控客户端设计
移动监控客户端主要有以下3个部分功能:温室环境参数的获取、温室环境参数的显示、温室环境参数的存储。移动监控客户端是在Google的开源Android平台上设计实现的温室环境监控系统客户端应用程序,开发环境为 Android SDK+JAVA JDK6.0+Eclispse3.5。
2.1 温室环境参数的获取
2.1.1 远程获取温室环境参数的实现
远程获取温室环境参数是通过3G,4G等移动互联网访问存储有温室环境参数的服务器来实现的。服务器是温室汇聚节点与移动监控客户端数据通信的媒介,担任存储转发的功能。本系统采用免费开源的Web应用服务器Tomcat,编写Servlet应用程序运行于Tomcat平台上,在移动监控终端客户端与服务器之间进行数据的处理。
服务器地址是由Tomcat绑定的本地IP地址,供移动监控客户端及温室汇聚节点进行访问。Tomcat还进行设定访问端口,完成数据的存储和转发工作。Tomcat接收到请求后,将请求传递给Servlet容器,再由容器向Servlet提供HTTP请求和响应,而且是由容器调用Servlet的doGet()和doPost()方法得到客户端请求信息以及传送数据,并将Servlet的响应返回给客户端。
服务器以Excel形式存储环境参数采集与控制模块的数据,采用Json数据格式[8]封装传递过来的温度、湿度、光照强度、二氧化碳浓度数据,封装好的数据以Web的形式供移动监控终端客户端访问。服务器接收到移动监控客户端发送过来的控制信号则直接通过WiFi给温室环境参数采集与控制模块,将温室环境参数控制在合理的范围。
在Json通信方式下移动客户端采用HTTP协议[9]与服务器进行通信,通过openConnection()方法获得HttpURLConnection连接对象,进而通过 getInput-Stream()方法获得输入数据流Instream,最后将输入数据流以parseJSON(Instream)转换成Json格式,再以迭代的方式进行拆包处理,就可以获取各类环境参数。
2.1.2 近程获取温室环境参数的实现
近程通信时,移动监控客户端通过连接温室AP模式的局域网WiFi来获取温室环境参数。此时温室汇聚节点是数据获取的直接接口,也充当了C/S架构中的服务器。在此方式下移动客户端采用基于TCP/IP协议的 Socket通信方式[10]。基于 WiFi的Socket通信方式的通信模型如图2所示。
图2 基于WiFi的Socket通信模型
Socket也称作“套接字”,在程序内部提供了与外界通信的端口,即端口通信。通过建立Socket连接,可为通信双方的数据传输传提供通道。Socket的主要特点有数据丢失率低,使用简便。Socket用于描述IP地址和端口,这里的IP地址是指服务器主机,端口是服务器用来监听该程序的端口。应用程序通过Socket向网络发出请求或者回复请求。服务器程序启动并监听相应的Socket端口,一旦监听到网络连接请求便立即响应,实时处理数据传输,并保存接收到的数据。
采用Socket通信时,需要将无线模块设置成WiFi的AP模式。配置的主要参数是工作模式和网络协议,工作模式应该配置为无线AP模式,网络协议需要选择TCP协议。除此之外,还需要设置网络IP地址、网络端口和网络超时时间等参数。
客户端与服务器通信,必须在客户端创建一个Socket,并指定与要连接的服务器的IP地址和端口。在Android中Socket提供了get0utputStream()和get-InputStream()两种方法得到对应的输入流以进行读操作和对应的输出流进行写操作,在Socket对象使用结束时,调用Socket的close()方法释放资源。
2.1.3 远、近程两种通信模式自由切换的实现
Android移动监控客户端通过ConnectivityManager类和NetworkInfo类监听手机网络,当前网络连接的类型信息。通过判断Mobile网络和WiFi网络是否可用以及连接的状态决定使用远程通信模式还是近程通信模式。由于状态监听在后台完成,因此可以使用广播通知网络状态的变化而实现两种模式的自动切换。
当手机的WiFi处于连接状态时,通过引用WiFiInfo对象的getSSID()方法来判断当前连接的WiFi是否为温室内覆盖的AP模式的WiFi,如果是,则采用近程通信模式,否则采用远程通信模式。近程通信时,后台还通过WiFiInfo对象的getRssi()方法来判断连接的局域网WiFi的信号强度,当getRssi()的返回值小于-70时,因为此时局域网WiFi有可能连接不上或者掉线,所以断开温室局域网WiFi采用远程通信模式。当手机的WiFi处于断开状态,而Mobile网络处于连接时,则采用远程通信模式。
2.2 温室环境参数的显示设计
移动监控客户端的软件结构采用 Mod-el-View-Controller方法[11]来进行设计。Model对应业务bean的实现;View对应美工视图的设计;Controller对应着Activity设计,从用户接收请求,将Model与View匹配在一起,共同完成用户的请求。Android的界面有三种模式,本移动监控客户端采用的是xml文件的生成方式,界面与xml文件一一对应,如主界面 activity_main.xml,曲线显示界面showchart.xml等。
温室环境参数的显示是温室监控系统的必要功能,数据显示既要实时、直观,又要能够显示出环境参数在一定时间段内的变化趋势图,以供用户进行查看和了解。因此,本系统除了在主界面直接显示数据(如图3),还提供了另外2种数据显示方式,一种是曲线变化显示,另外一种是表格显示。
图3 移动监控客户端的主界面
曲线变化图利用AChartEngine(简称ACE),ACE是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。利用AChartEngine的ChartFactory类进行曲线绘制,初始化的第一步需要完成XYMultipleSeriesDataset对象的构造,初始化封装图表所需的数据集;第二步是完成XYMultipleSeriesRenderer对象的构造,设置表格的样式。初始化完成后新建一个TimerTask对象task,在task中的run()方法中定时刷新曲线。初始化后,各种环境参数的曲线变化图构造在同一个Activity里显示,如图4所示。随着数据的增多,曲线变化图可以手动缩小和左右拖动进行全局查看。
图4 曲线变化图
Android本身有表格控件(GridView)的,但是GridView的每一列的宽度被限定为一样宽,有时设计表格时,列宽不可能为同一宽度,所有本系统采用ListView控件去自定义实现表格。Listview的每一列都是由一个Textview去实现,表格的竖线可以通过View控件来绘制。Listview每一列的颜色相互不同可以通过复写Adapter的类,然后复写getview()方法具体去实现。初始化完成后,表格还会显示环境参数采集的时间,如图5所示,随着数据的增多,表格可以上下拖动查看。
2.3 环境参数的存储设计
环境参数的存储是为了方便数据统计与分析,温室环境参数在移动设备上进行备份。移动监控客户端以SQLite的形式[12]构建温室环境监控系统数据库。系统采用的SQLite数据库,是遵守ACID的关系型数据库管理系统,具有系统开销小、开源、检索效率高的主要特性。由于Android系统集成了SQLite数据库,所以在使用时十分方便,只需要采用SQL语句。数据的新增、修改、删除等操作,分别对应采用insert语句、update语句、delete语句等。在数据库查询中,通过访问Cursor游标下标的方法即可获取数据库中的数据。
在数据库首次创建时执行创建数据库方法,如果数据库存在则自动打开数据库,然后创建数据表格;如果在onCreate()方法中查询表格不存在,则调用方法创建表格。在本移动客户端中创建了一个名为GreenHouse的表格,用来管理环境参数,参数依次为 time VARCHAR,tempra VARCHAR,humi VARCHAR,light VARCHAR,carbon VARCHAR,分别代表时间,温度,湿度,光照强度,二氧化碳浓度参数。
图5 表格形式查看
3 系统运行情况
在服务器启动的前提下,开启环境参数采集与控制模块。此时,在Android平台上运行温室移动监控客户端,客户端能够自动切换到最佳的通信模式获取温室的环境参数并在主界面显示,如图3所示。然后点击“曲线变化图”按钮和“表格形式查看”便可进入相应子界面,逐一进行功能测试,测试结果如图4和图5所示。点击“数据存储”按钮便可将获取的温室环境参数信息存至Green House. db数据库。在各参数显示正常后,点击“设置参数”按钮可修改环境参数控制数值可对温室进行控制。由测试结果可得,基于Android的温室数据多径通信移动终端能够稳定运行,并且基本功能均能实现。
4 结语
本系统实现了基于Android的温室数据多径通信移动终端设计,将温室环境监控与Android平台终端相结合,运用WiFi技术作为温室环境参数采集与控制模块的组网方式,采用GPRS,3G等移动互联网技术作为移动监控客户端远程访问Web服务器获取数据的主要通信方式,除此之外,还创新的应用WiFi的AP模式,在近程时作为移动监控客户端获取数据的方式,此模式能够快捷、无需网络成本即可获取数据。用户通过客户端查看与控制温室环境参数,使用无线方式对温室环境进行全面、及时的监控,符合智能农业的发展趋势,具有广泛的应用前景。
[1]张天柱.温室工程规划、设计与建设[M].北京:中国轻工业出版社,2010.
[2]李莉,张彦娥,汪懋华,等.现代通信技术在温室中的应用[J].农业机械学报,2007,38(2):195-200.
[3]杜尚丰,李迎霞,马承伟,等.中国温室环境控制硬件系统研究进展[J].农业工程学报,2004,20(1):7-12.
[4]左志宇,毛罕平,李俊.基于Internet温室环境控制系统研究设计[J].农机化研究,2003,4(4):104-107.
[5]赵伟,孙忠富,杜克明,等.基于GPRS和WEB的温室远程自动控制系统设计与实现[J].微计算机信息,2010,26(31):20-22.
[6]李莉.基于智能手机的温室环境监控技术的研究[J].现代电子技术,2012,35(24).
[7]刘军良.WiFi技术在温湿度远程监测系统中的应用[J].自动化仪表,2014,35(6):79-82.
[8]胡集仪.使用JSON改进WEB数据传输[J].科技信息,2008(35).
[9]祝瑞,车敏.基于HTTP协议的服务器程序分析[J].现代电子技术,2012,35(4):117-119.
[10]罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技术,2009(3).
[11]任中方,张华,闫明松,等.MVC模式研究的综述[J].计算机应用研究,2004(10).
[12]崔娜.Android平台的SQLite数据库编程探析[J].信息与电脑(理论版), 2014(3).
Design of Mobile Terminal for Greenhouse Data's Multipath Communication Based on Android Platform
Lin Xinming,Chen Mingjiu,Yu Long※
(South China Agricultural University Engineering College, Guangzhou 510642,Guangdong,China)
Handheld mobile terminal platform has been widely used in the field of agricultural information collection and monitoring.In order to reduce communication costs and improve the communication reliability,in this paper,a multipath communication system,which has achieved remote communication and short-range communication,has been designed between mobile terminal platform and data acquisition sink node based on C/S architecture of Internet.In the case of remote communication,mobile terminal logs on to the Internet platform to communicate with sink node by 3G or 4G network;While under short-range communication,mobile terminal communicates with data acquisition sink node by LAN WiFi-AP mode.The test results of Greenhouse environment parameters monitoring show that mobile terminal is not only able to obtain reliable data from greenhouse sink node,but also achieve the free switch between remote communication mode and short-range communication mode depending on the network connection status and WiFi signal strength.
greenhouse,Android mobile terminal,multipath communication
2012年华南农业大学大学生创新创业训练计划项目——用于林业研究的甲虫型爬树机器人。
林欣铭(1993-),男,本科,主要从事网络通信技术的研究。
※通信作者:俞龙(1975-),男,博士,主要从事嵌入式技术及通信技术在农业中的应用。