?

基于虛擬網關的農業物聯網平臺與第三方設備接入及其在農業灌溉上的應用

2024-01-08 04:56付佳威姚毅何雷任紅藍嵐趙燕陳琦
江西農業 2023年24期
關鍵詞:網關數據包灌溉

付佳威,姚毅*,何雷,任紅,藍嵐,趙燕,陳琦

(1.南昌市農業科學院南昌市農業物聯網智能裝備集成開發重點實驗室,江西 南昌 330038;2.江西超鼎科技有限公司,江西 南昌 330038;3.江西農業大學,江西 南昌 330038)

如何從軟件層面入手設計一個交互協議,實現不同廠家設備的接入及應用?類似的問題在傳統物聯網系統中一直存在,導致用戶使用物聯網時需要在不同系統之間跳轉或者針對第三方平臺做定制化接入,這些操作既麻煩,也提高了開發成本。項目組針對上述問題,提出并應用了虛擬網關方案,實現了“一對多”異構系統的接入控制,在不改變雙方系統功能代碼的情況下,直接通過網關方案來對異構系統做接入控制,將第三方平臺直接映射到系統成為一個網關,然后將該平臺設備也作為網關下的子設備通過協議層交互的方式掛載上來,實現異構系統設備的接入。

1 虛擬網關接入方案的總體架構設計

本系統主要包括物聯網基礎平臺、第三方設備供應商灌溉進排水設備云平臺2 個系統,以第三方平臺接入物聯網基礎平臺為例,對該方案進行介紹說明。

該方案主要分為三塊:基礎平臺、第三方平臺、虛擬網關。物聯網基礎平臺對外提供MQTT 設備接入服務,并需要具有支持設備類型這一特性,設備類型分為直連設備、網關設備、網關子設備三種,基礎平臺通過設備類型區分設備之間的關聯關系及進行消息權限管控。第三方平臺需要提供2 個對外接口,通過設備編號查詢設備狀態信息和通過設備編號控制設備執行動作。

虛擬網關則是在軟件層面創建一個中間設備,通過走網關協議,模擬一個真實的網關設備與基礎平臺進行通信,需要支持MQTT v3.1 客戶端協議,然后再模擬一個HTTP/MQTT/其他協議類型的客戶端,通過第三方平臺的API 與第三方平臺進行上下行數據交互,從而將設備掛載到基礎平臺。通信架構如圖1 所示。

圖1 虛擬網關方案架構圖

2 系統軟件技術棧選型

2.1 通信協議

MQTT 是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議具有輕量、簡單、開放和易于實現的特點,這些特點使它的適用范圍非常廣泛,甚至包括在受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居及一些小型化設備中已廣泛使用??紤]到所有的交互都是長連接且需要保持連接狀態及心跳監測,而在物聯網中MQTT符合這一特性并且運用十分廣泛,因此,使用MQTT 協議做為通信層的基礎協議非常合適。

2.2 應用層協議

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于人類閱讀和編寫,可以在多種語言之間進行數據交換,同時也易于機器解析和生成。目前在各類系統中,JSON 都作為數據傳輸格式得到廣泛應用,本文也選用其作為數據載體進行消息通信。

2.3 編程語言及框架

Java 是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java 語言具有功能強大和簡單易用兩個特征。Java 語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。同時Java 生態中的基于Maven 包管理的倉庫具有海量的第三方工具包及擴展庫,能極大減少編碼強度負擔,因此選用Java 作為本文中實現的編程語言,并配合Spring Boot 作為業務基礎框架。

3 系統設計與實現

3.1 交互協議設計

交互協議使用MQTT 作為傳輸層,JSON 格式數據作為應用層來實現。每個設備都具有唯一ID 作為該設備身份標識(mqtt client_id),系統通過該標識便能索引到該設備,向其發送消息。

MQTT 基于topic 的發布訂閱模式進行通信,而設備交互是上下行雙向的,因此可以定義兩個topic對數據進行分類。

