劉宇航
(沈陽(yáng)化工大學(xué),遼寧 沈陽(yáng)110142)
隨著現(xiàn)代化建設(shè)的大力發(fā)展、生活水平的不斷提高也加劇了地表水環(huán)境的污染,我國(guó)當(dāng)前已將發(fā)展在線水質(zhì)監(jiān)測(cè)作為保障水安全和治理水污染的重要技術(shù)方案。而目前的水質(zhì)質(zhì)量監(jiān)測(cè)工作主要是以實(shí)驗(yàn)室的儀器分析、人工的現(xiàn)場(chǎng)采樣為主。雖然在實(shí)驗(yàn)室中的檢測(cè)分析手段完備,但實(shí)驗(yàn)室監(jiān)測(cè)存在采樣誤差大、檢測(cè)數(shù)據(jù)分散、監(jiān)測(cè)頻次低、不能及時(shí)反映水質(zhì)污染變化情況等缺點(diǎn),而且無(wú)法實(shí)現(xiàn)多臺(tái)檢測(cè)設(shè)備遠(yuǎn)程在線監(jiān)測(cè)的需求,因此本文結(jié)合了物聯(lián)網(wǎng)的技術(shù),讓管理者通過(guò)瀏覽器的形式實(shí)現(xiàn)對(duì)水質(zhì)的遠(yuǎn)程在線監(jiān)測(cè)。
考慮到系統(tǒng)對(duì)遠(yuǎn)程監(jiān)測(cè)功能的需求,相較于傳統(tǒng)的C/S 模式,需要運(yùn)行專門的客戶端軟件并且不能跨平臺(tái)使用,而本文所選取的B/S 模式- 瀏覽器/服務(wù)器模式,可以實(shí)現(xiàn)在隨時(shí)隨地都可以通過(guò)瀏覽器對(duì)檢測(cè)設(shè)備的控制。系統(tǒng)結(jié)構(gòu)如圖1,瀏覽器主要負(fù)責(zé)用戶與后臺(tái)的交互,Web 服務(wù)器作為中間事務(wù)處理的節(jié)點(diǎn),既要響應(yīng)瀏覽器客戶端發(fā)來(lái)的訪問(wèn)請(qǐng)求,又要連接數(shù)據(jù)庫(kù)執(zhí)行相對(duì)應(yīng)的數(shù)據(jù)請(qǐng)求,并最終將結(jié)果返還給客戶端,在瀏覽器頁(yè)面上以圖形界面的方式展示出來(lái)[1,2]。Web 服務(wù)與物聯(lián)網(wǎng)技術(shù)的融合,可以將物聯(lián)網(wǎng)中的不同物聯(lián)網(wǎng)對(duì)象,比如各種控制系統(tǒng)和各類傳感器節(jié)點(diǎn),成功的聯(lián)系起來(lái),將Web 服務(wù)作為統(tǒng)一的接口,下與水質(zhì)監(jiān)測(cè)設(shè)備連接,為采集的數(shù)據(jù)提供上傳處理的接口,上與應(yīng)用層相連接,為用戶提供簡(jiǎn)單的界面管理操作的接口,最終可實(shí)現(xiàn)用戶獲取到不同控制系統(tǒng)設(shè)備及應(yīng)用上層應(yīng)用所提供的服務(wù)[3]。
圖1 系統(tǒng)結(jié)構(gòu)
云平臺(tái)采用在Linux 系統(tǒng)下安裝MQTT Broker 并部署Web應(yīng)用,服務(wù)器后臺(tái)業(yè)務(wù)邏輯基于Tornado 框架完成對(duì)下層物聯(lián)網(wǎng)網(wǎng)關(guān)上傳的數(shù)據(jù)進(jìn)行分析處理。
其中MQTT(消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基于發(fā)布/訂閱模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議建立在TCP/IP 協(xié)議的基礎(chǔ)之上,能用很少的代碼和有限的帶寬,為檢測(cè)設(shè)備的遠(yuǎn)程連接提供實(shí)時(shí)可靠的數(shù)據(jù)交互服務(wù),是一種低帶寬占用、低開銷的即時(shí)通訊協(xié)議[4];Tornado 是用Python 語(yǔ)言編寫的一個(gè)Web 服務(wù)器兼Web 應(yīng)用框架,它有較為出色的抗負(fù)載能力,在處理嚴(yán)峻的網(wǎng)絡(luò)流量時(shí)優(yōu)勢(shì)明顯,在創(chuàng)建和編寫時(shí)有足夠的輕量級(jí),能夠簡(jiǎn)單快速地編寫高速的Web 應(yīng)用[5,6],十分適用于物聯(lián)網(wǎng)技術(shù)中。負(fù)責(zé)和云平臺(tái)通信、維護(hù)數(shù)據(jù)庫(kù),同時(shí)完成對(duì)多瀏覽器前端的訪問(wèn)請(qǐng)求響應(yīng)。后臺(tái)程序使用Python 語(yǔ)言編寫,頁(yè)面前端利用HTML 和CSS 語(yǔ)言裝載并渲染網(wǎng)頁(yè)內(nèi)容,利用JavaScript來(lái)響應(yīng)用戶輸入,并完成與后端數(shù)據(jù)庫(kù)的交互。以MySQL 數(shù)據(jù)庫(kù)為數(shù)據(jù)存儲(chǔ)系統(tǒng)。
在前端頁(yè)面開發(fā)設(shè)計(jì)中分兩大模塊,分別是前臺(tái)信息展現(xiàn)模塊和后臺(tái)管理模塊。前臺(tái)信息展現(xiàn)模塊主要功能是展現(xiàn)信息供用戶瀏覽,該模塊頁(yè)面渲染在后臺(tái)完成,大部分為靜態(tài)文本。對(duì)于后臺(tái)管理模塊, 主要采用了 MVVM 架構(gòu),即Model-View-ViewModel 它將視圖UI 和業(yè)務(wù)邏輯分開,使得應(yīng)用軟件UI 層實(shí)現(xiàn)可定制化和細(xì)節(jié)化通過(guò)angularJS 框架來(lái)實(shí)現(xiàn)[7]。用戶前端展示頁(yè)面則通過(guò)Ajax 技術(shù)實(shí)現(xiàn)頁(yè)面異步刷新,簡(jiǎn)單來(lái)講,Ajax 技術(shù)是能夠?qū)崿F(xiàn)對(duì)局部網(wǎng)頁(yè)刷新并且不重新加載整個(gè)網(wǎng)頁(yè)的技術(shù)[8,9]。
Ajax 工作原理如圖2 所示。使用Noed.js 作為JavaScript 運(yùn)行環(huán)境,軟件作為包管理工具,Umi 項(xiàng)目模板作為前端開發(fā)框架。設(shè)計(jì)時(shí)將頁(yè)面分為導(dǎo)航欄、內(nèi)容區(qū)、底欄這三塊,并將網(wǎng)頁(yè)功能分為多個(gè)組件,包括檢測(cè)金屬光源、檢測(cè)狀態(tài)、采樣設(shè)置,以及濃度/吸光度曲線圖組件、報(bào)警表格組件,主要編輯的文件內(nèi)拆解Ul 組件。
圖2 Ajax 工作原理
在頁(yè)面中需要確定各子組件布局及位置,各組件中需嵌套設(shè)備數(shù)據(jù)的相應(yīng)變化。實(shí)時(shí)監(jiān)測(cè)功能將參數(shù)處理成可視化數(shù)據(jù),在后端程序可根據(jù)檢測(cè)需求,采用線性回歸或者擬合方式的算法對(duì)數(shù)據(jù)進(jìn)行處理,進(jìn)而發(fā)送到前端界面,通過(guò)曲線圖或折線圖等易分析的方式呈現(xiàn)數(shù)據(jù)的變化,讓管理者直觀的得到是否滿足檢測(cè)需求的結(jié)果。
元素?zé)艏氨尘盁艉竺鏋閱芜x框,默認(rèn)為“關(guān)”的狀態(tài),當(dāng)選擇為“開”的狀態(tài)時(shí),立即與下位機(jī)檢測(cè)設(shè)備通訊,對(duì)設(shè)備的系統(tǒng)燈或背景燈進(jìn)行操作。
采樣模式為下拉菜單,可分為自動(dòng)和手動(dòng)兩種方式。自動(dòng)模式為首先管理者設(shè)置采樣次數(shù),當(dāng)采樣次數(shù)達(dá)到設(shè)定值,自動(dòng)計(jì)算將所有的采樣值求單次,自動(dòng)在右側(cè)表格生成相應(yīng)數(shù)據(jù),且只需在第一次采樣前按下“采樣”按鈕。手動(dòng)模式為每次采樣前均需按下“采樣”按鈕,達(dá)到采樣次數(shù)后需按下“計(jì)算”按鈕。
對(duì)樣品采樣前,需先建立標(biāo)樣的濃度/吸光度曲線,可以手動(dòng)輸入已知標(biāo)樣的濃度和吸光度,標(biāo)樣表可以滾動(dòng)添加行數(shù)據(jù),建立曲線方式由下側(cè)的擬合方式或回歸方式(下拉菜單)確定。
采樣時(shí),每完成一次采樣,吸光度的最大值就填入采樣表格的相應(yīng)位置,通過(guò)與之前建立好的標(biāo)樣曲線對(duì)比,就會(huì)得到水質(zhì)監(jiān)測(cè)的重金屬濃度。
目前傳統(tǒng)的水質(zhì)檢測(cè)過(guò)程監(jiān)控一般由現(xiàn)場(chǎng)操作員站技術(shù)人員進(jìn)行現(xiàn)場(chǎng)監(jiān)控[10]。本課題借助于物聯(lián)網(wǎng)技術(shù)的發(fā)展及在工業(yè)領(lǐng)域的應(yīng)用,在傳統(tǒng)現(xiàn)場(chǎng)監(jiān)控系統(tǒng)的基礎(chǔ)上,實(shí)現(xiàn)遠(yuǎn)程的瀏覽器控制監(jiān)測(cè),賦予其新的功能,解決水質(zhì)監(jiān)測(cè)過(guò)程中產(chǎn)生的實(shí)時(shí)數(shù)據(jù)的采集、傳輸與存儲(chǔ)、在線展示的問(wèn)題。從而極大地提高了監(jiān)測(cè)過(guò)程中的效率同時(shí)節(jié)省生產(chǎn)成本和人力。