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