基于iOS的农业信息采集系统的设计与实现

2018-12-19 08:51郑贵林
江苏农业科学 2018年22期
关键词:环境参数服务端视图

郑贵林, 张 天

(武汉大学动力与机械学院,湖北武汉 430072)

农业物联网是指通过农业信息感知设备,按照约定协议,把农业系统中动植物生命体、环境要素、生产工具等物理部件和各种虚拟“物件”与互联网连接起来,进行信息交换和通信,以实现对农业对象和过程智能化识别、定位、跟踪、监控和管理的一种网络[1]。

物联网技术与农业生产、经营、管理、服务全产业链的深度融合,对改造传统农业、提升农业现代化水平具有重要意义[2]。农业物联网能实时监控生产条件,高效管理生产过程,科学控制生产成本,是未来农业的发展方向。目前,世界范围内农业物联网技术研究广泛且深入,但应用上总体处于试验示范阶段[3]。农业物联网的具体应用主要集中在温室大棚、果园等设施的土壤温湿度和作物生长环境信息[4]、作物本体信息[5]的采集和少量畜牧养殖相关参数的采集以及农业节水灌溉[6]方面。

本研究设计的信息采集系统实现了对农场环境水质、气象、土壤等信息的在线高精度测量与实时采集,提供了丰富的数据展示与对比功能,指导了农业生产,同时,用户可以通过iOS(由苹果公司开发的移动操作系统)设备查看农业生产信息,具有很大的便捷性。

1 系统架构

系统由3大部分组成图1,分别是信息感知层、信息传输层、信息应用层。感知层测量现场的环境参数,通过传输层汇聚打包发送给应用层,应用层对现场数据进行分析处理,反馈于农业生产。

1.1 信息感知层

感知层是农业物联网的核心部分,感知层实现了对农业生产信息的获取[7]。信息感知层通过多种传感器测量现场环境参数,本系统感知的信息主要包括水质(pH值、电导率、溶解氧含量、水位、水温)、降水量、空气PM2.5(细颗粒物)、CO2浓度、土壤情况(温度、湿度、pH值、养分)、气象5要素(风向、风速、大气温度、湿度、压力),实现了农业生产信息的全方位感知。

感知层采用太阳能电池和蓄电池不间断电源(uninterruptible power system,简称UPS)切换方法,解决了传感器野外供电问题。传感器采用RS485的方式组网,组网方式简单,适应野外恶劣环境。

1.2 信息传输层

感知层在获取现场的环境信息后,通过传输层汇聚,并传输给应用层。本系统的传输层主要由数据采集终端(remote terminal unit,简称RTU)及集成在RTU上的数据传输单元(data transfer unit,简称DTU)等组成。传感器节点通过RS485总线和RTU连接,RTU定时采集传感器数据,打包后通过DTU发送给采集服务器。

GPRS(通用分组无线服务)组网传输速率可观和费用低、可靠性高、实时性强、监控范围广、传输功率小,适合野外供电环境,故本系统采用GPRS/GSM(全球移动通信系统)作为现场站点的组网信道,DTU通过GPRS网络和服务端进行连接。

在采集站断网(GPRS连接异常,服务器连接异常等)的情况下,RTU依然能进行采集,并将数据存储在本地的固体存储器中;网络正常后,采集服务端根据断网时间召回缺失数据,保证了数据的完整性和连续性。

1.3 信息应用层

信息应用层主要由服务端采集程序、数据库、移动客户端、浏览器等组成。信息应用层实现了对农场数据的存储、显示、查询等功能。服务端采集程序解析处理由信息传输层上传的数据,并将数据存储在数据库中,用户通过移动客户端和浏览器可以查看农场的环境参数,根据监测到的数据,实现对农作物的精细化管理。

2 采集服务器

采集服务器使用workerman框架进行开发。workerman是一个高性能的PHP socket(PHP指超文本预处理器)服务器框架。workerman的目标是让PHP开发者更容易地开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖于php-fpm、nginx或者apache等容器便可以独立运行[8]。

采集服务器实现了和现场RTU的通信,采集数据并解析数据包存入数据库中。RTU和服务器之间保持TCP(传输控制协议)长连接,利用心跳的方式确保连接的有效性,RTU在断线后将自动进行重连,确保连接的有效性。现场通信异常恢复后,采集服务器根据RTU的断线时间召回掉线时间的数据,确保了数据的连续性。

服务器采用多进程的方式和RTU进行通信,服务端数据包处理流程见图2程序在启动时,根据数据库中RTU设备数量开启进程,1个进程用来处理通用业务流程,其余的进程分别绑定了相应的RTU,处理相应的RTU数据。不同RTU的数据在不同进程上处理,确保了并发时不会因为处理时间过长导致进程阻塞。

程序启动后,开始监听客户端的接入,连接处理流程见图3数据库中事先添加了RTU设备信息,客户端上线后,更新设备状态,根据设备离线的时间段向RTU发送召回数据命令。接收到数据后,根据数据的包头信息区分数据类型,数据包头主要包含RTU设备数据包头、实时数据包头、断线数据包头等, 根据包头解析数据并将解析结果存入数据库。服务端向外部发布Web服务,客户端可以调用相关接口访问数据库数据。

3 iOS客户端设计

iOS客户端软件使用Objective-C语言在Xcode开发平台下开发[9]。iOS客户端实现了信息采集站的监控。

