孫鋼燦 張寧寧 趙傳勇
1(鄭州大學(xué)信息工程學(xué)院 河南 鄭州 450000) 2(鄭州大學(xué)產(chǎn)業(yè)技術(shù)研究院有限公司 河南 鄭州 450000)
在社會(huì)基礎(chǔ)設(shè)施建設(shè)中,考慮到安全性和美觀性,很多設(shè)施采用地下建設(shè)的方式,如電力電纜、通信光纖、燃?xì)庠O(shè)備、供水設(shè)備等[3]。這些功能井方便了人們的生活,優(yōu)化了社會(huì)環(huán)境,但此類功能井也存在著很多現(xiàn)實(shí)的問題:1) 井內(nèi)設(shè)施被盜造成區(qū)域停水、停電、停氣,嚴(yán)重影響群眾正常生活;2) 電力設(shè)備通常需要頻繁的技術(shù)維護(hù)和支持,多人員交叉下井而責(zé)任分配不清給系統(tǒng)管理帶來極大負(fù)擔(dān);3) 井蓋破損和丟失嚴(yán)重威脅行人和行駛車輛安全,導(dǎo)致安全事故發(fā)生。
針對(duì)上述問題,為解決以往井蓋定位系統(tǒng)過于簡單的現(xiàn)狀,本文基于井蓋和鎖相匹配并為井蓋配備專用智能鑰匙的思想[4-5],設(shè)計(jì)井蓋鎖監(jiān)測(cè)管理系統(tǒng),實(shí)現(xiàn)了對(duì)井蓋全時(shí)段上鎖并動(dòng)態(tài)監(jiān)控、實(shí)時(shí)報(bào)警。有效解決功能井井蓋易丟失、無法及時(shí)修補(bǔ)等問題,消除安全隱患,使得人與物之間的互聯(lián)關(guān)系更加密切。
智能井蓋鎖監(jiān)測(cè)管理系統(tǒng)是針對(duì)市政功能井使用過程中暴露出的問題提出的一種基于物聯(lián)網(wǎng)技術(shù)的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)[6],在設(shè)計(jì)方面不僅實(shí)現(xiàn)了主要業(yè)務(wù)功能,還考慮了可操作性。該系統(tǒng)是連接客戶需求、人員管理、鎖具和鑰匙的紐帶,在設(shè)計(jì)過程中遵循了穩(wěn)定可靠原則、簡單易用原則、全面充分原則和可維護(hù)擴(kuò)展原則。
本系統(tǒng)在物聯(lián)網(wǎng)的基礎(chǔ)上,基于SSM框架和B/S架構(gòu)[7-9],由智能井蓋鎖、智能鑰匙、物聯(lián)網(wǎng)、云服務(wù)器、云系統(tǒng)Web端、系統(tǒng)移動(dòng)端等部分組成,以無線通信為媒介,以云服務(wù)器為信息載體,給每個(gè)井蓋配備專用鎖,井蓋鎖和鑰匙之間通過NFC模塊進(jìn)行通信,井蓋通過NB-IoT無線通信模塊將信息上傳到云端,平臺(tái)PC端和云服務(wù)器之間基于ICMP規(guī)則,采用TCP協(xié)議進(jìn)行通信[10]。系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
在系統(tǒng)設(shè)計(jì)中,我們采用三層架構(gòu)搭建系統(tǒng)的整體框架,它們分別是表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。
表示層又稱Web層,負(fù)責(zé)收集客戶端信息,然后把收集到的信息發(fā)送到業(yè)務(wù)邏輯層進(jìn)行處理,處理結(jié)果將返回給用戶端。業(yè)務(wù)邏輯層又稱BLL層,負(fù)責(zé)接收表示層發(fā)送的消息,并與數(shù)據(jù)層進(jìn)行數(shù)據(jù)交互,可以進(jìn)行業(yè)務(wù)邏輯以及系統(tǒng)服務(wù)的操作,將最終的處理結(jié)果返回給表示層。業(yè)務(wù)邏輯層相當(dāng)于表示層和數(shù)據(jù)訪問層之間的橋梁。數(shù)據(jù)訪問層又稱DAL層,主要負(fù)責(zé)數(shù)據(jù)相關(guān)的操作,對(duì)數(shù)據(jù)進(jìn)行資源管理。整個(gè)框架結(jié)構(gòu)如圖2所示。
圖2 平臺(tái)開發(fā)架構(gòu)
使用這樣的三層架構(gòu)具有極大優(yōu)勢(shì),可以快速訪問數(shù)據(jù)庫,對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行增刪查改操作,同時(shí)保障系統(tǒng)運(yùn)行穩(wěn)定和數(shù)據(jù)安全。表示層提供良好的人機(jī)交互,使用者可以利用圖形界面進(jìn)行相關(guān)操作,表示層接收到操作指令時(shí)觸發(fā)對(duì)應(yīng)的事件處理機(jī)制,將用戶信息提供給業(yè)務(wù)邏輯層。數(shù)據(jù)訪問層處理業(yè)務(wù)邏輯層的請(qǐng)求,提供文件服務(wù)、權(quán)限管理、消息隊(duì)列、數(shù)據(jù)訪問等功能。各層進(jìn)行信息交互時(shí)通過M(Model)、V(View)、C(Controller)設(shè)計(jì)模式實(shí)現(xiàn)。其開發(fā)理念為使用業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方式來開發(fā)系統(tǒng),很大程度上消除了應(yīng)用間的高耦合。
根據(jù)系統(tǒng)功能分析及架構(gòu)設(shè)計(jì),將智能井蓋監(jiān)測(cè)管理系統(tǒng)分為平臺(tái)管理、系統(tǒng)管理和個(gè)人中心三大模塊。
平臺(tái)管理模塊是主要功能模塊,負(fù)責(zé)核心任務(wù),包含七個(gè)任務(wù)中心。系統(tǒng)管理模塊負(fù)責(zé)系統(tǒng)的人員、區(qū)域、角色、模塊的增刪查改,展示系統(tǒng)的操作日志等。個(gè)人中心模塊提供基礎(chǔ)功能,用戶進(jìn)行登入登出、修改密碼、修改個(gè)人信息等。
平臺(tái)管理模塊提供了系統(tǒng)的主要功能。下面對(duì)平臺(tái)管理模塊的授權(quán)功能進(jìn)行說明。授權(quán)中心主要實(shí)現(xiàn)智能設(shè)備井蓋鎖和鑰匙的添加和授權(quán)。通過NB-IoT無線技術(shù)連接硬件,獲取鑰匙和鎖的MAC地址進(jìn)行系列操作。井蓋鎖和鑰匙授權(quán)流程如圖3所示。
圖3 井蓋鎖、鑰匙授權(quán)流程
“我的通知”界面以列表形式展現(xiàn)歷史通知日志。在“我的規(guī)則”界面,用戶可以查看規(guī)則列表,添加新的規(guī)則,訂閱用戶,對(duì)已有的規(guī)則進(jìn)行修改刪除。報(bào)表中心以折線圖的形式展示設(shè)備最近一周運(yùn)行狀況:正常井蓋、異常井蓋、正常打開井蓋的數(shù)量。
對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行設(shè)計(jì)開發(fā)是Java Web應(yīng)用系統(tǒng)的重要組成部分。因?yàn)橄到y(tǒng)中包含大量數(shù)據(jù),大量數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中進(jìn)行共享和訪問[11]。同時(shí),數(shù)據(jù)安全是系統(tǒng)安全的必要組成。智能井蓋監(jiān)測(cè)管理系統(tǒng)中的實(shí)體主要有智能鎖、告警、規(guī)則、授權(quán)、鑰匙、人員、區(qū)域、角色、模塊、系統(tǒng)操作。借助E-R(實(shí)體-關(guān)系)圖來展示各實(shí)體及其關(guān)系。系統(tǒng)中主要的實(shí)體-關(guān)系圖如圖4所示。
圖4 系統(tǒng)實(shí)體-關(guān)系圖
智能井蓋監(jiān)測(cè)系統(tǒng)利用MySQL數(shù)據(jù)庫儲(chǔ)存系統(tǒng)數(shù)據(jù)[12],由于系統(tǒng)較大,構(gòu)建了51張數(shù)據(jù)表,包括授權(quán)表、物聯(lián)網(wǎng)設(shè)備表、用戶表、區(qū)域表等。此處選取物聯(lián)網(wǎng)設(shè)備表進(jìn)行相關(guān)說明,物聯(lián)網(wǎng)設(shè)備表用來存儲(chǔ)智能鎖相關(guān)的21條信息,結(jié)構(gòu)如表1所示。
表1 物聯(lián)網(wǎng)設(shè)備表
基于SSM框架的智能井蓋監(jiān)測(cè)管理系統(tǒng)分為三層結(jié)構(gòu),分別是表現(xiàn)層、服務(wù)層和持久層,同時(shí)采用了Redis等中間件功能。
表現(xiàn)層(Web層):用于顯示客戶端視圖。表現(xiàn)層文件包括JSP、HTML和CSS。利用SpringMVC框架實(shí)現(xiàn),主要功能是在瀏覽器上顯示視圖、接收用戶請(qǐng)求、利用HTTP協(xié)議向服務(wù)器發(fā)送用戶的請(qǐng)求。
服務(wù)層(service層):實(shí)現(xiàn)主要的業(yè)務(wù)邏輯,利用Spring框架實(shí)現(xiàn)。接收表現(xiàn)層發(fā)送的用戶請(qǐng)求,并進(jìn)行一系列邏輯處理,如果需要利用數(shù)據(jù)庫,則轉(zhuǎn)發(fā)請(qǐng)求到持久層,持久層操作數(shù)據(jù)庫獲得信息返回service層,service層將處理結(jié)果返回給表現(xiàn)層。
持久層(dao層):利用Mybatis框架實(shí)現(xiàn),主要負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行交互,在這一層封裝對(duì)數(shù)據(jù)庫訪問的細(xì)節(jié),接收service層發(fā)送的請(qǐng)求之后,對(duì)數(shù)據(jù)庫進(jìn)行增刪查改操作。
平臺(tái)管理模塊是系統(tǒng)的核心模塊,設(shè)置有授權(quán)中心、設(shè)備管理中心、站點(diǎn)管理、鎖具中心、控制器中心、消息中心,以及報(bào)表中心等?,F(xiàn)在以授權(quán)管理中心、報(bào)表中心和消息中心進(jìn)行闡述。
3.2.1授權(quán)中心實(shí)現(xiàn)
授權(quán)中心包含了離線單個(gè)授權(quán)、井蓋鎖授權(quán)、掛鎖授權(quán)、添加鑰匙,以及添加智能鎖五個(gè)界面及其子界面。離線單個(gè)授權(quán)表現(xiàn)層通過OfflineAction類實(shí)現(xiàn),涉及的持久化接口包括authLogDao、keysAuthDao、ikeyssDao、disDao、ilocksDao、deptDao。在進(jìn)行離線單個(gè)授權(quán)時(shí),首先利用RedisTemplate操作工具類RedisTemplateUtil獲取藍(lán)牙客戶端服務(wù)器緩存的數(shù)據(jù),若數(shù)據(jù)為空或者不為“123”,則提示“請(qǐng)啟動(dòng)中間件串口服務(wù)程序”,否則根據(jù)用戶的操作利用IOTAuthModel中的方法進(jìn)行實(shí)現(xiàn)。智能井蓋的鑰匙控制模塊會(huì)將鑰匙信息通過NB-IoT模塊上傳到云端服務(wù)器,當(dāng)對(duì)鑰匙進(jìn)行操作的時(shí)候通過不同的指令獲取對(duì)應(yīng)的authModel。將獲取的authModel和request請(qǐng)求的session中的userUUID拼接成authKey,放到redis緩存中。等待一段時(shí)間后,利用ResponseLockUtil進(jìn)行IoT設(shè)備解析,獲取返回值。若返回值為空,則返回JSON字符串,提示“未獲取到數(shù)據(jù),請(qǐng)重新獲取”。若返回值不為空,則返回對(duì)應(yīng)的值,提示操作成功。
3.2.2報(bào)表中心實(shí)現(xiàn)
報(bào)表中心以折線圖的形式展現(xiàn)最近一周正常井蓋、打開井蓋、異常井蓋的數(shù)量變化。圖表實(shí)現(xiàn)利用echarts。用戶點(diǎn)擊“報(bào)表中心”子界面時(shí),調(diào)用echart的index.jsp命令,引入echarts,通過使用echarts.init方法來初始化一個(gè)echarts實(shí)例和使用setOption方法生成一個(gè)折線圖。當(dāng)表現(xiàn)層發(fā)送請(qǐng)求,后臺(tái)利用EchartAction類進(jìn)行實(shí)現(xiàn),通過deviceDao查詢?cè)O(shè)備表獲取正常設(shè)備的數(shù)量,通過deviceErrorLogDao查詢?cè)O(shè)備故障日志,獲取其中打開設(shè)備和異常設(shè)備的數(shù)量,查詢結(jié)果返回前端表現(xiàn)層。
3.2.3消息中心實(shí)現(xiàn)
通過消息中心能實(shí)時(shí)、直觀、準(zhǔn)確地展示各種工作日志內(nèi)容,主要包括授權(quán)日志、設(shè)備信息日志、開關(guān)鎖日志。在進(jìn)行功能操作時(shí),后臺(tái)會(huì)將操作日志存儲(chǔ)在Action中,供管理員查詢維護(hù)。授權(quán)日志包含授權(quán)名稱、創(chuàng)建時(shí)間、授權(quán)類型、授權(quán)人員等關(guān)鍵信息。當(dāng)用戶對(duì)設(shè)備進(jìn)行授權(quán)時(shí),將以上授權(quán)信息通過AuthLog對(duì)象在RedisAction類中存儲(chǔ),通過IAthLogDao接口,數(shù)據(jù)固化到數(shù)據(jù)庫中。設(shè)備信息日志在對(duì)設(shè)備進(jìn)行監(jiān)測(cè)時(shí)存儲(chǔ)包含設(shè)備名稱、通知內(nèi)容、預(yù)警狀態(tài)、創(chuàng)建時(shí)間等信息。開關(guān)鎖日志用于存儲(chǔ)用戶開關(guān)鎖操作信息。在對(duì)設(shè)備進(jìn)行操作時(shí),通過apiLog方法添加開鎖日志,通過openLogDao存儲(chǔ)openLog對(duì)象。通過OpenLockAction類中的list、update、likelist、prView等命令可以查看日志,以及進(jìn)行精確查詢和模糊查詢操作。
3.2.4華為云服務(wù)器端實(shí)現(xiàn)
選擇華為云作為云服務(wù)器提供商,在華為云上部署Java Web項(xiàng)目。購買華為云的彈性云服務(wù)器之后會(huì)分配一個(gè)彈性IP,外網(wǎng)訪問的時(shí)候,即入站則選用這個(gè)IP。另外分配一個(gè)私有IP,關(guān)聯(lián)自己的服務(wù)器。先為服務(wù)器分配ICMP規(guī)則,否則ping的時(shí)候會(huì)請(qǐng)求超時(shí),然后為Java Web項(xiàng)目分配8080端口和訪問規(guī)則。服務(wù)器的安裝部署完成后,仍然只能通過localhost本地去訪問,若要通過公網(wǎng)訪問還需要在云服務(wù)器后臺(tái)設(shè)置出入規(guī)則。設(shè)置完成后可以ping通這臺(tái)云服務(wù)器的公網(wǎng)地址,并可以在公網(wǎng)通過IP和端口訪問云服務(wù)器部署的Web項(xiàng)目。
根據(jù)設(shè)計(jì)過程,采用B/S網(wǎng)絡(luò)模式、SSM框架、HTML、CSS、Ajax技術(shù)、Java作為開發(fā)語言實(shí)現(xiàn)了個(gè)人中心、設(shè)備數(shù)據(jù)主界面顯示、設(shè)備授權(quán)中心、管理中心、系統(tǒng)報(bào)警、報(bào)表中心等模塊功能。
個(gè)人中心前臺(tái)界面是云系統(tǒng)呈現(xiàn)給客戶的第一要素,要在盡量簡約的情況下突出產(chǎn)品的科技感,減少操作的繁瑣性。登錄界面如圖5所示。
圖5 個(gè)人中心
系統(tǒng)主頁面是日常觀測(cè)頁面,為了更加直觀地顯示每個(gè)功能井的位置,本平臺(tái)設(shè)計(jì)調(diào)用了百度地圖API模塊,通過開發(fā)百度網(wǎng)頁,實(shí)現(xiàn)地圖加載功能。通過JavaScript腳本語言在網(wǎng)站中創(chuàng)建地圖應(yīng)用。系統(tǒng)主界面如圖6所示。
圖6 系統(tǒng)主界面
采用顏色區(qū)分井蓋工作模式,來更直觀地顯示其狀態(tài),綠色表示正常工作,黑色表示井蓋鎖掉線,紅色則表示井蓋被非正常打開且未得到處理。圖7為井蓋鎖掉線的狀態(tài)下的數(shù)據(jù)。
圖7 掉線鎖具信息
工作信息記錄并上報(bào)是本系統(tǒng)的一個(gè)重要功能,主要記錄每個(gè)設(shè)備被打開的情況和時(shí)間、是否異常打開,方便管理員做好工作記錄。上報(bào)信息如圖8所示。
圖8 設(shè)備報(bào)警
智能鎖具要連接到本系統(tǒng)需要系統(tǒng)對(duì)其進(jìn)行授權(quán),輸入智能鎖編號(hào)和唯一識(shí)別碼可得到管理員授權(quán)接入系統(tǒng),授權(quán)操作如圖9所示。
圖9 授權(quán)綁定
授權(quán)成功界面如圖10所示。
圖10 授權(quán)成功
報(bào)表功能實(shí)現(xiàn)效果如圖11所示,系統(tǒng)對(duì)投入實(shí)驗(yàn)的智能鎖進(jìn)行每周統(tǒng)計(jì)并生成報(bào)表供工作人員參考,其中包括井蓋正常數(shù)量,每天的打開數(shù)量和異常打開數(shù)量,根據(jù)大數(shù)據(jù)的分析,方便工作人員數(shù)據(jù)的統(tǒng)計(jì)和維護(hù)工作總結(jié)。
圖11 報(bào)表顯示
本文基于云服務(wù)器實(shí)現(xiàn)了對(duì)重要功能井的全面監(jiān)控和位置鎖定功能,降低了人們違規(guī)撬動(dòng)井蓋的動(dòng)機(jī),一旦發(fā)生異動(dòng),第一責(zé)任人實(shí)時(shí)收到系統(tǒng)發(fā)出的消息并及時(shí)處理。插入百度地圖API,在地圖上直觀地顯示井蓋狀況以及鎖具自身狀況,同時(shí),設(shè)計(jì)了智能鎖具、鑰匙授權(quán)和數(shù)據(jù)統(tǒng)計(jì)管理等功能模塊。通過數(shù)據(jù)庫設(shè)計(jì)可完成對(duì)龐大井蓋群的監(jiān)管,以大數(shù)據(jù)分析思路改變工作戰(zhàn)略。下一步,還需要降低產(chǎn)品造價(jià)以推廣到城市普通井蓋,方便人們出行,減少隱患發(fā)生,保護(hù)行人人身安全。日后還可對(duì)工作記錄日志中的相關(guān)數(shù)據(jù)進(jìn)行深度挖掘來發(fā)現(xiàn)有用價(jià)值。