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