張江南,王 海,趙樹(shù)林
(青島農(nóng)業(yè)大學(xué) 網(wǎng)絡(luò)管理中心,山東 青島 266109)
農(nóng)業(yè)物聯(lián)網(wǎng)是計(jì)算機(jī)、互聯(lián)網(wǎng)、移動(dòng)通信等信息技術(shù)在農(nóng)業(yè)領(lǐng)域的高度集成,是農(nóng)業(yè)信息化、智能化的必要條件。物聯(lián)網(wǎng)技術(shù)應(yīng)用到農(nóng)業(yè)的生產(chǎn)、經(jīng)營(yíng)、管理和服務(wù)全產(chǎn)業(yè)鏈中,改變了傳統(tǒng)農(nóng)業(yè)模式,加快了農(nóng)業(yè)現(xiàn)代化的發(fā)展[1-5]。目前的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)大都處在較為偏遠(yuǎn)的位置,系統(tǒng)分散獨(dú)立,數(shù)據(jù)大都是單獨(dú)存儲(chǔ)、數(shù)據(jù)不流通。由于農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)想要獲取有價(jià)值的數(shù)據(jù)是一個(gè)長(zhǎng)期、漫長(zhǎng)的過(guò)程,農(nóng)業(yè)數(shù)據(jù)采集周期長(zhǎng),傳感設(shè)備種類和數(shù)量繁多,所以需要對(duì)農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)和設(shè)備進(jìn)行有效管理。
文中采用Kaa技術(shù)來(lái)解決多農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)的設(shè)備和數(shù)據(jù)的管理問(wèn)題。Kaa是一種用于物聯(lián)網(wǎng)開(kāi)發(fā)的多功能的中間件[6],用于實(shí)現(xiàn)應(yīng)用層和感知層之間的通信。目前的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)十分獨(dú)立,前端設(shè)備型號(hào)、開(kāi)發(fā)語(yǔ)言不統(tǒng)一,并存在兼容性問(wèn)題。Kaa的使用與硬件本身無(wú)關(guān),以軟件的形式兼容任何類型的連接設(shè)備,所以無(wú)論是對(duì)現(xiàn)有的系統(tǒng)改造,還是新的系統(tǒng)都有較為廣泛的應(yīng)用前景。目前Kaa的底層設(shè)備支持傳統(tǒng)的arm系列、樹(shù)莓派系列,語(yǔ)言支持C、Python和Java等[7-11],普適范圍廣,基本適用于市面上使用的各類型設(shè)備,極適用于傳感器種類繁多、前端控制設(shè)備各異的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)。
傳統(tǒng)的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)主要包括應(yīng)用層、網(wǎng)絡(luò)層和感知層。應(yīng)用層主要是服務(wù)器端的設(shè)計(jì),主要包括數(shù)據(jù)的存儲(chǔ)、管理和分析,以及交互界面的設(shè)計(jì);網(wǎng)絡(luò)層是通過(guò)各種網(wǎng)絡(luò)通信方式,實(shí)現(xiàn)網(wǎng)絡(luò)層和應(yīng)用層之間安全有效的數(shù)據(jù)傳輸;感知層是通過(guò)各種傳感設(shè)備,實(shí)現(xiàn)前端的信息采集[12-16]。文中通過(guò)研究Kaa技術(shù),設(shè)計(jì)基于Kaa技術(shù)的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)[17]只包括應(yīng)用層和感知層的大二層結(jié)構(gòu)。相對(duì)于傳統(tǒng)農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng),這種大二層結(jié)構(gòu)不需要考慮傳統(tǒng)網(wǎng)絡(luò)層數(shù)據(jù)傳輸存在的安全性和服務(wù)器端接收多農(nóng)業(yè)物聯(lián)網(wǎng)報(bào)文的數(shù)據(jù)解析問(wèn)題,系統(tǒng)的數(shù)據(jù)傳輸需要保證以太網(wǎng)的正常使用。設(shè)計(jì)的整體架構(gòu)如圖1所示。
系統(tǒng)應(yīng)用層為“服務(wù)器+Kaa server”和物聯(lián)網(wǎng)平臺(tái)。在服務(wù)器端安裝Kaa server組件,把其整體作為整個(gè)系統(tǒng)數(shù)據(jù)接收端、數(shù)據(jù)的存儲(chǔ)中心和中轉(zhuǎn)站。根據(jù)系統(tǒng)需求設(shè)計(jì)農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備和數(shù)據(jù)模塊,以模塊的方式與前端采集設(shè)備進(jìn)行對(duì)接,進(jìn)而實(shí)現(xiàn)前端傳感設(shè)備和數(shù)據(jù)的管理。服務(wù)器端通過(guò)提供接口和組件的方式與物聯(lián)網(wǎng)平臺(tái)進(jìn)行對(duì)接,用戶可以直觀獲取前端信息,方便對(duì)系統(tǒng)的管理。
圖1 整體架構(gòu)
系統(tǒng)感知層為“遠(yuǎn)端設(shè)備+Kaa SDK”,由分散的實(shí)驗(yàn)大田、物聯(lián)網(wǎng)大棚和溫室等農(nóng)業(yè)物聯(lián)網(wǎng)前端感知環(huán)境構(gòu)成,是系統(tǒng)的監(jiān)測(cè)對(duì)象。在遠(yuǎn)端設(shè)備的控制器內(nèi)嵌入服務(wù)器端所對(duì)應(yīng)的Kaa SDK組件,傳感設(shè)備的狀態(tài)和采集的數(shù)據(jù)通過(guò)組件內(nèi)的傳輸通道與遠(yuǎn)端服務(wù)器進(jìn)行數(shù)據(jù)傳輸。
該研究在遠(yuǎn)端的服務(wù)器內(nèi)搭建了Kaa server作為數(shù)據(jù)交換的接收端,根據(jù)農(nóng)業(yè)物聯(lián)網(wǎng)前端采集需求創(chuàng)建采集模塊。針對(duì)每個(gè)模塊進(jìn)行單獨(dú)的數(shù)據(jù)傳輸、存儲(chǔ)和管理,并根據(jù)數(shù)據(jù)格式分項(xiàng)存儲(chǔ)在搭建在服務(wù)器內(nèi)的sql數(shù)據(jù)庫(kù)中,服務(wù)器端架構(gòu)如圖2所示。
圖2 服務(wù)器端架構(gòu)
系統(tǒng)設(shè)計(jì)的服務(wù)器作為數(shù)據(jù)的中轉(zhuǎn)站,其他使用者以用戶的方式進(jìn)行使用,由管理員進(jìn)行統(tǒng)一管理。服務(wù)器端通過(guò)為農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)提供API接口的方式,通過(guò)與Kaa server中的應(yīng)用模塊進(jìn)行對(duì)接,實(shí)現(xiàn)與農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)的數(shù)據(jù)交互。
遠(yuǎn)端傳感設(shè)備采用樹(shù)莓派3b+作為控制設(shè)備,在其中安裝了與服務(wù)器端Kaa server相對(duì)應(yīng)的Kaa SDK組件。傳感器設(shè)備通過(guò)與相應(yīng)的SDK組件內(nèi)的模塊進(jìn)行對(duì)接,實(shí)現(xiàn)與服務(wù)器端Kaa server的對(duì)接,進(jìn)而實(shí)現(xiàn)遠(yuǎn)端采集設(shè)備與服務(wù)器端數(shù)據(jù)的雙向傳輸。
根據(jù)系統(tǒng)需求設(shè)計(jì)軟件結(jié)構(gòu),包括Kaa server、Kaa SDK、農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用、農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)、數(shù)據(jù)庫(kù)、信息采集模塊和控制模塊七個(gè)部分,如圖3所示。
圖3 系統(tǒng)軟件結(jié)構(gòu)
Kaa server是整個(gè)系統(tǒng)的核心,負(fù)責(zé)系統(tǒng)的數(shù)據(jù)中轉(zhuǎn)和設(shè)備管理,實(shí)現(xiàn)整個(gè)系統(tǒng)數(shù)據(jù)的雙向傳輸;Kaa SDK用來(lái)實(shí)現(xiàn)遠(yuǎn)端設(shè)備和服務(wù)器端的連接,負(fù)責(zé)接收Kaa server發(fā)送來(lái)的命令和返回相應(yīng)的數(shù)據(jù);農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用負(fù)責(zé)具體配置農(nóng)業(yè)物聯(lián)網(wǎng)的各項(xiàng)參數(shù),包括各個(gè)參數(shù)的結(jié)構(gòu)、名稱、狀態(tài)和控制指令等;數(shù)據(jù)存儲(chǔ)模塊用于根據(jù)農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用分項(xiàng)存儲(chǔ)采集到的各種農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù),當(dāng)有信息變化時(shí)寫(xiě)入或查詢數(shù)據(jù)庫(kù);信息采集控制模塊采用RS485通信方式,通過(guò)modbus-RTU協(xié)議向各個(gè)傳感器發(fā)送讀取指令,進(jìn)而獲取數(shù)據(jù);控制模塊通過(guò)GPIO接口與控制設(shè)備進(jìn)行連接,通過(guò)其輸出高低電平控制設(shè)備的啟停;農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)主要是用來(lái)實(shí)現(xiàn)農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)的展示,方便用戶對(duì)系統(tǒng)的使用和管理。
傳統(tǒng)的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)的數(shù)據(jù)傳輸過(guò)程需要遠(yuǎn)端控制設(shè)備按一定延時(shí)向服務(wù)器端發(fā)送數(shù)據(jù)報(bào)文,服務(wù)器端通過(guò)接聽(tīng)相應(yīng)端口并進(jìn)行報(bào)文解析獲取相應(yīng)的數(shù)據(jù)。該設(shè)備通過(guò)使用Kaa技術(shù)將整個(gè)系統(tǒng)從軟件層面上連接成一個(gè)整體,整個(gè)系統(tǒng)由服務(wù)器端的Kaa server進(jìn)行控制,數(shù)據(jù)傳輸過(guò)程中數(shù)據(jù)和控制命令全都是單模塊傳輸,無(wú)需再進(jìn)行數(shù)據(jù)解析。整個(gè)系統(tǒng)的流程如圖4所示。
圖4 系統(tǒng)流程
為了驗(yàn)證Kaa技術(shù)數(shù)據(jù)傳輸?shù)姆€(wěn)定性,選取了市面上常用的基于ARM9的TX2440、基于ARM11的S3C2410和樹(shù)莓派3b作為農(nóng)業(yè)物聯(lián)網(wǎng)的遠(yuǎn)端測(cè)試設(shè)備,服務(wù)器端采用Kaa server作為數(shù)據(jù)的接收端,分別對(duì)這3類設(shè)備做了1 000次的數(shù)據(jù)傳輸測(cè)試,測(cè)試結(jié)果如表1所示。
表1 數(shù)據(jù)傳輸測(cè)試結(jié)果
農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備的管理是通過(guò)Kaa server實(shí)現(xiàn)的,通過(guò)Kaa server對(duì)各類傳感設(shè)備的各項(xiàng)參賽進(jìn)行設(shè)置,管理員給使用者提供用戶的方式進(jìn)行使用,設(shè)備管理界面展示如圖5所示。
圖5 設(shè)備管理界面
根據(jù)測(cè)試結(jié)果可知,Kaa技術(shù)可以提供十分穩(wěn)定的數(shù)據(jù)傳輸環(huán)境,并可以滿足農(nóng)業(yè)物聯(lián)網(wǎng)感知層和應(yīng)用層兩端的功能需求。文中的目的是設(shè)計(jì)一種對(duì)多農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)設(shè)備和數(shù)據(jù)進(jìn)行集中管理的解決方案,通過(guò)運(yùn)用Kaa技術(shù)將分散在各地的農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備和數(shù)據(jù)進(jìn)行統(tǒng)一管理,進(jìn)而實(shí)現(xiàn)農(nóng)業(yè)數(shù)據(jù)的集中存儲(chǔ),為后續(xù)的農(nóng)業(yè)大數(shù)據(jù)分析創(chuàng)造實(shí)驗(yàn)環(huán)境。相對(duì)于各種基于云的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng),數(shù)據(jù)的存儲(chǔ)用戶的服務(wù)器內(nèi),由用戶來(lái)掌控?cái)?shù)據(jù)源,Kaa技術(shù)只是作為服務(wù)器與前端設(shè)備的中間件,不會(huì)受到外界的限制。通過(guò)應(yīng)用Kaa技術(shù),還解決了不同農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)底端設(shè)備兼容性差的缺陷,降低了系統(tǒng)的開(kāi)發(fā)難度和工作量,因此具有一定的應(yīng)用價(jià)值。