任碩果 黃冬貴
摘 要:在農(nóng)業(yè)大棚中布置合理的無線傳感器節(jié)點,采集大棚內(nèi)空氣溫濕度、土壤溫濕度、光照強度和二氧化碳濃度等環(huán)境數(shù)據(jù),通過無線中繼將環(huán)境數(shù)據(jù)傳輸?shù)街骺貦C(jī)房,該文開發(fā)基于Android的大棚環(huán)境監(jiān)測軟件,通過4G移動通信信號實現(xiàn)在手機(jī)或平板電腦上遠(yuǎn)程移動訪問并控制大棚內(nèi)的環(huán)境指標(biāo),使農(nóng)作物處于最佳生長環(huán)境,提高農(nóng)作物的產(chǎn)量和農(nóng)業(yè)生產(chǎn)效率。
關(guān)鍵詞:大棚 環(huán)境監(jiān)測 Android
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2019)01(a)-00-02
農(nóng)業(yè)生產(chǎn)中,農(nóng)作物的生長環(huán)境對作物的產(chǎn)量起著至關(guān)重要的作用。該文開發(fā)了基于Android的大棚環(huán)境監(jiān)測軟件,通過4G移動通信信號,實現(xiàn)在手機(jī)或平板電腦上遠(yuǎn)程獲取并控制大棚內(nèi)的環(huán)境指標(biāo)。首先在農(nóng)業(yè)大棚內(nèi)布置合理的無線傳感器節(jié)點,采集大棚內(nèi)空氣溫濕度、土壤溫濕度、光照強度和二氧化碳濃度等環(huán)境數(shù)據(jù),通過無線中繼,將傳感器采集的數(shù)據(jù)傳送到主控機(jī)房,主控機(jī)房的服務(wù)器端與移動手機(jī)客戶端的連接采用4G通信信號。大棚中的傳感器數(shù)據(jù)不間斷地發(fā)送到主控機(jī)房,手機(jī)客戶端可以通過環(huán)境監(jiān)測APP隨時訪問服務(wù)器,獲取大棚內(nèi)環(huán)境數(shù)據(jù),同時手機(jī)APP還可以遠(yuǎn)程控制大棚內(nèi)的無線智能插座和無線電磁閥來開啟或關(guān)閉風(fēng)機(jī)、加熱器、遮陽網(wǎng)和水泵等設(shè)備,實現(xiàn)大棚內(nèi)環(huán)境指標(biāo)的智能調(diào)節(jié),使農(nóng)作物生長在最優(yōu)的環(huán)境中,農(nóng)產(chǎn)品的產(chǎn)量和質(zhì)量得到了很大提高,同時也降低了人力、物力的投入,提高了勞動生產(chǎn)率。
1 設(shè)計環(huán)境監(jiān)測軟件的Http服務(wù)器
在環(huán)境監(jiān)測軟件的服務(wù)器端設(shè)計一個Http服務(wù)器,支持客戶端jason格式的數(shù)據(jù)請求。只有是http post請求時,才讀取請求數(shù)據(jù),解析出協(xié)議類型、請求名稱和請求body三組數(shù)據(jù),根據(jù)協(xié)議類型和請求名稱返回http響應(yīng)消息。
public Response serve(IHTTPSession session)
{
String httpResp = "";
String strBody = "";
//當(dāng)前是http post請求時,才讀取http body
if(session.getMethod() == Method.POST){
strBody = parsebody(session);
}
//讀取請求 url
String strUrl = session.getUri();
//解析出請求名稱和協(xié)議類型
String actionName = "";
String actionType = "";
String tmpArray[] = strUrl.split("/");
for(int i=0; i { String str = tmpArray[i]; if(str.equals("type")){ actionType = tmpArray[i+1]; } if(str.equals("action")){ actionName = tmpArray[i+1]; } } //根據(jù)協(xié)議類型,請求名稱和解析內(nèi)容,返回Http響應(yīng)消息 httpResp = BaseAction.disposeAction("http",actionType, actionName, strBody, context, headers.get("remote-addr").toString()); return new NanoHTTPD.Response(httpResp); } 2 設(shè)計環(huán)境監(jiān)測軟件客戶端的請求線程 環(huán)境監(jiān)測軟件客戶端獲取傳感器數(shù)據(jù)的請求或開閉受控設(shè)備的請求,是通過執(zhí)行請求線程實現(xiàn)的, 該線程既可以執(zhí)行一次,也可以循環(huán)重復(fù)執(zhí)行同一個請求。 public class RequestThread extends Thread { public void run() { if(mRequest!=null && mApp!=null) { //獲取協(xié)議類型、action名稱和請求body String protocolType = mRequest.getProtocolType(); String actionName = mRequest.getActionName(); String requestBody = mRequest.getBody(); if(protocolType!=null && actionName!=null && requestBody!=null) { //url組裝 String url = "http://"+mApp.getServerIpStr()+":"+AppConfig.HTTP_SERVER_PORT; url += "/type/"+protocolType;//設(shè)置協(xié)議類型 url += "/action/"+actionName;//設(shè)置action名稱 String response = ""; response = NetUtil.sendByPost(url, requestBody);//采用http post的方式發(fā)送jason報文 //將服務(wù)器端回應(yīng)的結(jié)果保存到請求對象中 mRequest.setResponseStr(response); result = RequestResult.RESULT_SUCCESS; } } } } 3 結(jié)語 該文設(shè)計開發(fā)的大棚環(huán)境監(jiān)測軟件實現(xiàn)了Android移動客戶端APP隨時獲取主控機(jī)房服務(wù)器的環(huán)境數(shù)據(jù),通過構(gòu)建Http服務(wù)器,客戶端以線程形式發(fā)送Jason格式數(shù)據(jù)請求,完成環(huán)境數(shù)據(jù)的監(jiān)控和受控設(shè)備的啟閉,經(jīng)過實際的大棚環(huán)境測試,軟件功能滿足現(xiàn)場實際需求,軟件性能達(dá)到客戶的要求,適用于小范圍的監(jiān)測,軟件已經(jīng)獲得軟件著作權(quán)登記號,在社會生產(chǎn)環(huán)境監(jiān)測方面具有借鑒意義和推廣價值。 參考文獻(xiàn) [1] 秦琳琳,陸林箭,石春,等.基于物聯(lián)網(wǎng)的溫室智能監(jiān)控系統(tǒng)設(shè)計[J].農(nóng)業(yè)機(jī)械學(xué)報,2015,46(3):261-267. [2] 李慧,劉星橋,李景,等.基于物聯(lián)網(wǎng)Android平臺的水產(chǎn)養(yǎng)殖遠(yuǎn)程監(jiān)控系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報,2013,29(13):175-181. [3] 李順,馮雨謙,周曉嵐.基于ZigBee無線網(wǎng)絡(luò)的養(yǎng)殖場信息監(jiān)測系統(tǒng)設(shè)計[J].陜西科技大學(xué)學(xué)報,2016(1):164-170.