王雪亮 高惠芳 李小龍
摘要:為了實(shí)現(xiàn)對(duì)養(yǎng)豬場的智能化管理,設(shè)計(jì)并實(shí)現(xiàn)了基于Web的遠(yuǎn)程監(jiān)控系統(tǒng)。系統(tǒng)使用MyEclipse作為開發(fā)工具,MySQL作為數(shù)據(jù)庫,Tomcat作為Web 服務(wù)器,在Spring、Hinernate、Struts2三大框架基礎(chǔ)上開發(fā)完成。用戶通過瀏覽器訪問系統(tǒng),可查看豬舍內(nèi)的視頻監(jiān)控和環(huán)境參數(shù),并發(fā)送控制指令控制下位機(jī)以調(diào)節(jié)環(huán)境參數(shù),從而實(shí)現(xiàn)對(duì)豬場的實(shí)時(shí)監(jiān)控管理。
關(guān)鍵詞:Web遠(yuǎn)程監(jiān)控;視頻監(jiān)控;ActiveX插件;環(huán)境參數(shù)
DOIDOI:10.11907/rjdk.172398
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2018)003010004
英文摘要Abstract:In order to realize the intelligent management of pig farm, a remote monitoring system based on Web is designed and implemented.The system uses MyEclipse as a development tool, MySQL is used as a database and uses Tomcat as a Web server to be developed on the basis of the three major frameworks of Spring, Hinernate, and Struts2. Users visit the system through browser to check the video monitoring and environmental parameters in the piggery, and send control commands to control the environment parameters of the lower computer, so as to realize the realtime monitoring and management of pig farms.
英文關(guān)鍵詞Key Words:Web remote monitoring; video surveillance; ActiveX plugin; environment parameters
0引言
豬舍環(huán)境對(duì)生豬的生長、繁殖和健康起著重要作用,針對(duì)大規(guī)模養(yǎng)殖中豬舍環(huán)境惡劣的現(xiàn)象,本文設(shè)計(jì)了一種基于Web的豬舍環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)[13]。此系統(tǒng)包括現(xiàn)場環(huán)境參數(shù)監(jiān)控[4]和視頻監(jiān)控,其目的在于創(chuàng)造一個(gè)適宜的豬舍環(huán)境,同時(shí)方便顧客了解豬場生豬飼養(yǎng)情況,讓大家吃上放心豬肉。
如今大多數(shù)解決方案都是基于C/S結(jié)構(gòu)設(shè)計(jì)的,用戶只有在特定位置并且打開專用客戶端才能查看豬場環(huán)境。B/S(瀏覽器/服務(wù)器)架構(gòu)是隨著Internet的興起,對(duì)C/S(客戶端/服務(wù)器)結(jié)構(gòu)的一種改進(jìn)。B/S架構(gòu)分為三層結(jié)構(gòu):表示層、應(yīng)用層、數(shù)據(jù)層。表示層負(fù)責(zé)用戶事務(wù)的顯示,應(yīng)用層負(fù)責(zé)對(duì)用戶的操作進(jìn)行事務(wù)處理,數(shù)據(jù)層為應(yīng)用層提供相應(yīng)數(shù)據(jù)。利用B/S架構(gòu)可以在任意一臺(tái)可接入互聯(lián)網(wǎng)的計(jì)算機(jī)上實(shí)現(xiàn)豬場環(huán)境的遠(yuǎn)程監(jiān)控。系統(tǒng)實(shí)現(xiàn)了環(huán)境參數(shù)和視頻監(jiān)控的顯示,解決了只顯示單一環(huán)境參數(shù)的問題[56],從而使用戶對(duì)豬場有更直觀的了解。
網(wǎng)頁部分包括登錄頁面、當(dāng)前環(huán)境參數(shù)顯示和控制頁面、歷史數(shù)據(jù)查詢頁面、視頻監(jiān)控頁面。每個(gè)豬舍都安裝了攝像頭,每個(gè)攝像頭對(duì)應(yīng)的IP、端口都保存在數(shù)據(jù)庫中,用戶可以根據(jù)需要在前端頁面進(jìn)行攝像頭的切換。為了實(shí)現(xiàn)無刷新下的數(shù)據(jù)更新,Web前端采用Ajax異步數(shù)據(jù)交互技術(shù)與服務(wù)器進(jìn)行通信。利用監(jiān)控?cái)z像機(jī)提供的SDK開發(fā)出ActiveX控件[7],并將控件嵌入到網(wǎng)頁中,以供在瀏覽器端進(jìn)行視頻監(jiān)控顯示。
現(xiàn)在基本上所有的PC客戶端都安裝有瀏覽器,所以將前端監(jiān)控設(shè)備的監(jiān)控視頻傳輸?shù)絎eb服務(wù)器上,由用戶通過瀏覽器進(jìn)行訪問,獲取視頻監(jiān)控的數(shù)據(jù)[89],則不需要單獨(dú)在客戶端安裝軟件。同時(shí)對(duì)于視頻播放控件的更新,只用將更新后的控件放在Web服務(wù)器上,瀏覽器則會(huì)對(duì)用戶進(jìn)行提示,用戶確定后瀏覽器即會(huì)自動(dòng)下載安裝更新到本地客戶端,減少了用戶操作步驟,提升了用戶體驗(yàn)。
1系統(tǒng)設(shè)計(jì)
1.1系統(tǒng)功能模塊設(shè)計(jì)
系統(tǒng)的功能模塊劃分為4部分,如圖1所示。
(1)用戶管理。實(shí)現(xiàn)了系統(tǒng)的用戶登錄認(rèn)證工作以及對(duì)于不同用戶的角色權(quán)限管理工作。一般用戶不用注冊(cè),直接訪問監(jiān)控頁面即可;管理員賬戶需要注冊(cè)、登錄才能訪問控制頁面,并可以查看有權(quán)限要求的攝像機(jī)。
(2)實(shí)時(shí)監(jiān)控。實(shí)現(xiàn)從前端監(jiān)控設(shè)備獲取視頻監(jiān)控信號(hào),提供實(shí)時(shí)視頻監(jiān)控的查看功能。根據(jù)IP、端口調(diào)用對(duì)應(yīng)攝像機(jī),查看不同豬舍的監(jiān)控視頻;將前端監(jiān)控設(shè)備的監(jiān)控視頻傳輸?shù)絎eb服務(wù)器上,網(wǎng)頁嵌入ActiveX控件,通過接口調(diào)用由用戶通過瀏覽器進(jìn)行訪問;還可根據(jù)需要添加、刪除攝像機(jī)。
(3)環(huán)境參數(shù)顯示。主要實(shí)現(xiàn)的功能是當(dāng)前數(shù)據(jù)的實(shí)時(shí)顯示,需要顯示的數(shù)據(jù)包括溫度、濕度、光照強(qiáng)度、二氧化碳濃度、氨氣濃度和硫化氫氣體濃度,并將歷史數(shù)據(jù)以曲線圖形式直觀地呈現(xiàn)給用戶。
(4)控制部分。能夠在網(wǎng)頁上遠(yuǎn)程控制現(xiàn)場設(shè)備的開啟,控制模式分為手動(dòng)和自動(dòng)兩種模式。
1.2系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)總體框架如圖2所示,本系統(tǒng)運(yùn)用了主流的MVC軟件開發(fā)模式和JavaBean+Struts2+Spring+Hibernate+Jsp系統(tǒng)架構(gòu)。采集的數(shù)據(jù)能夠動(dòng)態(tài)、實(shí)時(shí)地顯示在頁面上,同時(shí)在網(wǎng)頁上實(shí)現(xiàn)監(jiān)控視頻的實(shí)時(shí)顯示,在數(shù)據(jù)庫錄入攝像機(jī)的IP和端口實(shí)現(xiàn)攝像機(jī)切換。系統(tǒng)在正常工作的情況下,能夠在網(wǎng)頁上查看歷史數(shù)據(jù),并將歷史數(shù)據(jù)以曲線圖形式直觀地顯示出來,以便更好地掌握豬舍環(huán)境的變化。
2系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)為實(shí)現(xiàn)客戶端使用瀏覽器訪問Web服務(wù)器功能,使用了B/S模式??蛻魴C(jī)使用瀏覽器訪問部署在服務(wù)器上的平臺(tái)系統(tǒng),按提示下載CA認(rèn)證根證書并安裝。瀏覽器自動(dòng)將ActiveX控件下載安裝到客戶端。安裝完畢后,用戶即可通過該控件與視頻監(jiān)控前端通信,獲取實(shí)時(shí)視頻監(jiān)控信息,從而實(shí)現(xiàn)相關(guān)功能。本系統(tǒng)使用的前端監(jiān)控設(shè)備為??低暪旧a(chǎn)的監(jiān)控設(shè)備。該設(shè)備帶有配套的視頻監(jiān)控存儲(chǔ)服務(wù)器和相關(guān)功能的SDK包,本系統(tǒng)只需根據(jù)該SDK包進(jìn)行二次開發(fā),編寫ActiveX控件調(diào)用其SDK包中的接口方法,即可獲取該前端監(jiān)控設(shè)備上的監(jiān)控視頻信號(hào)實(shí)現(xiàn)實(shí)時(shí)預(yù)覽,之后在Web頁面上的相應(yīng)位置嵌入ActiveX控件代碼。
2.1視頻監(jiān)控模塊實(shí)現(xiàn)
因?yàn)楸鞠到y(tǒng)視頻實(shí)時(shí)監(jiān)控模塊終端采用的是海康威視的設(shè)備,所以AetiveX控件的開發(fā)都是直接調(diào)用該公司提供的SDK包內(nèi)的各種接口函數(shù),ActiveX控件的執(zhí)行流程如圖3所示。
瀏覽器在解析頁面時(shí),如果發(fā)現(xiàn)有ActiveX控件的嵌入代碼,會(huì)檢查ActiveX控件的安全性,如果安全,則會(huì)提示用戶下載該控件,下載完成后即按照與控件打包在一起的控件安裝文件INF的指示進(jìn)行安裝。頁面中嵌入ActiveX控件的代碼為:
var humid=msg.huanjingcanshulist[0].humid;
var light=msg.huanjingcanshulist[0].light;
var co2=msg.huanjingcanshulist[0].co2;
var h2s=msg.huanjingcanshulist[0].h2s;
var nh3=msg.huanjingcanshulist[0].nh3;
MYM("#temp").val(temp);
MYM("#humid").val(humid);
MYM("#light").val(light);
MYM("#co2").val(co2);
MYM("#h2s").val(h2s);
MYM("#nh3").val(nh3);},
error:function(){alert("查詢失敗!");}}); }
監(jiān)控視頻的查看則調(diào)用嵌入頁面的ActiveX控件實(shí)現(xiàn)。在查詢歷史環(huán)境頁面輸入框輸入開始時(shí)間與結(jié)束時(shí)間,點(diǎn)擊查看歷史數(shù)據(jù)時(shí),Ajax和后臺(tái)通信查詢這段時(shí)間的歷史記錄,利用Struts2的Struts2jsonPlugin.jar插件返回JSON數(shù)據(jù),前端頁面fusioncharts框架利用返回的JSON數(shù)據(jù)繪制曲線圖,使用戶能直觀地查看這段時(shí)間內(nèi)的豬場環(huán)境。服務(wù)器端查詢并返回JSON數(shù)據(jù)代碼如下:
List
List
//接下來把查詢字段封裝到map集合,轉(zhuǎn)換成JSON格式。遍歷list集合封裝到map集合
if(lishico2list != null && lishico2list.size()>0){
for(HuanJingCanShu obj: lishico2list){
xxx}}
JSONObject jso = new JSONObject();
jso.accumulate("lishihs2list", resList);
HttpServletResponse response = ServletActionContext.getResponse();
xxx
outputStream.write(jso.toString().getBytes("utf-8"));
outputStream.close();
3系統(tǒng)測試
在配置完Tomcat服務(wù)器后,需要在瀏覽器上輸入網(wǎng)址,測試Web服務(wù)器是否能正常工作。本系統(tǒng)登錄頁面加入了用戶身份驗(yàn)證,當(dāng)輸入的用戶名或密碼錯(cuò)誤時(shí)會(huì)提示輸入錯(cuò)誤,并且系統(tǒng)登錄失敗。
通過登錄頁面進(jìn)入本系統(tǒng)后跳轉(zhuǎn)到環(huán)境頁面,環(huán)境頁面上能夠顯示當(dāng)前各環(huán)境參數(shù)值,通過點(diǎn)擊控制模式按鈕,可以選擇自動(dòng)控制或手動(dòng)控制。頁面能夠正常顯示和發(fā)送控制信號(hào),說明整個(gè)軟件系統(tǒng)正常工作。
歷史數(shù)據(jù)頁面使用Fusioncharts對(duì)各個(gè)歷史環(huán)境參數(shù)數(shù)據(jù)進(jìn)行繪圖,并使用曲線圖展示出來,使用戶對(duì)歷史環(huán)境一目了然。這里輸入開始時(shí)間、結(jié)束時(shí)間,點(diǎn)擊歷史溫度按鈕曲線圖如圖7所示。
進(jìn)行視頻監(jiān)控測試時(shí),進(jìn)入視頻監(jiān)控頁面安裝好ActiveX控件后,頁面即出現(xiàn)視頻監(jiān)控小窗,說明ActiveX控件成功安裝。用戶選擇在不同攝像頭下播放按鈕,前端監(jiān)控設(shè)備則會(huì)把實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)傳遞給Web服務(wù)器,由Web服務(wù)器再發(fā)送到客戶機(jī)的瀏覽器上。
4結(jié)語
本文設(shè)計(jì)并實(shí)現(xiàn)了基于Web的遠(yuǎn)程豬舍監(jiān)控系統(tǒng),系統(tǒng)采用MySQL作為數(shù)據(jù)庫,Tomcat作為Web服務(wù)器,并使用Spring、Hinernate、Struts2三大框架對(duì)系統(tǒng)進(jìn)行搭建。系統(tǒng)以網(wǎng)頁作為數(shù)據(jù)顯示和控制的主頁面,主要采用Ajax異步數(shù)據(jù)交互技術(shù)實(shí)現(xiàn)與后臺(tái)通信;使用ActiveX控件對(duì)??倒镜那岸吮O(jiān)控設(shè)備進(jìn)行二次開發(fā),調(diào)用其提供的接口函數(shù),完成實(shí)時(shí)監(jiān)控視頻的預(yù)覽功能;對(duì)監(jiān)控系統(tǒng)的Web前端頁面進(jìn)行了設(shè)計(jì)和實(shí)現(xiàn),主要使用Javascript語言調(diào)用ActiveX控件對(duì)象的響應(yīng)函數(shù)。用戶通過瀏覽器訪問系統(tǒng),可查看豬舍內(nèi)的視頻監(jiān)控和環(huán)境參數(shù),并可發(fā)送控制指令控制下位機(jī)調(diào)節(jié)環(huán)境參數(shù),從而實(shí)現(xiàn)了用戶隨時(shí)隨地對(duì)豬舍的查看與控制。
參考文獻(xiàn)參考文獻(xiàn):
[1]熊偉.基于web的視頻監(jiān)控平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2014.
[2]林光源,張國平,高雪蓮,等.基于JavaWeb的遠(yuǎn)程庫房環(huán)境監(jiān)控系統(tǒng)[J].信息技術(shù),2017(5):5055.
[3]陳誠.基于Web的節(jié)水灌溉遠(yuǎn)程監(jiān)控系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2017(6):8083.
[4]李榮國,王見.MySQL數(shù)據(jù)庫在自動(dòng)測試系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2011,31(z2):169171,175.
[5]趙娟.雞舍環(huán)境參數(shù)檢測及管理系統(tǒng)的研究[D].保定:河北農(nóng)業(yè)大學(xué),2011.
[6]周翔.基于SSH框架的網(wǎng)絡(luò)集成化樓宇視頻監(jiān)控平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].南昌:東華理工大學(xué),2015.
[7]郭永瑞,孫朋德.ActiveX控件的編寫和使用[J].科技信息:科學(xué)教研,2007(22):4849.
[8]SAMUEL DAYO OKEGBILE,ADENIRAN ISHOLA OLUWARANTI,ADEKUNLE ADERIBIGBE.Web based automatic soil chemical contents monitoring system[J].International Journal of Advanced Pervasive and Ubiquitous Computing (IJAPUC),2016,8(1):4145.
[9]FRANCESCO FROSINI,ROBERTO MINIATI,PAOLO AVEZZANO, et al. Development of a Web based monitoring system for safety and activity analysis in operating theatres[J]. Technology and Health Care,2016,24(1):6368.
責(zé)任編輯(責(zé)任編輯:黃?。?