方 霞
(新疆工程學院 信息工程學院,新疆 烏魯木齊 830091)
近年來將物聯網技術運用于農業,利用物聯網技術提升農業生產,成為了現代農業的大趨勢。物聯網和農業相結合所形成的農業物聯網,作為一項新型信息化集成技術,正逐步改變著國內傳統農業的經營模式,推動國內農業生產力的發展[1]。
物聯網(Internet of Things,“IOT”)這個概念在1999年由麻省理工學院的Ashton 教授提出,是基于無線射頻標識技術提出的產品電子編碼系統[2]。物聯網實際上就是物與物、人與物之間的信息傳遞與控制簡稱[3-4],所有物品都可以通過信息傳感設備與互聯網連接,實現智能化識別和管理。物聯網與很多行業緊密相關,如農業、工業、零售業、醫療、能源等。
隨著農業現代化的發展,信息技術與農業發展緊密結合。農業物聯網是將物聯網技術運用于農業的生產、經營以及管理中,使用溫度傳感器、濕度傳感器、PH值傳感器等各類感知設備,用于采集農業生產中的各類信息,檢測農業生產過程中的溫度、濕度、PH值等各類參數,最后技術人員通過各種儀器儀表實現對農業生產整個過程的監控[5-7]。技術人員根據監控數據做出決策,并進行實時服務。農業物聯網的出現,將傳統農業和現代化技術相結合,提高了農業的勞動生產率并促進了現代農業的跨越式發展。
農業物聯網可分為三個層次:信息感知層、信息網絡層以及信息應用層。
(1)信息感知層主要用于實現感知和識別物體,通過各種傳感器,對農業氣象要素信息,如空氣的溫度、濕度、CO2濃度等進行采集。
(2)信息網絡層是將傳感器獲取的信息進行網絡傳輸,除此之外,還包括網絡管理中心和信息中心。
(3)信息應用層將物聯網技術與行業技術進行融合,處理后的信息用于科學決策[8]。
MQTT(message queuing telemetry transport,消息隊列遙測傳輸),是IBM(international business machines corporation,國際商業機器公司)于1999年開發的即時通訊協議[9-11]。該協議主要用于輕量級的發布/訂閱式的消息傳輸,其特點為簡單、開放、易于實現等,適用于低帶寬,以及不可靠的網絡通訊,處理器和存儲器資源有限的嵌入式設備和移動終端[12]。
MQTT可以說是針對物聯網開發設計的新型輕量級傳輸協議,對于低帶寬、低計算能力的設備,MQTT進行了特殊的優化升級,能夠適應各式各樣的物聯網應用場景。MQTT可以將幾十億低成本、嵌入式數據采集設備連接到網絡,對物聯網未來的發展和規劃產生了重大的影響。
(1)輕巧:采用二進制的形式表達,具有非常小的通信開銷(最小的消息大小為2字節),協議交換最小,沒有應用消息頭,降低了網絡流量以及復雜度。
(2)支持簡單的發布/訂閱消息模式-連接、發布、訂閱、斷開。
(3)IBM和Eurotech公司共同研制,開放公開的協議,專門為“設備”網絡專業定制。
(4)有三種等級的消息發布服務質量:“至多一次”這一級別表示會發生消息丟失或重復,主要用于各類環境傳感器的數據采集,丟失一次記錄不會產生嚴重影響,因為不久后還會進行第二次發送;“至少一次”這一級別表示確保消息到達,但消息重復可能會發生;“只有一次”表示確保消息到達一次,主要用于計費系統等,消息重復或丟失會導致不正確的結果。
MQTT的結構由MQTT消息代理和MQTT客戶端組成??蛻舳耸褂肕QTT協議與消息代理相連接,如圖1所示。

圖1 MQTT結構
在消息推送過程中,MQTT定義了三種角色,分別是消息代理(Broke)、發布者(Publisher)和訂閱者(Subscriber)。圖2為MQTT工作模型,圖3為MQTT工作原理。

圖2 MQTT工作模型

圖3 MQTT工作原理
消息代理是服務器端,其主要應用程序為Mosquitto。Mosquitto是一種開源消息代理軟件,主要用于消息推送協議MQTT v3.1,支持發布/訂閱的消息推送模式。手機、低功耗傳感器、嵌入式計算機、微型控制器等移動設備都使用該軟件[13-14],使設備對設備之間的短消息通信變得簡單。
消息代理服務器端有以下幾種功能[15]:
(1)接收和管理主題。
(2)接受訂閱者和發布者的注冊并加以管理和維護。
(3)儲存發來的消息,然后將消息轉發給有需求的訂閱者。
訂閱者首先進行注冊,然后提交訂閱的主題,接下來等待接收該主題的有關消息。
基于MQTT協議的物聯網消息推送通信服務的總體應用架構如圖4所示。

