• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android平臺(tái)的智能養(yǎng)殖監(jiān)控客戶端設(shè)計(jì)與實(shí)現(xiàn)

      2018-09-04 09:37:16曹文麗高惠芳秦會(huì)斌李小龍
      軟件導(dǎo)刊 2018年6期
      關(guān)鍵詞:視頻監(jiān)控

      曹文麗 高惠芳 秦會(huì)斌 李小龍

      摘 要:為了改善大規(guī)模生豬養(yǎng)殖管理混亂、環(huán)境惡劣等問(wèn)題,滿足管理系統(tǒng)便攜性與時(shí)效性需求,設(shè)計(jì)開(kāi)發(fā)了基于Android的豬舍實(shí)時(shí)監(jiān)控客戶端。該系統(tǒng)不僅可以觀測(cè)豬欄實(shí)時(shí)環(huán)境參數(shù),還可根據(jù)不同情況作出最佳環(huán)境控制,對(duì)豬舍進(jìn)行視頻監(jiān)控。具有智能提醒功能,設(shè)置各環(huán)境因子閾值,持續(xù)超標(biāo)對(duì)象將被推送至客戶端,供管理者及時(shí)調(diào)整相關(guān)控制設(shè)備。測(cè)試表明:該客戶端系統(tǒng)運(yùn)行穩(wěn)定,用戶可實(shí)時(shí)監(jiān)測(cè)和調(diào)控豬舍環(huán)境。

      7關(guān)鍵詞:Android;視頻監(jiān)控;生產(chǎn)預(yù)警;環(huán)境監(jiān)控;WebSocket

      DOI:10.11907/rjdk.172912

      中圖分類號(hào):TP319

      文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 引言

      隨著人工智能的出現(xiàn),遠(yuǎn)程遙控、智能養(yǎng)殖進(jìn)入養(yǎng)豬行業(yè)。盡管Web遠(yuǎn)程監(jiān)控是移動(dòng)監(jiān)控的基石 [1],但實(shí)時(shí)性差。個(gè)人手持設(shè)備飛快發(fā)展,遠(yuǎn)程控制的實(shí)時(shí)、便攜功能日趨重要,智能養(yǎng)殖、現(xiàn)代化生產(chǎn)越來(lái)越依賴于這種方式。為此,本文設(shè)計(jì)了基于Android的豬舍監(jiān)控客戶端系統(tǒng),最大限度地滿足智能信息時(shí)代需求。該客戶端可實(shí)時(shí)查看各種數(shù)據(jù),控制豬舍環(huán)境參數(shù),實(shí)現(xiàn)生產(chǎn)資料的增、刪、改、查,接收預(yù)警消息推送,查看實(shí)時(shí)監(jiān)控視頻,實(shí)現(xiàn)對(duì)豬舍的智能控制。

      1 監(jiān)控系統(tǒng)

      監(jiān)控系統(tǒng)分為本地監(jiān)控(環(huán)境參數(shù)采集前端、控制模塊)、平臺(tái)服務(wù)器(云服務(wù)器、視頻服務(wù)器)以及Android終端等模塊[2],系統(tǒng)總體架構(gòu)如圖1所示。

      Android端提供交互界面,通過(guò)云服務(wù)器轉(zhuǎn)發(fā)消息至本地監(jiān)控端,本地監(jiān)控端控制設(shè)備調(diào)節(jié)環(huán)境[3]。

      1.1 實(shí)時(shí)數(shù)據(jù)、消息及預(yù)警

      如圖2所示,Android端和本地監(jiān)控端分別通過(guò)WebSocket協(xié)議與云服務(wù)器建立雙向通信,實(shí)現(xiàn)將Android客戶端的控制消息通過(guò)云服務(wù)器轉(zhuǎn)發(fā)給本地監(jiān)控端進(jìn)行環(huán)境控制。同時(shí),本地監(jiān)控端通過(guò)云服務(wù)器將實(shí)時(shí)參數(shù)、控制命令的響應(yīng)消息以及環(huán)境異常的預(yù)警消息轉(zhuǎn)發(fā)至Android終端[4]。

      1.2 歷史數(shù)據(jù)

      本地監(jiān)控端將采集到的環(huán)境數(shù)據(jù)通過(guò)WebSocket上傳至云服務(wù)器豬場(chǎng)數(shù)據(jù)庫(kù),Android終端用戶注冊(cè)并登陸驗(yàn)證,將請(qǐng)求參數(shù)進(jìn)行JSON封裝,向云服務(wù)器發(fā)送HttpClient接口的Post請(qǐng)求[5],云服務(wù)器通過(guò)Hibernate操作數(shù)據(jù)庫(kù),獲取請(qǐng)求數(shù)據(jù),返回至Android終端。Android終端接收數(shù)據(jù)并進(jìn)行JSON解析、處理以及UI顯示。

      2 Android客戶端設(shè)計(jì)與實(shí)現(xiàn)

      2.1 客戶端

      客戶端主要功能為視頻監(jiān)控、生產(chǎn)管理和環(huán)境監(jiān)控,各模塊詳細(xì)功能如圖3所示。

      2.1.1 登錄模塊

      用戶首次使用時(shí),需要注冊(cè)賬號(hào)并保存至數(shù)據(jù)庫(kù)table_user_piggery表中,用戶下次登錄進(jìn)行安全驗(yàn)證。登錄時(shí),首先對(duì)用戶輸入進(jìn)行格式審查,然后提供自動(dòng)登錄、記住密碼等選項(xiàng),對(duì)登錄信息進(jìn)行加密,高級(jí)用戶還可修改其他用戶權(quán)限。

      2.1.2 視頻監(jiān)控

      視頻采集前端使用??档腎PC,因此這部分是基于??礢DK的二次開(kāi)發(fā)。在Android終端,有權(quán)限用戶登陸成功后,點(diǎn)擊所要預(yù)覽的豬欄號(hào)即可進(jìn)入目標(biāo)豬欄視頻監(jiān)控頁(yè)。豬舍監(jiān)控客戶端系統(tǒng)設(shè)計(jì)了VideoDiapalyActivity.java類,根據(jù)用戶選擇的豬欄號(hào)獲取相應(yīng)豬欄的視頻數(shù)據(jù),由UI線程呈現(xiàn)給用戶,在 VideoDiapalyActivity.java類中使用Android網(wǎng)絡(luò)庫(kù)中NET_DVR_Login_V30接口(使用IP地址或靜態(tài)域名均可)與設(shè)備建立遠(yuǎn)程連接,然后使用NET_DVR_RealPlay_V40接口實(shí)時(shí)預(yù)覽,音、視頻解碼,得到豬舍的二進(jìn)制音、視頻數(shù)據(jù),然后使用Android播放庫(kù)中PLAY接口將豬舍視頻顯示到SurfaceView上,進(jìn)行實(shí)時(shí)預(yù)覽和下載等操作。

      2.1.3 生產(chǎn)管理模塊

      對(duì)豬場(chǎng)的豬只、飼料、藥品、設(shè)備、員工、客戶、收支等生產(chǎn)資料進(jìn)行增、刪、改、查,統(tǒng)計(jì)分析以及數(shù)據(jù)批量錄入,用戶可通過(guò)(條形碼/二維碼)“掃一掃”或“搜索相關(guān)物料”,查看庫(kù)存量和流水賬單,使用表格、餅狀圖、折線圖等方式展現(xiàn)分析結(jié)果,用戶可直觀地掌握養(yǎng)豬場(chǎng)內(nèi)各生產(chǎn)資料的詳細(xì)情況。此外,對(duì)特殊的生產(chǎn)工作,如藥品過(guò)期、養(yǎng)殖物的繁殖和育種、疫病防御等,系統(tǒng)給予用戶生產(chǎn)預(yù)警,提示重要工作距離當(dāng)前的時(shí)間,并將不足一日期限的工作重點(diǎn)標(biāo)記,登錄后立即彈出預(yù)警提醒對(duì)話框,輔助用戶安排工作。

      2.1.4 環(huán)境監(jiān)控模塊

      包括環(huán)境因子的實(shí)時(shí)預(yù)覽、調(diào)控、歷史查詢(表格式和折線圖式)、超標(biāo)報(bào)警等主要模塊。

      其中超標(biāo)報(bào)警基于WebSocket協(xié)議實(shí)現(xiàn),Android終端連接云服務(wù)器與之保持長(zhǎng)連接,定時(shí)檢測(cè)數(shù)據(jù)庫(kù)中當(dāng)前時(shí)間的前t秒內(nèi)新采集的數(shù)據(jù)是否超標(biāo),將超標(biāo)信息進(jìn)行封裝后通過(guò)云服務(wù)器轉(zhuǎn)發(fā)給Android終端,實(shí)現(xiàn)邏輯如圖4所示,用戶可根據(jù)采集數(shù)據(jù)的間隔選擇每次檢測(cè)的時(shí)段。

      Android終端接收到報(bào)警消息后,默認(rèn)在狀態(tài)欄保留一天。客戶端將預(yù)警消息進(jìn)行備份,接收?qǐng)?bào)警后立即將消息保存至數(shù)據(jù)庫(kù)table_history_environment_warning表中,便于后期預(yù)警分析。用戶點(diǎn)擊即可查看詳細(xì)信息,根據(jù)意愿選擇是否手動(dòng)調(diào)整環(huán)境參數(shù)。若選擇手動(dòng)控制,則立即向本地監(jiān)控端發(fā)送控制命令,進(jìn)而實(shí)現(xiàn)Android端豬舍環(huán)境的遠(yuǎn)程調(diào)控。

      2.1.5 其它功能

      如版本更新檢測(cè)、下載和安裝、意見(jiàn)反饋、清除緩存、頭像設(shè)置、上傳和下載、養(yǎng)殖資訊、初始數(shù)據(jù)的批量錄入等等。

      2.2 客戶端通信模塊設(shè)計(jì)

      Android端主要實(shí)現(xiàn)與云服務(wù)器通訊,根據(jù)Android端用戶請(qǐng)求類型選擇通信對(duì)象和方式,詳細(xì)交互過(guò)程如圖5所示。

      (1)用戶登錄和注冊(cè)。首先使用正則表達(dá)式對(duì)用戶輸入進(jìn)行檢查,然后使用RSA非對(duì)稱加密方式對(duì)用戶名和密碼進(jìn)行加密和Base64編碼,客戶端使用公鑰加密,服務(wù)端使用相應(yīng)的私鑰進(jìn)行解密[6],并在服務(wù)端使用Filter進(jìn)行攔截。如果用戶登錄成功,系統(tǒng)會(huì)把用戶ID放入HTTP session中,方便跟蹤登錄狀態(tài),敏感操作都要驗(yàn)證HTTP session中的userId,成功后才允許加入,避免反編譯Android應(yīng)用等危害系統(tǒng)安全的操作。

      (2)建立WebSocket連接,接收實(shí)時(shí)參數(shù)。開(kāi)啟消息推送監(jiān)聽(tīng)Service,注冊(cè)廣播接收器,等待接收環(huán)境超標(biāo)報(bào)警通知,設(shè)計(jì)MyWebsocketClient工具類與云服務(wù)器建立WebSocket連接,查詢本地監(jiān)控端是否在線,不在線時(shí)提醒Android終端用戶,在線時(shí)進(jìn)入監(jiān)控主頁(yè)面[7]。

      (3)環(huán)境控制。基于WebSocket協(xié)議設(shè)計(jì)了MyWebsocketClient單例類作為Android終端的WebSocket客戶端,實(shí)現(xiàn)Android終端與云服務(wù)器的雙向通信,間接實(shí)現(xiàn)與本地監(jiān)控端的雙向通信[8]。

      控制消息發(fā)送:Android端用戶選擇要調(diào)控的參數(shù),由ControlMessageManager()按用戶選擇將控制信息根據(jù)自定義協(xié)議格式進(jìn)行封裝。消息頭:參數(shù)username,根據(jù)username識(shí)別消息的源客戶端。消息內(nèi)容:定義一個(gè)長(zhǎng)度為7的字符串?dāng)?shù)組,按照temp,humid,light,co2,h2s,nh3,room的順序設(shè)置要調(diào)整的參數(shù)值,不調(diào)整的參數(shù)默認(rèn)為0,將該字符串?dāng)?shù)組拼接成“28,0,0,0,0,0,1號(hào)舍”樣式字符串。通過(guò)WebSocket發(fā)送至云服務(wù)器,通過(guò)云服務(wù)端轉(zhuǎn)發(fā)至本地監(jiān)控端。

      回復(fù)消息:本地端收到Android端的控制消息后,解析參數(shù)username得到發(fā)送消息的源客戶端,即回復(fù)消息的目的客戶端,成功:message=success,失?。簃essage=error,通過(guò)云服務(wù)器轉(zhuǎn)發(fā)至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();//連接云服務(wù)器

      mClient.send(commandMessage );//發(fā)送控制消息

      //在onMessage中接收云服務(wù)器轉(zhuǎn)發(fā)的回復(fù)消息,使用EventBus對(duì)象將該事件發(fā)送到接收方

      EventBus.getDefault().post(new MessageRespEvent(EventType.MESSAGE).setMessage(message));

      (4)歷史數(shù)據(jù)交互。采用JSON作為Android端與云服務(wù)端的數(shù)據(jù)交換格式[9],設(shè)計(jì)MyHttpUtil類對(duì)Apache HttpClient進(jìn)行封裝,定義postRequest()和getRequest()方法發(fā)送請(qǐng)求,在參數(shù)較多時(shí),使用List進(jìn)行封裝[10],部分核心代碼如下:

      FutureTask taskPig = new FutureTask( new Callable() {

      @Override

      public String call() throws Exception {

      HttpPost postPig = new HttpPost(url);

      List params = new ArrayList<>();

      for (String key : rawParams.keySet()) {

      params.add(new BasicNameValuePair(key ,rawParams.get(key)));}//封裝參數(shù)

      postPig .setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));// 設(shè)置參數(shù)

      httpResponse = httpClient.execute(postPig);//發(fā)送請(qǐng)求

      … } } });

      new Thread(taskPig ).start();

      (5)用戶輸入非法(包括格式、長(zhǎng)度、空)、網(wǎng)絡(luò)異常、權(quán)限不足以及登錄失效等異常處理。

      3 部分UI展示及測(cè)試分析

      客戶端作為人機(jī)交互的工具,友好、簡(jiǎn)潔、靈活是前提。本設(shè)計(jì)可對(duì)各個(gè)豬舍環(huán)境參數(shù)實(shí)時(shí)監(jiān)測(cè)和調(diào)控,對(duì)豬場(chǎng)的各類生產(chǎn)資料進(jìn)行增刪改查管理,對(duì)各個(gè)豬舍進(jìn)行視頻監(jiān)控。

      3.1 登錄、注冊(cè)

      圖6為用戶登錄和注冊(cè)界面。

      3.2 環(huán)境監(jiān)控模塊

      如圖7所示,圖7(a)為實(shí)時(shí)顯示環(huán)境,依次為6個(gè)被控因子的實(shí)時(shí)值,用戶下拉可刷新界面;圖7(b)為歷史環(huán)境變化趨勢(shì)及調(diào)控選擇,用戶可根據(jù)各個(gè)參數(shù)提示的最佳范圍選擇調(diào)整參數(shù)值。為了避免因用戶操作失誤導(dǎo)致不必要的損失,限制用戶只能選擇限定的調(diào)整數(shù)值,由本地監(jiān)控端控制調(diào)整幅度;圖7(c)展示了接收環(huán)境超標(biāo)報(bào)警消息推送的測(cè)試結(jié)果。圖7(c)中控制方式為手動(dòng)控制,會(huì)自動(dòng)跳轉(zhuǎn)至相應(yīng)控制頁(yè)面。用戶拖動(dòng)左側(cè)杯子中的水位,右側(cè)量尺會(huì)自動(dòng)度量拖動(dòng)的數(shù)值,點(diǎn)擊立即調(diào)整,即可向服務(wù)端發(fā)送控制命令,實(shí)時(shí)顯示調(diào)整參數(shù)值,如圖7(d)所示。

      3.3 生產(chǎn)管理模塊

      主界面設(shè)計(jì)如圖8所示。圖8(a)為生產(chǎn)管理模塊主界面,選擇左側(cè)菜單欄中物料分類,右側(cè)內(nèi)容欄則展示該分類的詳細(xì)頁(yè)面,單擊頂部圖片logo即可查看該分類的庫(kù)存明細(xì),詳細(xì)頁(yè)面logo下方展示該分類下的一些熱門(mén)物料。圖8(b)、圖8(d)則分別為生產(chǎn)資料的查詢和批量刪除操作測(cè)試結(jié)果,刪除時(shí)可選擇分類刪除或全部刪除;圖8(c)是以收支為例展示物料的統(tǒng)計(jì)分析測(cè)試結(jié)果,以扇形圖或表格等直觀形式展現(xiàn)。圖8(e)為新物料錄入;圖8(f)展示了物料的搜索,選中某一種物料即可得到其詳細(xì)資料,包括圖片介紹、型號(hào)、分類、庫(kù)存量、主要用途等。

      3.4 視頻監(jiān)控

      如圖9所示,圖9(a)為視頻監(jiān)控模塊界面,用戶雙擊圖9(b)上方視頻畫(huà)面或點(diǎn)擊播放按鈕即可進(jìn)入實(shí)時(shí)預(yù)覽,點(diǎn)擊下載按鈕可隨時(shí)將監(jiān)控視頻保存至手機(jī),圖9(c)為全屏模式下的實(shí)時(shí)預(yù)覽。

      4 結(jié)語(yǔ)

      本文設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的豬場(chǎng)監(jiān)控客戶端系統(tǒng),采用MVP模式設(shè)計(jì)了客戶端整體框架,對(duì)客戶端界面、通信模塊、數(shù)據(jù)庫(kù)等分別進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn)。筆者在實(shí)驗(yàn)室內(nèi)(外網(wǎng))對(duì)各模塊的詳細(xì)功能進(jìn)行了驗(yàn)證和測(cè)試,結(jié)果表明各功能均達(dá)到要求。該系統(tǒng)適合大中型生豬養(yǎng)殖場(chǎng)應(yīng)用,具有研發(fā)成本低、擴(kuò)展能力強(qiáng)和維護(hù)方便等優(yōu)點(diǎn),便于大范圍推廣。

      參考文獻(xiàn):

      [1] 魏煒,夏秉龍,李程程.基于Android平臺(tái)的水雨情測(cè)報(bào)系統(tǒng)客戶端設(shè)計(jì)[J].大眾科技,2017,19(1):14-21.

      [2] 曾劍鋒,蘇娟.基于Android平臺(tái)的汽車油量監(jiān)控報(bào)警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(3):324-328.

      [3] 譚峰,薛齡季軒,姜珊,等.基于云平臺(tái)的棚室環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)[J].牡丹江師范學(xué)院學(xué)報(bào):自然科學(xué)版,2017(2):6-10.

      [4] 陳建剛,黃國(guó)偉,蔡鴻鑫,等.基于WebSocket的多功能智能設(shè)備遠(yuǎn)程控制[J].計(jì)算機(jī)與現(xiàn)代化,2016(12):97-101.

      [5] 黃超瓊,王天寶,陳超,等.基于安卓的智慧農(nóng)業(yè)APP設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2015,14(1):1-3.

      [6] 秦利紅,秦會(huì)斌,諸堅(jiān)彬,等.基于Android平臺(tái)智能家居客戶端的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(9):88-126.

      [7] 王佃來(lái),宿愛(ài)霞,安晏輝.基于WebSocket的消息推送系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(9):87-92.

      [8] 廖海波,杜亮,鄭方雄,等.WebSocket在智能家居遠(yuǎn)程監(jiān)測(cè)系統(tǒng)中的研究與應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(7):12-18.

      [9] 劉望,常波.基于Android的校園學(xué)生信息服務(wù)APP開(kāi)發(fā)[J].軟件導(dǎo)刊,2016,15(6):83-85.

      [10] 金永奎,袁圓,顏愛(ài)忠.基于Android的高效節(jié)水灌溉遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)[J].中國(guó)農(nóng)機(jī)化學(xué)報(bào),2016,37(4):202-206.

      (責(zé)任編輯:杜能鋼)

      猜你喜歡
      視頻監(jiān)控
      基于視頻圖像采集移動(dòng)目標(biāo)檢測(cè)系統(tǒng)的設(shè)計(jì)
      數(shù)字化監(jiān)控系統(tǒng)的企業(yè)應(yīng)用
      廣東地區(qū)輸電線路在線監(jiān)測(cè)技術(shù)應(yīng)用探究
      基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      基于HTML5的視頻監(jiān)控微課設(shè)計(jì)淺析
      智能視頻檢索技術(shù)在校園安防建設(shè)中的發(fā)展應(yīng)用
      东港市| 西丰县| 曲阳县| 理塘县| 蒙山县| 凯里市| 肃宁县| 南昌市| 盐边县| 五指山市| 舞钢市| 瑞丽市| 湄潭县| 新野县| 西吉县| 平远县| 莲花县| 渭南市| 庆城县| 盈江县| 枣庄市| 门头沟区| 莱州市| 大城县| 财经| 渭南市| 西林县| 新余市| 印江| 怀化市| 当涂县| 延川县| 沂南县| 乐东| 广宁县| 和林格尔县| 屯留县| 康马县| 治县。| 秦安县| 唐海县|