基于Android平台的智能养殖监控客户端设计与实现
2018-09-04曹文丽高惠芳秦会斌李小龙
曹文丽 高惠芳 秦会斌 李小龙
摘 要:为了改善大规模生猪养殖管理混乱、环境恶劣等问题,满足管理系统便携性与时效性需求,设计开发了基于Android的猪舍实时监控客户端。该系统不仅可以观测猪栏实时环境参数,还可根据不同情况作出最佳环境控制,对猪舍进行视频监控。具有智能提醒功能,设置各环境因子阈值,持续超标对象将被推送至客户端,供管理者及时调整相关控制设备。测试表明:该客户端系统运行稳定,用户可实时监测和调控猪舍环境。
7关键词:Android;视频监控;生产预警;环境监控;WebSocket
DOI:10.11907/rjdk.172912
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2018)006-0124-04
Abstract:In order to improve ill-manegement, dirty environment and other defects of large and medium-sized pig breeding, to cater to the pursuit of portability and timeliness of breeders, the real-time monitoring of piggery based on Android is proposed, real-time piggery monitoring client based on Android is designed and developted. Not only the real-time environment parameters can be all observed in the pigsty, but reasonable control also can be maded according to the suitable range of different circustances, real-time management of the more important means of production, video surveillance to overall situation about the piggery. There′s also intelligent reminder, according to the thresholds of environmental factors, the continued overproof object to be pushed to the client for user to adjust timely. Tests show that this client system runs stably, and users can operate on real-time normally.
Key Words:android; video surveillance; production early-warning; environment monitoring; websocket
0 引言
隨着人工智能的出现,远程遥控、智能养殖进入养猪行业。尽管Web远程监控是移动监控的基石 [1],但实时性差。个人手持设备飞快发展,远程控制的实时、便携功能日趋重要,智能养殖、现代化生产越来越依赖于这种方式。为此,本文设计了基于Android的猪舍监控客户端系统,最大限度地满足智能信息时代需求。该客户端可实时查看各种数据,控制猪舍环境参数,实现生产资料的增、删、改、查,接收预警消息推送,查看实时监控视频,实现对猪舍的智能控制。
1 监控系统
监控系统分为本地监控(环境参数采集前端、控制模块)、平台服务器(云服务器、视频服务器)以及Android终端等模块[2],系统总体架构如图1所示。
Android端提供交互界面,通过云服务器转发消息至本地监控端,本地监控端控制设备调节环境[3]。
1.1 实时数据、消息及预警
如图2所示,Android端和本地监控端分别通过WebSocket协议与云服务器建立双向通信,实现将Android客户端的控制消息通过云服务器转发给本地监控端进行环境控制。同时,本地监控端通过云服务器将实时参数、控制命令的响应消息以及环境异常的预警消息转发至Android终端[4]。
1.2 历史数据
本地监控端将采集到的环境数据通过WebSocket上传至云服务器猪场数据库,Android终端用户注册并登陆验证,将请求参数进行JSON封装,向云服务器发送HttpClient接口的Post请求[5],云服务器通过Hibernate操作数据库,获取请求数据,返回至Android终端。Android终端接收数据并进行JSON解析、处理以及UI显示。
2 Android客户端设计与实现
2.1 客户端
客户端主要功能为视频监控、生产管理和环境监控,各模块详细功能如图3所示。
2.1.1 登录模块
用户首次使用时,需要注册账号并保存至数据库table_user_piggery表中,用户下次登录进行安全验证。登录时,首先对用户输入进行格式审查,然后提供自动登录、记住密码等选项,对登录信息进行加密,高级用户还可修改其他用户权限。
2.1.2 视频监控
视频采集前端使用海康的IPC,因此这部分是基于海康SDK的二次开发。在Android终端,有权限用户登陆成功后,点击所要预览的猪栏号即可进入目标猪栏视频监控页。猪舍监控客户端系统设计了VideoDiapalyActivity.java类,根据用户选择的猪栏号获取相应猪栏的视频数据,由UI线程呈现给用户,在 VideoDiapalyActivity.java类中使用Android网络库中NET_DVR_Login_V30接口(使用IP地址或静态域名均可)与设备建立远程连接,然后使用NET_DVR_RealPlay_V40接口实时预览,音、视频解码,得到猪舍的二进制音、视频数据,然后使用Android播放库中PLAY接口将猪舍视频显示到SurfaceView上,进行实时预览和下载等操作。
2.1.3 生产管理模块
对猪场的猪只、饲料、药品、设备、员工、客户、收支等生产资料进行增、删、改、查,统计分析以及数据批量录入,用户可通过(条形码/二维码)“扫一扫”或“搜索相关物料”,查看库存量和流水账单,使用表格、饼状图、折线图等方式展现分析结果,用户可直观地掌握养猪场内各生产资料的详细情况。此外,对特殊的生产工作,如药品过期、养殖物的繁殖和育种、疫病防御等,系统给予用户生产预警,提示重要工作距离当前的时间,并将不足一日期限的工作重点标记,登录后立即弹出预警提醒对话框,辅助用户安排工作。
2.1.4 环境监控模块
包括环境因子的实时预览、调控、历史查询(表格式和折线图式)、超标报警等主要模块。
其中超标报警基于WebSocket协议实现,Android终端连接云服务器与之保持长连接,定时检测数据库中当前时间的前t秒内新采集的数据是否超标,将超标信息进行封装后通过云服务器转发给Android终端,实现逻辑如图4所示,用户可根据采集数据的间隔选择每次检测的时段。
Android终端接收到报警消息后,默认在状态栏保留一天。客户端将预警消息进行备份,接收报警后立即将消息保存至数据库table_history_environment_warning表中,便于后期预警分析。用户点击即可查看详细信息,根据意愿选择是否手动调整环境参数。若选择手动控制,则立即向本地监控端发送控制命令,进而实现Android端豬舍环境的远程调控。
2.1.5 其它功能
如版本更新检测、下载和安装、意见反馈、清除缓存、头像设置、上传和下载、养殖资讯、初始数据的批量录入等等。
2.2 客户端通信模块设计
Android端主要实现与云服务器通讯,根据Android端用户请求类型选择通信对象和方式,详细交互过程如图5所示。
(1)用户登录和注册。首先使用正则表达式对用户输入进行检查,然后使用RSA非对称加密方式对用户名和密码进行加密和Base64编码,客户端使用公钥加密,服务端使用相应的私钥进行解密[6],并在服务端使用Filter进行拦截。如果用户登录成功,系统会把用户ID放入HTTP session中,方便跟踪登录状态,敏感操作都要验证HTTP session中的userId,成功后才允许加入,避免反编译Android应用等危害系统安全的操作。
(2)建立WebSocket连接,接收实时参数。开启消息推送监听Service,注册广播接收器,等待接收环境超标报警通知,设计MyWebsocketClient工具类与云服务器建立WebSocket连接,查询本地监控端是否在线,不在线时提醒Android终端用户,在线时进入监控主页面[7]。
(3)环境控制。基于WebSocket协议设计了MyWebsocketClient单例类作为Android终端的WebSocket客户端,实现Android终端与云服务器的双向通信,间接实现与本地监控端的双向通信[8]。
控制消息发送:Android端用户选择要调控的参数,由ControlMessageManager()按用户选择将控制信息根据自定义协议格式进行封装。消息头:参数username,根据username识别消息的源客户端。消息内容:定义一个长度为7的字符串数组,按照temp,humid,light,co2,h2s,nh3,room的顺序设置要调整的参数值,不调整的参数默认为0,将该字符串数组拼接成“28,0,0,0,0,0,1号舍”样式字符串。通过WebSocket发送至云服务器,通过云服务端转发至本地监控端。
回复消息:本地端收到Android端的控制消息后,解析参数username得到发送消息的源客户端,即回复消息的目的客户端,成功:message=success,失败:message=error,通过云服务器转发至Android端。
部分核心代码如下:
public static final String WEBSOCKET_URL = "ws://"+SERVER_IP+":8080/PigHouseServer/pigwebsocket/";
MyWebsocketClient mClient = MyWebsocketClient .getSingleTon(new URI(WEBSOCKET_URL + username));
String commandMessage = ControlMessageManager(element,room,value);//消息封装
mClient.connect();//连接云服务器
mClient.send(commandMessage );//发送控制消息
//在onMessage中接收云服务器转发的回复消息,使用EventBus对象将该事件发送到接收方
EventBus.getDefault().post(new MessageRespEvent(EventType.MESSAGE).setMessage(message));
(4)历史数据交互。采用JSON作为Android端与云服务端的数据交换格式[9],设计MyHttpUtil类对Apache HttpClient进行封装,定义postRequest()和getRequest()方法发送请求,在参数较多时,使用List
FutureTask
@Override
public String call() throws Exception {
HttpPost postPig = new HttpPost(url);
List
for (String key : rawParams.keySet()) {
params.add(new BasicNameValuePair(key ,rawParams.get(key)));}//封装参数
postPig .setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));// 设置参数
httpResponse = httpClient.execute(postPig);//发送请求
… } } });
new Thread(taskPig ).start();
(5)用户输入非法(包括格式、长度、空)、网络异常、权限不足以及登录失效等异常处理。
3 部分UI展示及测试分析
客户端作为人机交互的工具,友好、简洁、灵活是前提。本设计可对各个猪舍环境参数实时监测和调控,對猪场的各类生产资料进行增删改查管理,对各个猪舍进行视频监控。
3.1 登录、注册
图6为用户登录和注册界面。
3.2 环境监控模块
如图7所示,图7(a)为实时显示环境,依次为6个被控因子的实时值,用户下拉可刷新界面;图7(b)为历史环境变化趋势及调控选择,用户可根据各个参数提示的最佳范围选择调整参数值。为了避免因用户操作失误导致不必要的损失,限制用户只能选择限定的调整数值,由本地监控端控制调整幅度;图7(c)展示了接收环境超标报警消息推送的测试结果。图7(c)中控制方式为手动控制,会自动跳转至相应控制页面。用户拖动左侧杯子中的水位,右侧量尺会自动度量拖动的数值,点击立即调整,即可向服务端发送控制命令,实时显示调整参数值,如图7(d)所示。
3.3 生产管理模块
主界面设计如图8所示。图8(a)为生产管理模块主界面,选择左侧菜单栏中物料分类,右侧内容栏则展示该分类的详细页面,单击顶部图片logo即可查看该分类的库存明细,详细页面logo下方展示该分类下的一些热门物料。图8(b)、图8(d)则分别为生产资料的查询和批量删除操作测试结果,删除时可选择分类删除或全部删除;图8(c)是以收支为例展示物料的统计分析测试结果,以扇形图或表格等直观形式展现。图8(e)为新物料录入;图8(f)展示了物料的搜索,选中某一种物料即可得到其详细资料,包括图片介绍、型号、分类、库存量、主要用途等。
3.4 视频监控
如图9所示,图9(a)为视频监控模块界面,用户双击图9(b)上方视频画面或点击播放按钮即可进入实时预览,点击下载按钮可随时将监控视频保存至手机,图9(c)为全屏模式下的实时预览。
4 结语
本文设计并实现了基于Android平台的猪场监控客户端系统,采用MVP模式设计了客户端整体框架,对客户端界面、通信模块、数据库等分别进行了设计与实现。笔者在实验室内(外网)对各模块的详细功能进行了验证和测试,结果表明各功能均达到要求。该系统适合大中型生猪养殖场应用,具有研发成本低、扩展能力强和维护方便等优点,便于大范围推广。
参考文献:
[1] 魏炜,夏秉龙,李程程.基于Android平台的水雨情测报系统客户端设计[J].大众科技,2017,19(1):14-21.
[2] 曾剑锋,苏娟.基于Android平台的汽车油量监控报警系统的设计与实现[J].计算机应用与软件,2017,34(3):324-328.
[3] 谭峰,薛龄季轩,姜珊,等.基于云平台的棚室环境远程监控系统[J].牡丹江师范学院学报:自然科学版,2017(2):6-10.
[4] 陈建刚,黄国伟,蔡鸿鑫,等.基于WebSocket的多功能智能设备远程控制[J].计算机与现代化,2016(12):97-101.
[5] 黄超琼,王天宝,陈超,等.基于安卓的智慧农业APP设计与实现[J].软件导刊,2015,14(1):1-3.
[6] 秦利红,秦会斌,诸坚彬,等.基于Android平台智能家居客户端的设计与实现[J].计算机应用与软件,2016,33(9):88-126.
[7] 王佃来,宿爱霞,安晏辉.基于WebSocket的消息推送系统[J].计算机系统应用,2017,26(9):87-92.
[8] 廖海波,杜亮,郑方雄,等.WebSocket在智能家居远程监测系统中的研究与应用[J].微型机与应用,2017,36(7):12-18.
[9] 刘望,常波.基于Android的校园学生信息服务APP开发[J].软件导刊,2016,15(6):83-85.
[10] 金永奎,袁圆,颜爱忠.基于Android的高效节水灌溉远程监控系统设计及实现[J].中国农机化学报,2016,37(4):202-206.
(责任编辑:杜能钢)