圖4 系統框架結構
系統框架包括應用層、網絡層和感知層。
在網絡層搭建MQTT代理服務器,主要用于消息的轉發推送??蛻舳伺c服務器連接后,根據MQTT的主題訂閱機制進行主題的訂閱,主題訂閱的規則有:
(1)每個客戶端都訂閱了一個私有主題,用于一對一的P2P通信。
(2)每個客戶端都訂閱了一個broadcast主題,該主題主要用于廣播通信。
(3)group分組主題,用于根據所屬類別分組,進行一對多的組播通信。
(4)云數據庫可以訂閱#通配主題,主要用于接收所有主題的消息,并進行記錄和處理。
(5)客戶端可根據自身需求來定義其他主題。
客戶端MQTT服務程序主要模塊有:
(1)連接/退出模塊:連接請求時,啟動程序,讀取連接參數進行連接和數據溝通??蛻舳苏埱笸顺鰰r,斷開與MQTT服務器之間的連接,不再有數據溝通。
(2)心跳機制模塊:與MQTT服務器建立連接后,防止長時間待機,使連接自動失效掉線,需要定時發送一個自定義的結構體(心跳包),以確保連接的有效性。
(3)主題訂閱模塊:根據各個客戶端的需求訂閱相應的主題消息。
(4)發布/接收模塊:接收到消息后,對其進行加密整合,然后將其打包發布到MQTT代理服務器,再由服務器轉發給特定目標用戶。
(5)歷史記錄模塊:對程序的運行狀態、調試、報錯信息、功能狀態、訂閱記錄等信息進行記錄。
系統主題訂閱功能的具體實現如圖5所示。

圖5 主題訂閱實現示意圖
(1)云服務器上的數據庫接收到消息后,將消息經過程序選擇處理,最后將消息存儲到數據庫中。
(2)主題“ensave/public”,用于實現對所有終端的廣播通信,系統中各個終端都訂閱了該主題。當發布的消息帶有此主題時,就會即時轉發到各個終端。
(3)私有主題“ensave/[id]”,用于實現點對點的單播通信,系統中各個終端都訂閱有該主題。
(4)“ensave/jizhongqi”集中器訂閱主題,用于對集中器進行組播通信。
(5)“ensave/client/collect”數據采集客戶端訂閱主題,對數據采集客戶端進行組播通信。
(6)“ensave/client/control”遠程控制客戶端訂閱主題,對遠程控制客戶端進行組播通信。
文中所設計的農業物聯網實時監控系統提供狀態查詢、傳感器狀態查詢、生產履歷填報、基地生產記錄與查詢、計劃調度設置、傳感器閾值設置、數據分析、視頻監控等功能。系統登錄后可以查看GIS地理定位,以及對應鼠標點擊確認位置的土地種植監管信息,各種傳感器采集的數據信息都會實時更新,還有遠程控制的動作選項,這些都大大方便了管理人員對農種土地的高效管理。
農業物聯網實時監控系統的基地生產記錄功能有4個子模塊:種植記錄、施肥記錄、打藥記錄和采摘記錄。其中種植記錄模塊為用戶展示了種植分區、種植物類型、種植時間、種植占地面積和種植完成情況的信息;施肥記錄模塊主要記錄了肥料的名稱,作物施肥的時間,施肥的對象,以及施肥的面積,種植人員可通過施肥記錄了解作物的施肥信息,并可以通過手動或遠程操控對作物進行施肥;打藥記錄模塊主要記錄了農藥的名稱,噴灑農藥的時間、地點、面積等信息,管理人員可以手動或遠程操控對作物進行農藥的噴灑,進而對作物的生長情況進行監控;采摘記錄模塊主要記錄了作物采摘的情況,記錄了采摘作物的名稱,采摘的時間、地點、重量等信息,通過信息的記錄,避免了未及時采摘和錯誤提前采摘情況的發生。
通過各種集成技術,該農業物聯網監控系統可對農作物周邊環境進行空氣溫度、濕度,土壤和光照強度等信息的自動采集,并遠程實時傳輸。
在該系統運行工作時,傳感器技術起著絕對重要的作用,數據采集中的每一項參數都由安置在特定位置的特定傳感器進行采集。若傳感器非正常工作,那么通過該系統進行監管和決策的工作人員將會收到反饋。在數據分析的專欄中,系統可自動顯示所有傳感器在過去24小時內的工作狀態,如果有傳感器出現非正常運行狀態,即出現故障,那么該系統將會第一時間出現警報提示,以提醒用戶進行及時處理。
文中介紹了農業物聯網的相關概念以及MQTT協議的協議解析、工作原理和消息推送機制。基于MQTT消息推送設計了農業物聯網監控系統,系統除了數據采集以外還提供了遠程控制、數據分析、農資和設備監管等功能,并時刻與用戶保持聯系。該系統能保證作物的順利生長,方便了用戶的監管與決策,為面向農業的互聯網+應用提供了一些可行的參考。