王志強(qiáng),鈕丹丹,王佳興,高鑫,吳昊,夏倩,蔣永年,郭亞*
(1. 江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,輕工過程先進(jìn)控制教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 無錫 214122; 2. 江蘇省互聯(lián)網(wǎng)農(nóng)業(yè)發(fā)展中心,江蘇 南京 210017; 3. 江蘇中農(nóng)物聯(lián)網(wǎng)科技有限公司,江蘇 宜興 214200)
水資源缺乏一直是制約農(nóng)業(yè)發(fā)展的重要問題.在中國農(nóng)業(yè)用水量占總用水量的80%左右,但由于農(nóng)業(yè)灌溉效率普遍低下,農(nóng)業(yè)水的利用率僅為45%,而水資源利用率高的國家已達(dá)70%~80%.中國農(nóng)業(yè)用水被大量浪費(fèi),其原因除農(nóng)業(yè)灌溉控制技術(shù)本身不完善外,很大程度上是因?yàn)椴荒芗皶r地監(jiān)控各灌溉點(diǎn)的灌溉水流量信息.因此解決農(nóng)業(yè)灌溉用水信息獲取困難的問題,對于緩解水資源的緊缺非常重要.
目前國內(nèi)外基于物聯(lián)網(wǎng)技術(shù)的智能化灌溉系統(tǒng)可以實(shí)現(xiàn)簡單的組網(wǎng)、數(shù)據(jù)采集、顯示存儲等基本監(jiān)控功能,以及將傳感器數(shù)據(jù)上傳至管理系統(tǒng)實(shí)現(xiàn)智慧決策灌溉.例如:美國利用“3S”技術(shù)獲取、傳送、處理各類農(nóng)業(yè)信息,通過此技術(shù)指導(dǎo)農(nóng)業(yè)灌溉.但該技術(shù)實(shí)現(xiàn)復(fù)雜且難以建立網(wǎng)絡(luò)互聯(lián)關(guān)系,而且還存在信號誤差等問題[1-2].BATCHES等[3]開發(fā)了一套用于評價地下滴灌合理性的專家系統(tǒng),用于滴灌器的排布選擇.PLANT等[4]針對棉花的生產(chǎn)灌溉問題,利用CLARE專家系統(tǒng)外殼進(jìn)行系統(tǒng)開發(fā),考慮了作物蒸騰量、灌溉等各種問題,知識庫非常豐富.夏繼紅等[5]利用人工智能的相關(guān)技術(shù)設(shè)計開發(fā)節(jié)水灌溉智能系統(tǒng),可以針對某種特定的作物形成有效的灌溉策略,但該系統(tǒng)只考慮單一作物,未考慮農(nóng)田間的其他相互制約關(guān)系.屈曉淵等[6]基于無線傳感網(wǎng)絡(luò)技術(shù),將各種傳感器構(gòu)成智能化傳感器網(wǎng)絡(luò),實(shí)現(xiàn)農(nóng)田的在線檢測和灌溉自動化控制.李聰聰?shù)萚7]針對中國土壤水分流失和水資源浪費(fèi)問題,基于物聯(lián)網(wǎng)技術(shù)和無線傳感器技術(shù)設(shè)計智能灌溉系統(tǒng),可以用于檢測區(qū)域內(nèi)各個網(wǎng)絡(luò)傳感器節(jié)點(diǎn)的土壤水分信息,根據(jù)不同作物的生長規(guī)律進(jìn)行控制決策,并使用Simulink仿真驗(yàn)證了系統(tǒng)的可行性.趙焱[8]基于ZigBee技術(shù)實(shí)現(xiàn)了分布式節(jié)水灌溉采集監(jiān)控系統(tǒng)設(shè)計.但此類節(jié)水灌溉物聯(lián)網(wǎng)系統(tǒng)大多處于初步階段,并未考慮工業(yè)協(xié)議的實(shí)現(xiàn)、節(jié)點(diǎn)反向控制、服務(wù)器結(jié)點(diǎn)宕機(jī)、系統(tǒng)權(quán)限管理、海量數(shù)據(jù)的并發(fā)等實(shí)際問題,這些問題會隨監(jiān)控節(jié)點(diǎn)的增多而一一顯現(xiàn).因此現(xiàn)有的系統(tǒng)大多不能滿足多節(jié)點(diǎn)、大規(guī)模這一基本需求.
為了有效解決上述問題,針對此類實(shí)際性需求,文中對系統(tǒng)進(jìn)行設(shè)計.此外,為實(shí)現(xiàn)實(shí)用性大規(guī)模用水節(jié)點(diǎn)的監(jiān)控,本系統(tǒng)設(shè)計采用工業(yè)標(biāo)準(zhǔn)的MODBUS-RTU協(xié)議作為傳感器接入平臺的通用協(xié)議,任何傳感器只要滿足該協(xié)議即可接入該監(jiān)控系統(tǒng)成為系統(tǒng)監(jiān)控節(jié)點(diǎn)之一.同時設(shè)計實(shí)現(xiàn)權(quán)限分級管理功能,方便大規(guī)模應(yīng)用的管理.
農(nóng)業(yè)用水具有點(diǎn)多、面廣、分散和量小等特點(diǎn)[8-9],因此,對農(nóng)業(yè)用水量的檢測比較困難.可在每個用水點(diǎn)部署1個或多個流量傳感器節(jié)點(diǎn),每個用水區(qū)域部署1個網(wǎng)關(guān)節(jié)點(diǎn).傳感器節(jié)點(diǎn)用于采集節(jié)點(diǎn)將數(shù)據(jù)傳輸?shù)絅B-IOT網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行協(xié)議打包后上傳至核心網(wǎng)絡(luò),進(jìn)行協(xié)議數(shù)據(jù)轉(zhuǎn)換操作后進(jìn)入IOT服務(wù)器,IOT服務(wù)器部署在云服務(wù)器上,核心網(wǎng)絡(luò)可以直接連接該服務(wù)器IP地址.IOT服務(wù)器同時連接WEB服務(wù)器,WEB服務(wù)器同網(wǎng)絡(luò)訪問控制、網(wǎng)關(guān)服務(wù)器、數(shù)據(jù)庫以及用戶信息目錄等協(xié)同工作,能夠提供驗(yàn)證授權(quán)、賬戶服務(wù)以及數(shù)據(jù)庫管理功能.流量監(jiān)控端可以使用任意一臺連接外網(wǎng)的主機(jī)瀏覽器,通過http請求訪問WEB服務(wù)器以獲取相應(yīng)的數(shù)據(jù),從而進(jìn)行顯示存儲等數(shù)據(jù)操作,并為監(jiān)控員提供決策支持[10-11].節(jié)水灌溉系統(tǒng)監(jiān)控模型如圖1所示.
圖1 節(jié)水灌溉監(jiān)控模型圖
物聯(lián)網(wǎng)系統(tǒng)主要由3個部分組成:Device設(shè)備群、服務(wù)器以及客戶端[12].其中Device設(shè)備群即物聯(lián)網(wǎng)系統(tǒng)中感知層的傳感器設(shè)備,在本灌溉流量監(jiān)控系統(tǒng)中采用電磁流量計作為傳感器件,傳感器通過RS-485串口連接方式發(fā)送數(shù)據(jù)至NB-IOT結(jié)點(diǎn),并通過此節(jié)點(diǎn)向服務(wù)器發(fā)送傳感器數(shù)據(jù).服務(wù)器端設(shè)計負(fù)載均衡集群系統(tǒng),采用Nginx技術(shù),通過輪訓(xùn)算法分配線程池IOT服務(wù)器,同時使WEB服務(wù)器中網(wǎng)頁端靜態(tài)資源與動態(tài)資源分離,實(shí)現(xiàn)動靜結(jié)合的效果.MySQL服務(wù)器采用集群策略,利用MyCAT分片將IOT中數(shù)據(jù)寫入主數(shù)據(jù)庫中,網(wǎng)頁端的數(shù)據(jù)請求通過訪問從數(shù)據(jù)庫獲得.具體服務(wù)器可分為3個服務(wù)器程序:IOT服務(wù)器、MySQL服務(wù)器以及WEB服務(wù)器.IOT服務(wù)器主要用于接收底層Device群上傳的數(shù)據(jù),并在數(shù)據(jù)解析后通過數(shù)據(jù)庫接口存儲進(jìn)行數(shù)據(jù)持久化,MySQL服務(wù)器主要運(yùn)行MySQL守護(hù)進(jìn)程,定期對數(shù)據(jù)進(jìn)行備份以及對過量歷史數(shù)據(jù)進(jìn)行整合刪除等操作,WEB服務(wù)主要用于處理客戶端請求,提供驗(yàn)證授權(quán)、賬戶服務(wù)以及查詢數(shù)據(jù)庫內(nèi)容并將數(shù)據(jù)可視化的功能.客戶端部分包括WEB網(wǎng)頁客戶端和微信小程序客戶端,管理員可根據(jù)需要自行選擇需要使用的客戶端類型,2種類型的客戶端數(shù)據(jù)和狀態(tài)共享[13],系統(tǒng)總體架構(gòu)如圖2所示.
圖2 系統(tǒng)總體架構(gòu)圖
系統(tǒng)通過電磁流量計傳感器設(shè)備進(jìn)行監(jiān)測點(diǎn)流量監(jiān)控,由IOT服務(wù)器端獲取設(shè)備數(shù)據(jù)并以MODBUS協(xié)議進(jìn)行解析[14],基于TCP協(xié)議將各測量點(diǎn)測量所得數(shù)據(jù)存入數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)持久化.在WEB服務(wù)器中進(jìn)行實(shí)時查詢數(shù)據(jù)庫信息等操作,保證WEB網(wǎng)頁客戶端和微信小程序客戶端獲取信息的有效性和實(shí)時性.為降低系統(tǒng)的復(fù)雜度,IOT服務(wù)器和WEB服務(wù)器之間通過MySQL進(jìn)行連通,少部分需要兩者連通的采用HTTP協(xié)議進(jìn)行數(shù)據(jù)信息交換.
本系統(tǒng)中IOT服務(wù)器設(shè)計基于TCP的C/S模式(客戶端/服務(wù)器模式)開發(fā),為保證服務(wù)器的高擴(kuò)展性和高兼容性,將服務(wù)器的功能分為4個大塊,以實(shí)現(xiàn)系統(tǒng)設(shè)計的低耦合高內(nèi)聚性.四大模塊分別為連接器模塊、服務(wù)模塊、系統(tǒng)配置及本地資源模塊、數(shù)據(jù)庫資源模塊.各模塊詳細(xì)功能描述及實(shí)現(xiàn)如下所示.
2.2.1 IOT服務(wù)器連接器模塊實(shí)現(xiàn)
采用socket編程技術(shù),在本地建立TCP服務(wù)器,創(chuàng)建連接時將進(jìn)行核心配置的初始化,該TCP進(jìn)程綁定本機(jī)指定端口即傳感器硬件網(wǎng)關(guān)的連接端口.IOT服務(wù)器維護(hù)一個連接守護(hù)進(jìn)程(connection daemon),連接守護(hù)進(jìn)程將繼承監(jiān)聽器接口,創(chuàng)建連接守護(hù)進(jìn)程后就可以調(diào)用監(jiān)聽方法進(jìn)行監(jiān)聽,具體功能實(shí)現(xiàn)如下:
1) 監(jiān)聽連接功能:服務(wù)器的開始,創(chuàng)建1個繼承監(jiān)聽器接口的連接器,專門負(fù)責(zé)管理待連接的客戶端,當(dāng)創(chuàng)建連接的時候會進(jìn)行系統(tǒng)的初始化,服務(wù)器端口此時綁定,當(dāng)創(chuàng)建后就可以開啟監(jiān)聽,每當(dāng)監(jiān)聽到連接就調(diào)用系統(tǒng)的線程資源進(jìn)行分配處理.
2) 連接過濾功能:此功能為系統(tǒng)可擴(kuò)展功能,開發(fā)人員可根據(jù)需求設(shè)計加入不同的連接過濾器,加入的連接過濾器可根據(jù)需求過濾掉不想要接入的連接,但不會影響系統(tǒng)整體運(yùn)行,此連接過濾功能類似系統(tǒng)防火墻.
2.2.2 IOT服務(wù)器服務(wù)模塊實(shí)現(xiàn)
該模塊主要實(shí)現(xiàn)對獲取的傳感器數(shù)據(jù)進(jìn)行解析處理以及持久化操作,具體功能如下:
1) 檢測設(shè)備的正確應(yīng)答:在經(jīng)過動態(tài)分類處理后,進(jìn)入對應(yīng)服務(wù)內(nèi)部,首先將會檢測該連接的登錄信息的正確性,不正確則丟棄.
2) 與設(shè)備進(jìn)行信息傳輸,將獲得的有效信息加入數(shù)據(jù)庫:對獲取的數(shù)據(jù)信息,根據(jù)傳感器接入時選擇的協(xié)議進(jìn)行數(shù)據(jù)解析,解析完成后將有用的數(shù)據(jù)裝入數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)持久化處理.
3) 解析WEB的消息請求,完成請求的內(nèi)容:IOT服務(wù)器與WEB服務(wù)器進(jìn)行信息直接交換時采用HHTP協(xié)議,在一定程度上簡化了系統(tǒng)的復(fù)雜度.對于WEB的請求,IOT服務(wù)器按照HTTP協(xié)議的格式解析WEB請求,根據(jù)內(nèi)容將請求消息發(fā)送給終端設(shè)備或?qū)EB的請求給予回復(fù).
2.2.3 系統(tǒng)配置資源及本地資源模塊實(shí)現(xiàn)
該模塊主要對系統(tǒng)配置資源文件等進(jìn)行標(biāo)準(zhǔn)化設(shè)定,方便二次開發(fā)和系統(tǒng)調(diào)試,具體功能實(shí)現(xiàn)如下所示:
1) 配置資源保存,且易于修改:該服務(wù)器的所有配置信息都放置在指定的配置文件資源中進(jìn)行管理,開發(fā)和維護(hù)人員可以根據(jù)自身需求靈活更改和擴(kuò)展系統(tǒng)配置以實(shí)現(xiàn)各種擴(kuò)展功能.
2) 系統(tǒng)日志:服務(wù)器中操作流程及一些報錯信息由log4j2系統(tǒng)日志一并管理,可隨時查看,方便運(yùn)維人員后期系統(tǒng)維護(hù).
3) 用戶自定義協(xié)議:定義協(xié)議解析的抽象模板類,用戶可根據(jù)實(shí)際的業(yè)務(wù)需求,繼承該模板實(shí)現(xiàn)自定義協(xié)議類后交由系統(tǒng)自動維護(hù),系統(tǒng)進(jìn)行協(xié)議解析時會通過反射執(zhí)行自定義解析方法.
4) 設(shè)備映射表管理:IOT服務(wù)器將維護(hù)1個設(shè)備與IP的映射表,將在線設(shè)備的設(shè)備號和IP對應(yīng)關(guān)系加入該映射表,方便取用和查看.
WEB是系統(tǒng)的交互樞紐,主要功能實(shí)現(xiàn)包括3部分:與IOT服務(wù)器進(jìn)行數(shù)據(jù)交互、與MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互以及與客戶端進(jìn)行數(shù)據(jù)交互.前兩者采用nginx服務(wù)器分配動態(tài)服務(wù)器處理資源信息,客戶端訪問靜態(tài)資源需訪問靜態(tài)資源服務(wù)器.在與IOT服務(wù)進(jìn)行數(shù)據(jù)交互的過程中均采用HTTP協(xié)議進(jìn)行數(shù)據(jù)交換,規(guī)范了系統(tǒng)的數(shù)據(jù)交換格式.在與客戶端進(jìn)行數(shù)據(jù)交換的過程中,引入了身份-權(quán)限管理系統(tǒng),不同身份的管理員擁有的權(quán)限不同,可進(jìn)行不同的操作,提高了系統(tǒng)的穩(wěn)定性.服務(wù)器功能實(shí)現(xiàn)流程如圖3所示.
圖3 WEB服務(wù)器功能實(shí)現(xiàn)流程圖
MySQL服務(wù)器主要維護(hù)一個數(shù)據(jù)庫守護(hù)進(jìn)程(DB daemon),該守護(hù)進(jìn)程輸入后臺服務(wù)進(jìn)程,主要用于定時對數(shù)據(jù)庫進(jìn)行刪除、匯總等操作,為數(shù)據(jù)庫進(jìn)行瘦身,防止數(shù)據(jù)庫過飽和導(dǎo)致系統(tǒng)性能下降.DB daemon的功能是對歷史數(shù)據(jù)進(jìn)行處理,通過歷史數(shù)據(jù)獲取周數(shù)據(jù)、月數(shù)據(jù)、年數(shù)據(jù),并分別進(jìn)行存儲,隨后刪除處理后剩余的無用歷史數(shù)據(jù),保證了以最小的存儲代價實(shí)現(xiàn)歷史數(shù)據(jù)的可達(dá)性.
同時采用MySQL集群技術(shù),設(shè)置主從數(shù)據(jù)庫,設(shè)定主庫寫、從庫讀的模式.利用MyCAT中間件實(shí)現(xiàn)自動讀寫分離,多節(jié)點(diǎn)負(fù)載均衡,解決當(dāng)數(shù)據(jù)庫服務(wù)器宕機(jī)時,節(jié)點(diǎn)無法工作的情況.寫入主數(shù)據(jù)中的信息利用二進(jìn)制文件會自動更新至從數(shù)據(jù)庫中,保證了主從數(shù)據(jù)庫中數(shù)據(jù)的一致性,使后期維護(hù)更加方便.
系統(tǒng)整體由微信小程序和WEB管理網(wǎng)頁兩部分組成.微信小程序主要設(shè)計為可進(jìn)行簡單的數(shù)據(jù)查詢以及簡單的設(shè)備管理等操作,主要包含設(shè)備查詢、數(shù)據(jù)查詢、設(shè)備控制、客服服務(wù)4個功能模塊,用戶可直接通過微信賬號驗(yàn)證登錄.WEB網(wǎng)頁前端設(shè)計主要采用HTML+CSS+JS編程技術(shù),在前端界面的實(shí)現(xiàn)上采用Layui前端開發(fā)框架,更加輕量和簡單.文中所述系統(tǒng)主要功能模塊及描述如表1所示.
表1 系統(tǒng)主要功能模塊及描述
在測試實(shí)例中主要測試WEB網(wǎng)頁設(shè)備管理功能和數(shù)據(jù)查詢功能的實(shí)現(xiàn).測試項(xiàng)目和觀察結(jié)果如表2所示,測試過程中人為使其中某一服務(wù)器節(jié)點(diǎn)宕機(jī).
表2 測站管理項(xiàng)目測試表
結(jié)合計算機(jī)網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫存儲技術(shù)、前后端開發(fā)技術(shù)等設(shè)計了一套農(nóng)業(yè)灌溉多節(jié)點(diǎn)監(jiān)控系統(tǒng),基于MODBUS協(xié)議以及TCP協(xié)議實(shí)現(xiàn)節(jié)點(diǎn)數(shù)據(jù)查詢和遠(yuǎn)程管理等功能,可以有效緩解因各用水點(diǎn)信息不足導(dǎo)致農(nóng)業(yè)用水浪費(fèi)等熱點(diǎn)問題.具體如下:
1) 相比于其他的監(jiān)控系統(tǒng),在實(shí)現(xiàn)基本的灌溉數(shù)據(jù)監(jiān)控、設(shè)備控制等功能性需求的基礎(chǔ)上,本系統(tǒng)融入了權(quán)限管理模式,結(jié)合RBAC思想,設(shè)計權(quán)限管理系統(tǒng),不同身份的用戶登錄具有不同的可執(zhí)行的操作權(quán)限.
2) 為實(shí)現(xiàn)對大規(guī)模用水節(jié)點(diǎn)的監(jiān)控管理需求,著重設(shè)計實(shí)現(xiàn)了IOT服務(wù)器和WEB服務(wù)器2個服務(wù)器進(jìn)程,其中IOT服務(wù)器面向底層傳感器設(shè)備數(shù)據(jù)設(shè)計,解決大量數(shù)據(jù)并發(fā)以及協(xié)議統(tǒng)一問題.
3) 實(shí)現(xiàn)了工業(yè)通用協(xié)議的解析,用戶也可以根據(jù)業(yè)務(wù)需求自定義協(xié)議解析方法添加至系統(tǒng),為多設(shè)備、多協(xié)議的統(tǒng)一接入管理提供了有效的解決方案.對原先部署的節(jié)點(diǎn)只需要進(jìn)行相應(yīng)的協(xié)議包裝即可接入監(jiān)控系統(tǒng),使該監(jiān)控系統(tǒng)相較于其他類似灌溉系統(tǒng)可以更好地應(yīng)用于大規(guī)模用水節(jié)點(diǎn)的灌溉監(jiān)控情景.