尹亮 邵曉紅 侯志靈
摘 要 通過(guò)對(duì)物聯(lián)網(wǎng)及大數(shù)據(jù)技術(shù)的研究,搭建電科專業(yè)物聯(lián)網(wǎng)教學(xué)實(shí)踐平臺(tái),滿足電科專業(yè)學(xué)生在物聯(lián)網(wǎng)和大數(shù)據(jù)領(lǐng)域的實(shí)踐學(xué)習(xí)需求。實(shí)踐平臺(tái)包括感知層、網(wǎng)絡(luò)層、應(yīng)用層以及數(shù)據(jù)平臺(tái)。感知層是基于X射線熒光原理的檢測(cè)探頭,數(shù)據(jù)通過(guò)4G通信模塊進(jìn)行發(fā)送,服務(wù)器上的監(jiān)聽(tīng)程序?qū)?shù)據(jù)進(jìn)行解碼并存入數(shù)據(jù)庫(kù),數(shù)據(jù)平臺(tái)對(duì)數(shù)據(jù)進(jìn)行分析處理并通過(guò)web展現(xiàn)在頁(yè)面上。
關(guān)鍵詞 物聯(lián)網(wǎng) 大數(shù)據(jù) 電科專業(yè) 實(shí)踐平臺(tái)
中圖分類號(hào):G642 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A ? ?DOI:10.16400/j.cnki.kjdks.2021.01.014
Abstract Through the research on the Internet of Things and big data technology, this paper builds a teaching and practice platform of the Internet of Things for electricity majors to meet the practical and learning needs of electricity majors in the field of the Internet of Things and big data. Practice platform includes perception layer, network layer, application layer and data platform. The sensing layer is a probe based on the principle of X-ray fluorescence. Data is sent through 4G communication module. The listener on the server decodes the data and stores it in the database. The data platform analyzes and processes the data and presents it on the page through the Web.
Keywords Internet of Things; big data; electrical professional; practice platform
針對(duì)北京化工大學(xué)電子科學(xué)與技術(shù)專業(yè)學(xué)生在物聯(lián)網(wǎng)和大數(shù)據(jù)領(lǐng)域的實(shí)踐學(xué)習(xí)需求,結(jié)合土壤重金屬智慧監(jiān)測(cè)相關(guān)科研項(xiàng)目,研發(fā)一套電科專業(yè)物聯(lián)網(wǎng)教學(xué)實(shí)踐平臺(tái)。
1 研究?jī)?nèi)容
教學(xué)實(shí)踐平臺(tái)由采集設(shè)備、通信模塊、數(shù)據(jù)庫(kù)、檢測(cè)平臺(tái)與相關(guān)運(yùn)維部署平臺(tái)以及應(yīng)用展示層五大部分組成。它的工作流程為:終端檢測(cè)設(shè)備采集到數(shù)據(jù)信息,通過(guò)GPRS通信模塊傳輸給運(yùn)行在服務(wù)器上的數(shù)據(jù)庫(kù),后端業(yè)務(wù)代碼對(duì)數(shù)據(jù)進(jìn)行匯總分析并傳遞給前端展示層,用戶可在瀏覽器端打開(kāi)網(wǎng)站查看相關(guān)信息,平臺(tái)開(kāi)發(fā)管理人員可以通過(guò)相關(guān)運(yùn)營(yíng)維護(hù)工具進(jìn)行項(xiàng)目的改造和升級(jí)。
1.1 終端檢測(cè)設(shè)備
土壤重金屬檢測(cè)設(shè)備裝配有基于X射線熒光原理的檢測(cè)探頭。采用基于STM32控制的滑臺(tái)絲杠組系統(tǒng),用于控制探頭能在檢測(cè)機(jī)箱中按要求移動(dòng),保證探頭能夠檢測(cè)到分布在樣品托盤(pán)各處的土壤樣品,實(shí)現(xiàn)土壤樣品的自動(dòng)化檢測(cè)。
采用基于4G數(shù)據(jù)收發(fā)的透明傳輸通信接口,其相當(dāng)于做了一次數(shù)據(jù)中轉(zhuǎn),將一切從設(shè)備傳來(lái)的信息不加處理地發(fā)送給云服務(wù)器。在4G通訊模式下,使用支持以太網(wǎng)協(xié)議的設(shè)備進(jìn)行數(shù)據(jù)中轉(zhuǎn),將相關(guān)數(shù)據(jù)上傳到指定IP的服務(wù)器上。本文采用USR-K2超級(jí)網(wǎng)口作為中轉(zhuǎn)器,接收來(lái)自串口的Chars字符串?dāng)?shù)據(jù),執(zhí)行一系列的解碼轉(zhuǎn)換操作后,根據(jù)設(shè)定好的IP和端口號(hào)進(jìn)行尋址發(fā)送。
1.2 數(shù)據(jù)監(jiān)聽(tīng)
數(shù)據(jù)經(jīng)通訊設(shè)備轉(zhuǎn)發(fā)以后,已部署在服務(wù)器端的監(jiān)聽(tīng)程序此時(shí)可以從正在監(jiān)聽(tīng)的對(duì)應(yīng)端口獲取連接請(qǐng)求,并按照TCP/IP協(xié)議進(jìn)行解碼,監(jiān)聽(tīng)程序?qū)?shù)據(jù)執(zhí)行相應(yīng)的解算操作,并轉(zhuǎn)存至ORACLE數(shù)據(jù)庫(kù)。
監(jiān)聽(tīng)程序部署在云服務(wù)器上運(yùn)行,以保證能對(duì)服務(wù)器端口進(jìn)行實(shí)時(shí)監(jiān)聽(tīng)。一旦監(jiān)測(cè)到設(shè)備連接異常,則馬上進(jìn)行重置機(jī)制——清理異常的連接線程并重連,保證設(shè)備在重連時(shí)不會(huì)被之前發(fā)生異常的線程干擾。此外,它還要負(fù)責(zé)與土壤重金屬檢測(cè)大數(shù)據(jù)平臺(tái)web服務(wù)程序建立連接,保證其和Web服務(wù)程序連接出現(xiàn)異常之后也能夠執(zhí)行重連操作。通過(guò)以上設(shè)計(jì)可以確保連接在遭遇到極端情況下中斷連接之后能夠快速恢復(fù),正常運(yùn)行時(shí)各個(gè)運(yùn)行組件是在維持需求時(shí)間內(nèi)進(jìn)行持續(xù)連接的。
1.3 土壤重金屬檢測(cè)數(shù)據(jù)平臺(tái)
(1)SSM框架選擇。SSM即Spring、SpringMVC、MyBatis的單詞首字母縮寫(xiě),它們分別代表當(dāng)下比較主流的三個(gè)技術(shù)框架,而SSM通常代表這三個(gè)框架的整合,這正適用于搭建各種大型企業(yè)及系統(tǒng),是JavaEE企業(yè)級(jí)框架之一。[1]
當(dāng)用戶在瀏覽器內(nèi)輸入相應(yīng)的網(wǎng)址后,請(qǐng)求到達(dá)服務(wù)器后臺(tái),Spring通過(guò)辨別請(qǐng)求路徑,將請(qǐng)求分發(fā)給對(duì)用的Controller類,Controller類再進(jìn)行調(diào)用Service類來(lái)實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)邏輯,而在這期間Service類中會(huì)調(diào)用數(shù)據(jù)持久層Mybatis完成對(duì)實(shí)體類的數(shù)據(jù)操作,返回處理結(jié)果給Controller,返回Model And View給視圖層,渲染解析完成以后將結(jié)果呈現(xiàn)給用戶。
(2)Web前端搭建。Ajax技術(shù)的核心是XML Http Request對(duì)象,其執(zhí)行流程是:在XML Http Request中使用JavaScript向服務(wù)器后臺(tái)提出請(qǐng)求,即和服務(wù)器進(jìn)行少量數(shù)據(jù)交換,獲取返回結(jié)果后將其提交給客戶端的Ajax引擎,再由引擎來(lái)決定將這些數(shù)據(jù)插入到頁(yè)面的哪個(gè)位置。頁(yè)面在請(qǐng)求后臺(tái)數(shù)據(jù)時(shí)不需要整個(gè)刷新頁(yè)面,而是在當(dāng)前頁(yè)面內(nèi)與后臺(tái)進(jìn)行通信,減少了用戶在使用Web程序時(shí)的等待,這就給用戶提供了良好的用戶體驗(yàn)。[2]
本文采用Free Marker頁(yè)面擔(dān)任MVC設(shè)計(jì)模式中的視圖層。Free Marker是一個(gè)適用于Java項(xiàng)目的模板引擎程序,可以實(shí)現(xiàn)嚴(yán)格的MVC層次分離,同時(shí)也能避免傳統(tǒng)JSP頁(yè)面中嵌入Java代碼導(dǎo)致的維護(hù)困難和由于代碼濫用導(dǎo)致的不良后果,確保了邏輯層和表現(xiàn)層的相對(duì)分離。
(3)運(yùn)維部署平臺(tái)。Swagger 是一個(gè)先進(jìn)的在線接口API文檔,它常被作為前后端交互的橋梁,并且其配套的Swagger-ui界面是一個(gè)符合Restful 風(fēng)格的可視化Web服務(wù)。使用Swagger只需要在項(xiàng)目開(kāi)發(fā)中按照規(guī)范加入相應(yīng)的注解,便能使得項(xiàng)目程序可以和接口文檔更新進(jìn)度相同,所以,只要按照規(guī)范進(jìn)行開(kāi)發(fā),那么API將永遠(yuǎn)和項(xiàng)目保持同步,使管理一個(gè)接口文檔變得簡(jiǎn)單并有效率。本文搭建Swagger在線API接口文檔,學(xué)生在使用過(guò)程中只需在默認(rèn)輸入的網(wǎng)址末尾添加/swagger-ui.html即可進(jìn)入頁(yè)面,查看接口信息,執(zhí)行接口測(cè)試等操作且不會(huì)對(duì)正式數(shù)據(jù)造成影響。
1.4 項(xiàng)目管理工具
(1) Maven私有倉(cāng)庫(kù)。平臺(tái)以Maven進(jìn)行管理,但是部分特殊功能Jar工具包Maven中央倉(cāng)庫(kù)并不包含,需要在服務(wù)器上手動(dòng)搭建一個(gè)Nexus服務(wù)器,將所需Jar工具包上傳,相當(dāng)于搭建一個(gè)私有的Maven庫(kù),保證在編譯過(guò)程中Maven能獲取所有Jar包。
(2) Git私有倉(cāng)庫(kù)。Git是一款開(kāi)源的分布式版本控制系統(tǒng),其特點(diǎn)在于:所有電腦都需要和中央倉(cāng)庫(kù)進(jìn)行聯(lián)網(wǎng)連接,一旦中央倉(cāng)庫(kù)出現(xiàn)問(wèn)題,會(huì)影響所有使用者。所以對(duì)于分布式版本控制系統(tǒng)來(lái)說(shuō),當(dāng)項(xiàng)目文件上傳到Git中央倉(cāng)庫(kù)以后,每個(gè)開(kāi)發(fā)者可以在本地機(jī)器上克隆一份完整的Git倉(cāng)庫(kù),而開(kāi)發(fā)者在自己的機(jī)器上可以根據(jù)需求創(chuàng)建不同代碼分支和修改代碼,這樣就避免了集中式系統(tǒng)的牽一發(fā)而動(dòng)全身的問(wèn)題。開(kāi)發(fā)者之間在Git上的代碼沖突可以進(jìn)行約定代碼提交規(guī)范來(lái)解決。
為了提高平臺(tái)安全級(jí)別以及便于學(xué)生使用,本文未將項(xiàng)目代碼開(kāi)源到Github中,而是選擇Gitblit作為私有的Git服務(wù)器,由于它是搭建在私有服務(wù)器內(nèi)的,確保項(xiàng)目不會(huì)被隨意篡改,同時(shí)它體積小,容易遷移和使用。
(3)Jenkins運(yùn)維部署。運(yùn)維部署Jenkins平臺(tái)服務(wù)器環(huán)境,安裝相關(guān)插件,經(jīng)過(guò)數(shù)次編譯構(gòu)建,僅第一次初始化構(gòu)建項(xiàng)目需要進(jìn)行約半小時(shí)的等待,后續(xù)只要代碼提交后,Jenkins能在5分鐘內(nèi)完成整個(gè)項(xiàng)目的編譯構(gòu)建和打包操作,所用時(shí)間控制在合理范圍內(nèi)。
2 項(xiàng)目測(cè)試
對(duì)實(shí)踐平臺(tái)各功能模塊進(jìn)行測(cè)試。通過(guò)對(duì)用戶注冊(cè)/登錄、土壤采集項(xiàng)的控制和查閱、報(bào)警信息的查看和處理、設(shè)備的信息和狀態(tài)、系統(tǒng)權(quán)限的分配、系統(tǒng)運(yùn)行狀態(tài)以及對(duì)數(shù)據(jù)進(jìn)行圖表分析化等功能模塊的查看,結(jié)果表明平臺(tái)所有功能處于正常運(yùn)行狀態(tài),并且有比較快的頁(yè)面響應(yīng)速度。
參考文獻(xiàn)
[1] 榮艷冬.關(guān)于Mybatis持久層框架的應(yīng)用研究[J].信息安全與技術(shù),2015,6(12):86-88.
[2] 雷建勝,蘇曉,金明磊.一種分布式可持續(xù)集成自動(dòng)化測(cè)試平臺(tái)[J].計(jì)算機(jī)與現(xiàn)代化,2020(04):14-18.