李沁耘,劉 濤,宮志宏,黎貞發(fā),于 紅
(1.天津農(nóng)學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,天津 300380;2.天津市氣候中心,天津 300074;3.天津市西青區(qū)氣象局,天津 300380)
蘿卜作為我國(guó)主要蔬菜作物之一,栽培歷史悠久。截至目前,我國(guó)每年蘿卜播種面積保持在120萬(wàn)hm左右,總產(chǎn)量達(dá)4 000萬(wàn)t,是世界第一大蘿卜生產(chǎn)國(guó)。蘿卜產(chǎn)量、品質(zhì)的好壞很大程度取決于生長(zhǎng)環(huán)境中的氣候條件。因此,做好蘿卜生產(chǎn)設(shè)施小氣候的監(jiān)測(cè)預(yù)警服務(wù)是未來(lái)蘿卜高產(chǎn)和優(yōu)質(zhì)生產(chǎn)的關(guān)鍵。
設(shè)施氣候條件是影響蘿卜生長(zhǎng)發(fā)育的主要因素。目前,國(guó)內(nèi)針對(duì)設(shè)施園藝氣候監(jiān)測(cè)的相關(guān)研究較多,如黎貞發(fā)等利用物聯(lián)網(wǎng)技術(shù)開(kāi)發(fā)集小氣候?qū)崟r(shí)監(jiān)測(cè)、災(zāi)害預(yù)警、自動(dòng)化控制等技術(shù)于一體的氣象監(jiān)測(cè)與災(zāi)害預(yù)警系統(tǒng)。孫志貴等通過(guò)多重因素關(guān)聯(lián)規(guī)則學(xué)習(xí)方法,構(gòu)建基于互聯(lián)網(wǎng)氣象數(shù)據(jù)、設(shè)施農(nóng)業(yè)小氣候環(huán)境數(shù)據(jù)及作物生育期等多重因素的設(shè)施農(nóng)業(yè)氣象災(zāi)害預(yù)警和生產(chǎn)管理專家知識(shí)規(guī)則,開(kāi)發(fā)基于互聯(lián)網(wǎng)數(shù)據(jù)挖掘和專家知識(shí)決策技術(shù)的設(shè)施農(nóng)業(yè)氣象災(zāi)害監(jiān)測(cè)預(yù)警及智能決策推送服務(wù)系統(tǒng)。李慧等開(kāi)發(fā)了一種基于物聯(lián)網(wǎng)Android平臺(tái)的水產(chǎn)養(yǎng)殖遠(yuǎn)程監(jiān)控系統(tǒng),實(shí)現(xiàn)了多傳感器節(jié)點(diǎn)的信息遠(yuǎn)程采集和數(shù)據(jù)存儲(chǔ)功能。宮志宏等基于Android手機(jī)平臺(tái),構(gòu)建了一種作物苗情災(zāi)情快速上報(bào)系統(tǒng),為獲取實(shí)時(shí)農(nóng)情數(shù)據(jù)和開(kāi)展災(zāi)后救援工作提供可靠支撐。劉書(shū)倫等設(shè)計(jì)了基于物聯(lián)網(wǎng)Android平臺(tái)的農(nóng)業(yè)遠(yuǎn)程智能節(jié)水灌溉系統(tǒng),實(shí)現(xiàn)了對(duì)多傳感器節(jié)點(diǎn)(空氣溫濕度、光照、土壤濕度、電磁閥、變頻器等)遠(yuǎn)程采集和控制,以及對(duì)多個(gè)控制器節(jié)點(diǎn)的遠(yuǎn)程監(jiān)測(cè)與控制。鄧曉棟基于Android平臺(tái)設(shè)計(jì)了一種溫室大棚環(huán)境因子遠(yuǎn)程測(cè)控系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控,并設(shè)計(jì)了APP,實(shí)現(xiàn)了移動(dòng)終端的實(shí)時(shí)監(jiān)測(cè)和控制。以上研究為后者在利用智能手機(jī)進(jìn)行數(shù)據(jù)監(jiān)測(cè)以及服務(wù)方面提供了重要的參考價(jià)值。目前將實(shí)時(shí)監(jiān)測(cè)、預(yù)報(bào)預(yù)警和實(shí)時(shí)農(nóng)情、災(zāi)情上報(bào)的服務(wù)集于一體的平臺(tái)很少,而且很多平臺(tái)是基于APP開(kāi)發(fā)的,但APP在實(shí)際使用中,下載、登錄步驟相對(duì)繁瑣,存在推廣難度大的問(wèn)題。微信小程序作為大數(shù)據(jù)時(shí)代的產(chǎn)物,成本低、運(yùn)用簡(jiǎn)單、使用廣泛,目前已逐步成為農(nóng)業(yè)領(lǐng)域智能手機(jī)應(yīng)用研究的熱點(diǎn)。
本研究基于衛(wèi)青蘿卜生產(chǎn)者在實(shí)際生產(chǎn)中的氣象監(jiān)測(cè)與生產(chǎn)服務(wù)需求,將數(shù)據(jù)采集端、云服務(wù)器端和小程序端進(jìn)行結(jié)合,設(shè)計(jì)并開(kāi)發(fā)了基于微信平臺(tái)的蘿卜小氣候監(jiān)測(cè)服務(wù)系統(tǒng)。監(jiān)測(cè)與服務(wù)系統(tǒng)通過(guò)實(shí)時(shí)監(jiān)測(cè)棚室小氣候環(huán)境,依托于衛(wèi)青蘿卜各生育期的氣象指標(biāo),為農(nóng)戶生產(chǎn)決策提供科學(xué)指導(dǎo),實(shí)現(xiàn)了設(shè)施衛(wèi)青蘿卜監(jiān)測(cè)預(yù)警精細(xì)化、精準(zhǔn)化。
基于微信平臺(tái)的蘿卜小氣候環(huán)境監(jiān)測(cè)服務(wù)系統(tǒng)主要由數(shù)據(jù)采集端、云服務(wù)器端和小程序端三部分組成。數(shù)據(jù)采集端負(fù)責(zé)采集、傳輸數(shù)據(jù),服務(wù)器端負(fù)責(zé)接收、存儲(chǔ)、處理數(shù)據(jù),小程序端負(fù)責(zé)實(shí)時(shí)展示監(jiān)測(cè)數(shù)據(jù)、提供預(yù)報(bào)預(yù)警以及農(nóng)情、災(zāi)情上報(bào)等服務(wù)。系統(tǒng)采用B/S和C/S混合架構(gòu),農(nóng)民用戶可以通過(guò)微信小程序隨時(shí)查看小氣候站監(jiān)測(cè)的數(shù)據(jù)和氣象部門發(fā)出的預(yù)報(bào)預(yù)警服務(wù)信息,同時(shí)可以通過(guò)微信小程序?qū)⑥r(nóng)情信息上傳到云服務(wù)器端,系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體框架圖
數(shù)據(jù)采集端負(fù)責(zé)數(shù)據(jù)的采集和存儲(chǔ)。棚內(nèi)的監(jiān)測(cè)設(shè)備采用便攜式智能小氣候監(jiān)測(cè)儀FLHBZ_B02,該設(shè)備采樣要素包括光照、空氣溫濕度、土壤溫濕度,通過(guò)4G移動(dòng)網(wǎng)絡(luò)連接至云服務(wù)器端;支持GPS定位;配置1.14寸TFT液晶屏,可以直觀顯示設(shè)備及采樣信息;配置觸控按鍵,通過(guò)不同觸摸方式實(shí)現(xiàn)點(diǎn)亮液晶屏、開(kāi)關(guān)機(jī)或者啟動(dòng)GPS等功能;配置USB TYPE-C接口,設(shè)備充電和數(shù)據(jù)調(diào)試更方便。該設(shè)備實(shí)現(xiàn)了氣象要素的采集、顯示,同時(shí)具備低功耗、低成本等特性。設(shè)備設(shè)置每10 min向云服務(wù)器端發(fā)送1次數(shù)據(jù)。
云服務(wù)器端負(fù)責(zé)采集端數(shù)據(jù)的接收、存儲(chǔ)、處理。衛(wèi)青蘿卜氣象監(jiān)測(cè)數(shù)據(jù)通過(guò)4G移動(dòng)網(wǎng)絡(luò)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中,庫(kù)表為采集數(shù)據(jù)記錄表,包括的字段有時(shí)間、空氣溫度、空氣濕度、土壤溫度、土壤濕度、光照強(qiáng)度、經(jīng)度、緯度、供電電壓等。衛(wèi)青蘿卜的信息使用MySQL數(shù)據(jù)庫(kù)建立站點(diǎn)表,如衛(wèi)青蘿卜氣象指標(biāo)庫(kù)表、衛(wèi)青蘿卜產(chǎn)品信息表、衛(wèi)青蘿卜站點(diǎn)信息表等。棚外氣象數(shù)據(jù)包括天氣實(shí)況數(shù)據(jù)、預(yù)報(bào)預(yù)警數(shù)據(jù),這些數(shù)據(jù)均來(lái)源于和風(fēng)天氣。
小程序端是基于微信平臺(tái)的,主要向用戶展示監(jiān)測(cè)數(shù)據(jù)、預(yù)報(bào)預(yù)警信息和氣象服務(wù)產(chǎn)品等功能,基于MINA框架進(jìn)行開(kāi)發(fā),通過(guò)視圖層和邏輯層組成。視圖層使用WXML和WXSS來(lái)實(shí)現(xiàn),負(fù)責(zé)界面的布局和樣式;邏輯層使用JS即JavaScrip語(yǔ)言來(lái)實(shí)現(xiàn),負(fù)責(zé)界面數(shù)據(jù)的交互。
系統(tǒng)開(kāi)發(fā)環(huán)境為:Windows Server 2019+tomcat 9+JDK1.8+IntelliJ IDEA 2019.3.5+微信開(kāi)發(fā)者工具;系統(tǒng)測(cè)試環(huán)境為:智能手機(jī)榮耀30S。
基于微信平臺(tái)的蘿卜小氣候監(jiān)測(cè)服務(wù)系統(tǒng)的功能主要由實(shí)時(shí)監(jiān)測(cè)、預(yù)報(bào)預(yù)警、農(nóng)情互動(dòng)和蘿卜專題4個(gè)模塊組成,如圖2所示,每個(gè)模塊下有對(duì)應(yīng)的子模塊。
圖2 系統(tǒng)功能設(shè)計(jì)圖
實(shí)時(shí)監(jiān)測(cè)模塊包括棚內(nèi)的氣象監(jiān)測(cè)數(shù)據(jù)、棚外的自動(dòng)站實(shí)況信息。棚內(nèi)的氣象監(jiān)測(cè)數(shù)據(jù)是由固定式小氣候站監(jiān)測(cè)設(shè)備提供的,能夠?qū)崟r(shí)顯示大棚內(nèi)的空氣溫度、空氣濕度、土壤溫度、土壤濕度、光照強(qiáng)度這5個(gè)氣象要素,小程序界面以表單形式展示實(shí)時(shí)監(jiān)測(cè)的數(shù)據(jù),方便用戶直觀地獲取棚內(nèi)信息。設(shè)施農(nóng)業(yè)棚外實(shí)況信息是通過(guò)和風(fēng)天氣提供實(shí)時(shí)天氣數(shù)據(jù)API接口,通過(guò)高德地圖提供定位API接口,從而獲取了基于位置的棚外天氣實(shí)況信息。
預(yù)報(bào)預(yù)警模塊包括棚內(nèi)未來(lái)3 d預(yù)報(bào)、棚外未來(lái)7 d預(yù)報(bào)和氣象預(yù)警信息3個(gè)子模塊。棚內(nèi)未來(lái)3 d預(yù)報(bào)主要針對(duì)空氣溫度進(jìn)行預(yù)報(bào),為農(nóng)戶便捷管理棚室提供了可能;棚外7 d預(yù)報(bào)是通過(guò)和風(fēng)天氣提供7 d預(yù)報(bào)的API獲得數(shù)據(jù),為農(nóng)戶管理溫室提供了重要的參考價(jià)值;氣象預(yù)警信息通過(guò)和風(fēng)天氣提供災(zāi)害預(yù)警API以及天津的LocationID來(lái)獲取實(shí)時(shí)天氣災(zāi)害預(yù)警數(shù)據(jù),并且小程序根據(jù)預(yù)警信息推送相應(yīng)的防范措施,實(shí)現(xiàn)氣象預(yù)警的智能化。
農(nóng)情互動(dòng)模塊包括衛(wèi)青蘿卜服務(wù)產(chǎn)品、專家指導(dǎo)農(nóng)戶農(nóng)事活動(dòng)和農(nóng)戶實(shí)時(shí)農(nóng)情災(zāi)情上報(bào)3個(gè)子模塊。服務(wù)產(chǎn)品模塊主要是分析近期天氣對(duì)衛(wèi)青蘿卜的影響,同時(shí)為農(nóng)戶管理衛(wèi)青蘿卜提供科學(xué)依據(jù),以pdf文檔形式展示在小程序上;專家指導(dǎo)農(nóng)戶農(nóng)事活動(dòng)模塊是通過(guò)對(duì)話框的形式來(lái)溝通交流;實(shí)時(shí)農(nóng)情災(zāi)情上報(bào)模塊是農(nóng)戶通過(guò)將當(dāng)前位置、時(shí)間、作物、受災(zāi)情況等信息發(fā)送至云服務(wù)器端,來(lái)實(shí)現(xiàn)農(nóng)情災(zāi)情上報(bào)功能。
蘿卜專題模塊包含衛(wèi)青蘿卜的品種介紹、氣象條件適宜度分析、農(nóng)事管理以及發(fā)展歷程4個(gè)子模塊。通過(guò)對(duì)衛(wèi)青蘿卜的品種介紹,農(nóng)戶可以選擇優(yōu)質(zhì)品種實(shí)現(xiàn)高產(chǎn)高質(zhì);根據(jù)專家提供的衛(wèi)青蘿卜適宜氣象條件,結(jié)合當(dāng)前生育期氣象數(shù)據(jù),分析衛(wèi)青蘿卜環(huán)境適宜度,方便農(nóng)戶科學(xué)管理大棚;農(nóng)事管理模塊是通過(guò)專家獲取《保護(hù)地沙窩蘿卜栽培技術(shù)規(guī)范》,將各生育期肥水管理、病蟲(chóng)害防治技術(shù)以列表形式展示;衛(wèi)青蘿卜的發(fā)展歷程以堆疊圖形式展示了衛(wèi)青蘿卜近年種植面積及產(chǎn)量變化特征。
3.1.1 采集端數(shù)據(jù)獲取 當(dāng)傳感器設(shè)備觀測(cè)到數(shù)據(jù)時(shí),會(huì)自動(dòng)觸發(fā)監(jiān)聽(tīng)事件,服務(wù)器監(jiān)聽(tīng)程序就會(huì)監(jiān)聽(tīng)到設(shè)備上傳數(shù)據(jù)操作,數(shù)據(jù)控制中心界面會(huì)顯示“注冊(cè)”“斷開(kāi)連接”指令,說(shuō)明數(shù)據(jù)控制中心正在接收設(shè)備傳輸?shù)臄?shù)據(jù),之后進(jìn)行解析,通過(guò)配置文件連接數(shù)據(jù)庫(kù),將數(shù)據(jù)寫入數(shù)據(jù)庫(kù),最終采集端數(shù)據(jù)獲取成功。
3.1.2 小程序數(shù)據(jù)交互 后臺(tái)使用SpringBoot框架、MyBatis框架進(jìn)行開(kāi)發(fā)。使用SpringBoot框架添加@RestController注解,可以開(kāi)發(fā)HTTPS請(qǐng)求接口,小程序端通過(guò)該接口向服務(wù)器端發(fā)送請(qǐng)求,服務(wù)器端將請(qǐng)求的信息放在數(shù)據(jù)包,將數(shù)據(jù)包封裝到POST中,以json格式傳給前端。MyBatis框架集成了SQL語(yǔ)句的相關(guān)操作,后臺(tái)與MySQL數(shù)據(jù)庫(kù)交互時(shí),使用ProductMapper.xml文件的
3.1.3 預(yù)警預(yù)報(bào)數(shù)據(jù)及位置的獲取 獲取棚外數(shù)據(jù)時(shí),在index.js文件中編寫Weather:function()函數(shù),通過(guò)wx.request()發(fā)起HTTPS網(wǎng)絡(luò)請(qǐng)求,與此同時(shí),必須設(shè)置自己的用戶認(rèn)證key,獲取key需要進(jìn)入和風(fēng)天氣的控制臺(tái),點(diǎn)擊應(yīng)用管理,創(chuàng)建應(yīng)用即可,應(yīng)用類型選擇web API,完成之后便可以獲取實(shí)時(shí)天氣以及未來(lái)7 d的數(shù)據(jù),在index.wxml文件中將獲取到的數(shù)據(jù)顯示在小程序界面上,并進(jìn)行界面整體布局。獲取位置數(shù)據(jù)時(shí),通過(guò)genCodeLocation:function(lat,longi)函數(shù),來(lái)獲取位置信息,并調(diào)用Weather(lat,longi)函數(shù)獲取當(dāng)?shù)氐奶鞖鈱?shí)況,從而獲得精確的地理位置及天氣信息。獲取預(yù)警信息時(shí),獲取接口數(shù)據(jù),通過(guò)getWarning:function()函數(shù)發(fā)起網(wǎng)絡(luò)請(qǐng)求,在onLoad:function(res)函數(shù)中調(diào)用getWarning(),可以獲得天津市氣象局發(fā)出的預(yù)警信息,結(jié)合該信息,可以直接推送防災(zāi)措施。
3.1.4 產(chǎn)品文件展示方式 產(chǎn)品文件是通過(guò)西青區(qū)氣象局業(yè)務(wù)人員獲得,將獲取到的文件以pdf格式上傳到云存儲(chǔ),后臺(tái)經(jīng)過(guò)解析,可以獲取url接口,通過(guò)調(diào)用wx.downloadFile()函數(shù),最終將產(chǎn)品展示在小程序上。
本系統(tǒng)從小氣候站獲取到的數(shù)據(jù)通過(guò)4G網(wǎng)絡(luò)傳輸?shù)組ySQL數(shù)據(jù)庫(kù)中。MySQL數(shù)據(jù)庫(kù)軟件體積小,使用簡(jiǎn)單,且支持多種操作系統(tǒng),所以使用MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù)。在服務(wù)器上部署MySQL數(shù)據(jù)庫(kù),根據(jù)系統(tǒng)功能的需求,設(shè)計(jì)了tabtimedatam、condition、information、station、device等表,用來(lái)存儲(chǔ)設(shè)備采集到的實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)、衛(wèi)青蘿卜氣象指標(biāo)數(shù)據(jù)、衛(wèi)青蘿卜生育期信息、棚室站點(diǎn)信息、儀器設(shè)備基礎(chǔ)數(shù)據(jù)等。
微信小程序在邏輯層將數(shù)據(jù)進(jìn)行處理后發(fā)送給視圖層進(jìn)行展現(xiàn),同時(shí)接受視圖層事件反饋。wxml文件用于描述頁(yè)面的結(jié)構(gòu),具有數(shù)據(jù)綁定、列表渲染、條件渲染、模板及事件綁定的能力,wxml文件中所綁定的數(shù)據(jù),均來(lái)自于對(duì)應(yīng)頁(yè)的js文件中Page方法的data對(duì)象。
本系統(tǒng)微信小程序根據(jù)微信官方文檔提供的框架、組件來(lái)實(shí)現(xiàn)。scroll-view標(biāo)簽實(shí)現(xiàn)了小程序的頁(yè)面滾動(dòng);picker組件實(shí)現(xiàn)從底部彈起可滾動(dòng)選擇的功能;通過(guò)引入echarts模塊,微信小程序?qū)崿F(xiàn)數(shù)據(jù)可視化,數(shù)據(jù)以圖表形式直觀展示;navigator標(biāo)簽當(dāng)中的url屬性可以實(shí)現(xiàn)小程序內(nèi)頁(yè)面的跳轉(zhuǎn)。
基于微信平臺(tái)的蘿卜小氣候環(huán)境監(jiān)測(cè)服務(wù)系統(tǒng)于2021年秋季在天津市西青區(qū)辛口鎮(zhèn)蔬菜基地(39°04'N,116°54'E)進(jìn)行測(cè)試。經(jīng)測(cè)試,此系統(tǒng)可以實(shí)時(shí)獲取棚室內(nèi)、外空氣溫濕度、土壤溫濕度及光照強(qiáng)度等數(shù)據(jù),同時(shí)能夠及時(shí)為生產(chǎn)者提供氣象災(zāi)害預(yù)警信息以及農(nóng)業(yè)生產(chǎn)管理決策建議,還可以根據(jù)蘿卜關(guān)鍵生育期氣象條件需求,展示相關(guān)氣象部門的服務(wù)產(chǎn)品,部分小程序界面及功能如圖3所示。結(jié)果表明,此系統(tǒng)具有較好的穩(wěn)定性與實(shí)用性,基本滿足了農(nóng)戶的實(shí)際需求,可以進(jìn)行大范圍地推廣。
圖3 智能監(jiān)測(cè)與服務(wù)系統(tǒng)主要界面示意圖
本研究設(shè)計(jì)了基于微信平臺(tái)的蘿卜小氣候環(huán)境監(jiān)測(cè)服務(wù)系統(tǒng),不僅可以自動(dòng)實(shí)時(shí)采集空氣溫濕度、土壤溫濕度以及光照強(qiáng)度等數(shù)據(jù),還可以將這些數(shù)據(jù)同步展示在小程序端,并且結(jié)合衛(wèi)青蘿卜生育期的適宜氣象條件,為生產(chǎn)管理者提供決策服務(wù)。同時(shí)本系統(tǒng)通過(guò)實(shí)時(shí)監(jiān)測(cè)預(yù)警信息,可以為生產(chǎn)管理者提供實(shí)時(shí)、個(gè)性化的科學(xué)指導(dǎo),大大提高了系統(tǒng)的實(shí)用性。系統(tǒng)是基于微信平臺(tái)開(kāi)發(fā)的,可以調(diào)用微信原生的API,很大程度降低了系統(tǒng)開(kāi)發(fā)成本,在一定程度上,提高了系統(tǒng)的穩(wěn)定性。