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