上行topic: /iot/data/up/{clientID} 設備端發送到平臺

下行topic: /iot/data/down/{clientID} 平臺下發給設備端

3.1.1 數據包格式

詳見下表。

?

3.1.2 數據包實例

本文為第三方排水灌溉設備定義2 個屬性:一個是排水閥,使用標識符valve(true 為開啟,false 為關閉);一個是閥門,當前運行狀態status(正轉/反轉/停止)。

3.1.3 協議數據交互流程

(1)使用Java 構建MQTT 客戶端,作為虛擬網關設備連接到基礎平臺,并訂閱topic(/iot/data/up/{clientID}),網關上線。

(2)網關每隔3 分鐘調用第三方平臺開放接口,查詢每個子設備的狀態,然后將子設備狀態構建出數據包,并發送到topic(/iot/data/up/{clientID}),基礎平臺收到后通過header 字段判斷該數據包類型是網關上報子設備狀態,然后通過body 字段內的子設備ID,將各個子設備狀態進行提取解析。如圖2 所示。

圖2 定時同步第三方設備狀態

(3)當需要對閥門進行控制時,基礎平臺構建控制指令數據包,并生成唯一消息id,將其設置到數據包id 字段,發送到topic(/iot/data/down/{clientID})并構建異步等待任務,等待虛擬網關反饋控制結果,虛擬網關將會收到該條消息,隨后虛擬網關從消息內取出header 字段判斷是控制指令,從extend 內取出目標子設備,然后從body 中取出要控制的灌溉設備閥門設置值,調用第三方開放接口執行控制動作,等待第三方接口返回操作結果。虛擬網關收到操作結果后,構建應答指令包,將結果反饋回基礎平臺,平臺收到后根據消息中的id 字段,判斷是哪一次的控制指令,找到對應指令的等待任務,并將其取消等待響應給基礎平臺的用戶側,隨后虛擬網關立即再執行一次狀態上報,整個控制流程結束。在本次操作中,對于用戶來說全程是基于基礎平臺的,整個流程屏蔽了不同系統之間的交互。如圖3 所示。

圖3 控制操作交互流程

3.2 虛擬網關實現流程

3.2.1 開發環境

搭建開發環境包含JDK1.8、Maven3.2、MySQL8.0、InfluxDB 1.7、EMQX,使用JetBrains 的IDEA 作為IDE 開發工具對整個項目進行構建。

3.2.2 偽代碼實現

為了快速實現需求,簡化開發建議導入以下框架依賴:paho-mqtt、springboot 全家桶、influxdb-jdbc、mysqljdbc、hutool??蚣軇摻ㄟ^程如下:

4 結語

本文以物聯網平臺在農業領域接入第三方灌溉設備為例,創新性提出虛擬網關的接入方案,通過自定義一套標準的網關協議來模擬硬件設備與物聯網平臺交互的方案對異構系統進行設備兼容,大大提升了在農業生產中,物聯網系統與各類農業環境采集、作業控制類設備的融合接入能力,相較于傳統多平臺模式(每個設備廠家有一套自己的系統),用戶要控制灌溉設備,還需要再去打開該灌溉設備平臺進行操作,而本方案集成后所有操作均可在一個統一平臺進行實現。

本文所述的交互設計及實現方式,不僅適用于農業領域,在其他領域同樣能應用本套設計方案,能夠有效降低平臺對接的開發工作量及難度,實現在不改動平臺軟件的前提下通過網關協議將不同系統的設備進行無縫融合。

猜你喜歡
網關數據包灌溉
蒼松溫室 蒼松灌溉
蒼松溫室 蒼松灌溉
蒼松溫室 蒼松灌溉
蒼松溫室 蒼松灌溉
SmartSniff
LTE Small Cell網關及虛擬網關技術研究
應對氣候變化需要打通“網關”
一種實時高效的伺服控制網關設計
基于Zigbee與TCP的物聯網網關設計
視覺注意的數據包優先級排序策略研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合