iOS客户端采用模型-视图-控制器(model- view- controller,简称MVC)设计模式(图4),MVC模型分离了程序的表现、控制和数据,具有重用性高、耦合性低、可扩展、可维护等优势[10]。模型部分主要负责数据交互,分为网络请求模块和数据持久化模块,网络请求模块负责与云端交互,调用服务端接口请求数据或上传数据,数据持久化模块主要用来存储账号信息、保存草稿等;视图部分用来展示客户端界面,包含系统视图和自定义视图;模型和视图之间不能直接通信,由控制器协调模型和视图,根据业务逻辑把模型数据显示到视图上,同时,将用户在视图上操作事件的数据传递给模型。

iOS客户端的工作流程见图5。程序启动后,首先验证登录状态,在token(令牌)非空并且未过期的情况下直接进入首页,否则就进入登录界面。用户在使用账号密码登录后,服务器会根据账号信息生成1个token字符串,同时设置token的生命周期,登录成功后客户端把token存储在本地。客户端请求数据时须带token参数,从而保证了接口的安全性。登录成功后,用户可以查看客户端所有功能模块。

iOS客户端主要包含实时数据、历史数据、历史曲线对比、天气预报、地图管理等功能模块。实时数据模块展示了各个站点的传感器的实时数据;历史数据模块展示了传感器每天、每周、每月的数据信息,通过图表和数据列表的形式展现出来;历史曲线对比模块可以根据用户的需求查询不同传感器某个时间段的历史数据,并将历史数据绘制到同一张图表中展示传感器数据之间的关系;天气预报模块展示了站点的天气信息,根据RTU的位置信息,调用第三方天气接口服务,预报该站点的天气;地图管理模块直观地在地图上展示了各个站点的位置信息,并提供了距离测量、导航等相关功能。

3.1 通信模块设计

在网络操作中,服务器返回的数据格式一般采用XML(可扩展标记语言)解析和JSON(JavaScript对象表示法)解析方式。XML文件庞大、格式复杂、传输带宽大,但是其格式统一、符合标准,与其他系统进行远程交互、数据共享容易。JSON格式简单、占用带宽小,直接通过键值解析数据。对于数据较少的解析一般采用JSON解析,对于大规模数据一般采用XML解析[11]。本系统iOS客户端所涉及的数据量相对较小,格式简单,因此选择JSON格式进行数据传输。

iOS客户端通过webservice方式与服务端进行通信,使用JSON格式进行数据交互。为了减少网络通信的开销,可以进行本地缓存。由于历史数据不会发生变化,请求成功后,将历史数据存储到本地缓存中,下次请求时首先判断缓存中是否有历史数据,如果有就可以直接从缓存中加载。对于实时数据,仍然需要向服务端请求最新数据。

iOS客户端采用同步阻塞请求的方式调用webservice接口,接口调用过程如下:(1)传入接口URL(统一资源定位符)和参数;(2)开新线程;(3)同步请求;(4)解析数据并将结果以block方式返回给主线程;(5)将结果显示在界面上。

3.2 界面设计

界面主要采用Xcode的storyboard设计,同时也通过代码和xib的方式自定义了一些视图。界面考虑到了不同iPhone机型及iOS系统的适配,客户端能在iOS7及以上系统的手机上运行。

良好的人机交互界面,不仅带来好的用户体验,同时也可以大大提高工作效率[12]。客户端的主要功能是各个站点的实时数据和历史数据的展示(图6、图7)。

4 数据分析

系统近2年的运行累积了大量的农业生产数据。下面从降水量、温度(土壤温度和大气温度)、湿度(土壤湿度和大气湿度)等环境参数来分析农业生产信息。

由表1可知,该区域在5月到9月降水量较高,同时温度和湿度均较高,湿度和降水量之间并不是完全的线性关系,湿度相对于降水量有一定的延迟性。综合上述环境参数,农业生产者可以根据农作物的生长特点选择适合当地环境的农作物种植,在湿度较低时洒水增加湿度,在温度较低时选择大棚种植方式保持合适的生长温度,同时根据各个环境参数的变化规律事先作出生产决策。通过对农场生产环境的监测,有效反馈农业生产。

表1 2016年高韩站部分环境参数

5 系统应用

本系统已成功运用在四川省成都市的10个野外采集站,部分现场设备见图8,近2年的运行表明,系统运行稳定,实现了对农业生产信息的实时监测与分析,对农业生产有积极的指导作用。

6 结语

本农业信息采集系统,通过iOS移动设备能随时随地查看农田各项环境参数,有效帮助农业生产者掌握农业生产信息,为生产决策提供了数据支持。本系统组网简单、功耗低、安全性高、运行稳定、便于野外部署,对农业物联网的推广有积极的作用,适用于广大农场、果园等生产环境,有广阔的市场。

本系统还有一些可以改进的地方。系统中信息感知层采用RS485组网方式,RS485为半双工通信方式,且传输速度不高,采用速度更快的Wi-Fi组网方式,能够减少现场布线,降低组网复杂度,同时能增加网络容量。目前Internet网络层主要使用的是IPv4协议,随着互联网本身的快速发展,IPv4的地址已经日渐匮乏,从目前的地址消耗速度来看,IPv4地址空间已经很难再满足物联网对网络地址的庞大需求。下一代网络协议IPv6采用了长度为128位的IP(网络协议)地址,彻底解决了IPv4地址不足的难题,将IPv6技术运用到感知层传感器组网中,对于提高网络容量、增加网络安全性、方便网络管理等方面有积极的意义。

猜你喜欢
环境参数服务端视图
基于云平台的智能家居环境参数协同监控系统设计
列车动力学模型时变环境参数自适应辨识
一种食用菌大棚环境参数测控系统设计
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
基于小型固定翼移动平台的区域大气环境参数采集系统设计
在Windows Server 2008上创建应用
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图