徐鎮(zhèn)輝,郭里城,王燕貞,彭震川
(漳州職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,福建 漳州 363000)
信息化、智能化的農(nóng)業(yè)生產(chǎn)管理方式,有利于加快現(xiàn)代農(nóng)業(yè)生產(chǎn)體系的構(gòu)建,促進(jìn)鄉(xiāng)村產(chǎn)業(yè)振興.現(xiàn)階段我國農(nóng)業(yè)主要是小規(guī)模生產(chǎn)模式,精細(xì)化管理方面比較不足,農(nóng)業(yè)生產(chǎn)監(jiān)測和自動控制技術(shù)推廣應(yīng)用程度還比較低,農(nóng)業(yè)物聯(lián)網(wǎng)產(chǎn)品穩(wěn)定性不高[1],因此,推動農(nóng)業(yè)環(huán)境監(jiān)控平臺普及化、智能化、標(biāo)準(zhǔn)化、云端化是國內(nèi)農(nóng)業(yè)物聯(lián)網(wǎng)發(fā)展的重要任務(wù)之一.
國內(nèi)外在溫室環(huán)境測控技術(shù)方面開展了不少研究工作[2],有線傳輸方式功耗高、成本較大、可擴展性不強,無線傳輸方式有利于降低成本,但通信性能、節(jié)點及傳感器的穩(wěn)定性受環(huán)境影響較大[3];基于ZigBee和GPRS設(shè)計的溫室環(huán)境遠(yuǎn)程監(jiān)測系統(tǒng),能有效解決環(huán)境信息采集和傳輸過程布線困難、成本高、不穩(wěn)定等問題[4-6],但系統(tǒng)主要采用B/S或C/S架構(gòu),有的缺乏環(huán)境控制模塊;基于B/S和C/S混合架構(gòu)的溫室環(huán)境遠(yuǎn)程測控系統(tǒng)[7,8],綜合考慮了系統(tǒng)的可拓展性、跨平臺性和通信實時能力,但是2種架構(gòu)的子系統(tǒng)間有的缺乏獨立性,有的系統(tǒng)采用嵌入式Web服務(wù)器,缺乏歷史信息存儲和查詢.為此,文章利用ZigBee無線傳感網(wǎng)絡(luò)和GPRS遠(yuǎn)程傳輸技術(shù),設(shè)計了基于B/S和C/S混合架構(gòu)的智能農(nóng)業(yè)遠(yuǎn)程監(jiān)控系統(tǒng),在云端搭建服務(wù)器,充分發(fā)揮云服務(wù)和2種架構(gòu)的優(yōu)勢,匯集管理數(shù)據(jù)資源,提高系統(tǒng)安全性和訪問速度,以利農(nóng)產(chǎn)品生產(chǎn)溯源和改進(jìn)種植過程,方便用戶使用和推廣.
本系統(tǒng)實現(xiàn)對大棚內(nèi)空氣溫度、空氣濕度、二氧化碳濃度、光照強度等環(huán)境指標(biāo)的實時監(jiān)測和作物生長狀況的采集,依據(jù)設(shè)定的閾值和報警提示信息,自動或手動控制大棚內(nèi)機電設(shè)備,調(diào)節(jié)農(nóng)作物生長環(huán)境.本系統(tǒng)采用分層設(shè)計方式,由3個部分組成,分別為感知采集層、網(wǎng)絡(luò)服務(wù)層和用戶應(yīng)用層,整體架構(gòu)如圖1所示.
圖1 系統(tǒng)整體架構(gòu)
感知采集層通過傳感器采集大棚中的環(huán)境狀態(tài)數(shù)據(jù),主控節(jié)點匯集數(shù)據(jù),并通過GPRS無線通信上報數(shù)據(jù)和接收服務(wù)器控制信號;網(wǎng)絡(luò)服務(wù)層主要通過服務(wù)器提供用戶請求服務(wù),把接收到的環(huán)境數(shù)據(jù)和作物生長記錄存儲到云數(shù)據(jù)庫;用戶應(yīng)用層主要通過PC端和移動端監(jiān)測大棚環(huán)境實時狀態(tài)信息和采集作物生長狀況,設(shè)置環(huán)境閾值并控制相關(guān)機電設(shè)備等.
感知采集層從結(jié)構(gòu)上分為主控節(jié)點、采集節(jié)點、網(wǎng)絡(luò)通信、執(zhí)行機構(gòu)等幾個部分.大棚采集節(jié)點數(shù)據(jù)通過ZigBee無線網(wǎng)絡(luò)匯集到協(xié)調(diào)器,協(xié)調(diào)器通過串口通信把數(shù)據(jù)傳送給STM32主控節(jié)點.主控節(jié)點接收到服務(wù)器控制命令后,通過協(xié)調(diào)器和ZigBee無線網(wǎng)絡(luò)傳送給相應(yīng)的執(zhí)行機構(gòu),實現(xiàn)機電設(shè)備的調(diào)控.感知采集層結(jié)構(gòu)如圖2所示.
圖2 感知采集層結(jié)構(gòu)
主控節(jié)點是感知采集層的控制核心,采用的STM32F103增強型控制芯片具有數(shù)據(jù)實時處理能力強、通信接口多、功耗低等特點,可以滿足采集層設(shè)計要求.ZigBee通信模塊采用CC2530芯片,協(xié)調(diào)器作為ZigBee無線網(wǎng)絡(luò)的中心節(jié)點,負(fù)責(zé)ZigBee網(wǎng)絡(luò)組建;采集節(jié)點和執(zhí)行機構(gòu)作為終端節(jié)點,采集節(jié)點工作時自動搜尋ZigBee無線網(wǎng)絡(luò),并與對應(yīng)的協(xié)調(diào)器綁定連接.GPRS無線傳輸模塊采用SIM900A,具有傳輸距離遠(yuǎn)、性能穩(wěn)定可靠、資源利用率高等特點,由于系統(tǒng)傳輸數(shù)據(jù)量不大,對速度要求不高,符合設(shè)計要求.
網(wǎng)絡(luò)服務(wù)層是感知采集層與用戶應(yīng)用層的中心樞紐,對處理速度、安全性和可靠性等要求較高,由于傳統(tǒng)搭建的本地服務(wù)器需提前購買硬件設(shè)備,存在投入成本高、維護(hù)管理難度大等不足,因此,本系統(tǒng)采用阿里云服務(wù)器(ECS),擴展性好,處理能力強,可按需付費,并根據(jù)業(yè)務(wù)需求快速部署應(yīng)用程序,靈活擴展CPU、內(nèi)存、硬盤等硬件資源,能較好保證系統(tǒng)的安全和性能要求.
網(wǎng)絡(luò)服務(wù)層包括后臺服務(wù)器和數(shù)據(jù)庫存儲,本系統(tǒng)采用C/S和B/S相結(jié)合的混合架構(gòu),以及前后端分離的開發(fā)模式,系統(tǒng)后端使用Spring Boot框架搭建,采用MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲.由于C/S架構(gòu)響應(yīng)速度快、安全性高、操作方便、交互性強,B/S架構(gòu)升級維護(hù)較快、使用方便、易于拓展[9-11],在混合架構(gòu)中,充分發(fā)揮云服務(wù)器和兩種架構(gòu)的優(yōu)點,前端部分移動端APP和Web前端頁面相互獨立,而后臺服務(wù)器的業(yè)務(wù)邏輯處理和數(shù)據(jù)存儲共享使用,大量的業(yè)務(wù)邏輯處理在后臺服務(wù)器完成,服務(wù)器提供訪問接口并返回結(jié)果信息,移動端APP和Web前端頁面只需進(jìn)行簡單數(shù)據(jù)處理,C/S和B/S混合架構(gòu)如圖3所示.由于系統(tǒng)資源和數(shù)據(jù)處理主要集中在云服務(wù)器,且采用三層體系結(jié)構(gòu),有利于提高系統(tǒng)安全和執(zhí)行效率,降低系統(tǒng)升級、管理、維護(hù)的難度和成本.
針對系統(tǒng)不同功能模塊,B/S與C/S模式發(fā)揮各自優(yōu)勢[12,13],C/S模式主要為大棚現(xiàn)場日常管理和作物生長信息采集工作服務(wù),對大棚環(huán)境進(jìn)行實時監(jiān)測和預(yù)警,設(shè)置設(shè)備開關(guān)狀態(tài)和自動(手動)控制模式及環(huán)境閾值,采集記錄農(nóng)作物播種、施肥、開花、結(jié)果、采摘等種植過程重要節(jié)點信息,有利于農(nóng)產(chǎn)品生產(chǎn)溯源.B/S模式主要為系統(tǒng)后臺管理和大棚環(huán)境歷史數(shù)據(jù)查詢、統(tǒng)計分析服務(wù),對大棚、設(shè)備、用戶和傳感器等基本對象信息進(jìn)行管理,對數(shù)據(jù)庫中大量環(huán)境歷史數(shù)據(jù)進(jìn)行統(tǒng)計、分析,及提供詳細(xì)的種植知識和作物生長記錄查詢,有利于種植預(yù)測、決策管理和改進(jìn)種植過程.2種架構(gòu)在功能上相輔相成,綜合農(nóng)作物歷史生長狀況、環(huán)境歷史信息和實時監(jiān)測結(jié)果,將有利于優(yōu)化大棚機電設(shè)備自動控制模型,對大棚環(huán)境進(jìn)行更精確調(diào)控,系統(tǒng)業(yè)務(wù)功能如圖4所示.
圖3 C/S和B/S混合架構(gòu)
圖4 系統(tǒng)業(yè)務(wù)功能
后臺服務(wù)器使用輕量級框架Spring Boot搭建,該框架基本保留了Spring框架優(yōu)點,同時簡化SSM框架開發(fā)的過程,省去Spring框架的XML配置文件.系統(tǒng)采用前端和后端分離的開發(fā)方式,使后端可以集中進(jìn)行業(yè)務(wù)邏輯處理和數(shù)據(jù)處理.
業(yè)務(wù)邏輯層是后臺服務(wù)器的重要部分,主要負(fù)責(zé)業(yè)務(wù)邏輯處理,不僅要響應(yīng)來自表示層的請求,為表示層服務(wù),同時也連接數(shù)據(jù)訪問層,對數(shù)據(jù)訪問層傳輸來的數(shù)據(jù)進(jìn)行封裝處理,實現(xiàn)前端用戶與數(shù)據(jù)庫的數(shù)據(jù)交換.由于SpringBoot框架完全支持REST開發(fā)規(guī)范,可以通過“@Rest Controller”注解對控制器進(jìn)行聲明和響應(yīng),用“@Configuration”注解實現(xiàn)用戶端跨域資源共享(CORS).系統(tǒng)引入Shiro安全框架,管理用戶登錄身份認(rèn)證、權(quán)限驗證,對前端用戶和APP用戶進(jìn)行統(tǒng)一登錄認(rèn)證和權(quán)限控制.部分API接口如表1所示.
表1 部分API接口信息
數(shù)據(jù)訪問層是系統(tǒng)的數(shù)據(jù)服務(wù)層,與數(shù)據(jù)庫進(jìn)行交互,為業(yè)務(wù)邏輯層提供數(shù)據(jù)服務(wù),對數(shù)據(jù)庫中對象基本信息、環(huán)境狀態(tài)數(shù)據(jù)、作物生長記錄、作物種植知識等相關(guān)數(shù)據(jù)進(jìn)行操作.在Dao層中,Mapper封裝數(shù)據(jù)庫的操作命令,實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的查詢、添加、修改等操作.
本系統(tǒng)選用MySQL數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫中創(chuàng)建的設(shè)備信息表device、用戶信息表user、作物信息表crop、傳感器信息表sensor、大棚信息表greenhouse等主要存儲對象的基本信息.環(huán)境數(shù)據(jù)表environment存儲每個大棚傳感器的實時數(shù)據(jù),采集層每5 min上傳一次數(shù)據(jù),為減少表中數(shù)據(jù)量,優(yōu)化數(shù)據(jù)存儲,環(huán)境數(shù)據(jù)表根據(jù)大棚數(shù)量保存一段時間內(nèi)的實時數(shù)據(jù),系統(tǒng)將較早的數(shù)據(jù)定期轉(zhuǎn)移備份到歷史數(shù)據(jù)表中,并建立數(shù)據(jù)索引.數(shù)據(jù)統(tǒng)計表statistics是以環(huán)境數(shù)據(jù)表為基礎(chǔ),定期存儲環(huán)境數(shù)據(jù)分組統(tǒng)計的結(jié)果,系統(tǒng)設(shè)定統(tǒng)計周期.數(shù)據(jù)庫設(shè)定備份計劃,定期進(jìn)行備份.主要數(shù)據(jù)表如表2所示.
表2 主要數(shù)據(jù)表說明
本系統(tǒng)使用Vue作為Web前端設(shè)計框架,Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,可以在聲明式渲染的基礎(chǔ)上,自選添加組件系統(tǒng)、客戶端路由、狀態(tài)管理等來構(gòu)建,按照自底向上、逐層應(yīng)用方式,獨立完成分離式前端開發(fā),組件化系統(tǒng)能較好地實現(xiàn)組件復(fù)用和頁面快速搭建.前端開發(fā)使用MVVM(Model-View-View-Model)設(shè)計模式,通過ViewModel層建立View層和Model層聯(lián)系,進(jìn)行數(shù)據(jù)雙向綁定和同步刷新.前端通過Axios作為中間層實現(xiàn)前后端請求響應(yīng)與數(shù)據(jù)交互,調(diào)用后端RESTFUL API接口,向后臺服務(wù)器發(fā)送GET/POST請求,使用JSON數(shù)據(jù)進(jìn)行交互.Web前端的基本信息管理頁面如圖5所示,管理員用戶可以對基本信息進(jìn)行添加、修改和刪除操作.
圖5 基本信息管理頁面
移動端APP用Android Studio集成工具開發(fā),使用OkHttp網(wǎng)絡(luò)框架,支持連接池和線程池復(fù)用,通過OkHttpClient創(chuàng)建連接對象,并在子線程中請求環(huán)境數(shù)據(jù)和配置信息,有利于減少延遲和節(jié)省內(nèi)存空間,提高訪問效率.為提高訪問安全,移動端和服務(wù)器都設(shè)置了用戶訪問權(quán)限控制,當(dāng)用戶登錄驗證通過時,服務(wù)器返回用戶類型標(biāo)識,APP根據(jù)用戶類型標(biāo)識設(shè)置訪問權(quán)限,普通用戶對環(huán)境閾值設(shè)置、控制模式設(shè)置等功能不可用.APP主頁和生長記錄界面分別如圖6~7所示,主頁顯示常用功能,各功能模塊可從系統(tǒng)主菜單進(jìn)入,MainActivity主頁左側(cè)菜單欄和右側(cè)內(nèi)容區(qū)域分別用drawerlayout+navigationview控件、gridview控件實現(xiàn),單擊各環(huán)境指標(biāo)可進(jìn)入相應(yīng)實時監(jiān)測界面,大棚內(nèi)多節(jié)點采集則取同時刻各節(jié)點數(shù)據(jù)平均值.
圖6 APP主頁 圖7 生長記錄界面
本系統(tǒng)安裝在漳州市某農(nóng)業(yè)大棚內(nèi)進(jìn)行測試,云服務(wù)器運行穩(wěn)定,能正常接收感知采集層上傳的環(huán)境狀態(tài)數(shù)據(jù),GPRS數(shù)據(jù)傳輸較為穩(wěn)定,發(fā)出的控制信號能對遠(yuǎn)程排風(fēng)扇、噴淋器等設(shè)備進(jìn)行正常開關(guān)控制.用谷歌、360等桌面瀏覽器訪問流暢,交互界面簡潔,響應(yīng)式布局能自動適應(yīng)屏幕大小.Android移動端APP響應(yīng)速度較快,能夠?qū)崟r監(jiān)測大棚環(huán)境指標(biāo),數(shù)據(jù)超出閾值情況下,移動端能及時發(fā)出聲音、震動警報提醒和任務(wù)欄通知信息,用戶可以手動控制或通過系統(tǒng)自動控制相關(guān)機電設(shè)備.
由于外界因素干擾、傳感器采集誤差等原因,可能出現(xiàn)環(huán)境指標(biāo)短時間內(nèi)在閾值上下波動及個別數(shù)據(jù)丟失等問題,為避免機電設(shè)備反復(fù)重啟或誤判啟動.自動控制狀態(tài)下,當(dāng)環(huán)境指標(biāo)數(shù)據(jù)無缺失且連續(xù)多次超出閾值時機電設(shè)備自動啟動,同時取閾值范圍[a,b]區(qū)間長度10%的數(shù)值d作為設(shè)備停止的控制條件,當(dāng)環(huán)境指標(biāo)恢復(fù)到[a+d,b-d]數(shù)值范圍時設(shè)備停止,使大棚環(huán)境保持在適合農(nóng)作物生長的狀態(tài).
文章設(shè)計兼容B/S和C/S訪問方式的智能農(nóng)業(yè)遠(yuǎn)程監(jiān)控系統(tǒng),采用當(dāng)前主流的SpringBoot和Vue前后端分離服務(wù)框架,有利于縮短系統(tǒng)開發(fā)時間.在B/S和C/S混合架構(gòu)中,移動端APP與Web前端頁面相互獨立,后端部分共享使用,功能上相輔相成,有利于提高系統(tǒng)執(zhí)行效率和安全性,降低系統(tǒng)升級、管理、維護(hù)的難度和成本.測試表明,本設(shè)計能實現(xiàn)遠(yuǎn)程大棚環(huán)境的實時監(jiān)測和調(diào)控,方便用戶使用和推廣,有利于農(nóng)產(chǎn)品生產(chǎn)溯源和今后種植過程改進(jìn).本設(shè)計不足之處是歷史數(shù)據(jù)積累和數(shù)據(jù)統(tǒng)計方式比較有限,今后,將進(jìn)一步挖掘大棚環(huán)境歷史數(shù)據(jù)信息和農(nóng)作物生長記錄信息,分析大棚環(huán)境指標(biāo)變化規(guī)律與農(nóng)作物生長關(guān)系,完善自動控制策略,實現(xiàn)按需控制和多指標(biāo)控制,以提高監(jiān)控系統(tǒng)的智能化水平和大棚農(nóng)業(yè)的高質(zhì)量生產(chǎn).