孫鋼燦 張寧寧 趙傳勇
1(鄭州大學信息工程學院 河南 鄭州 450000) 2(鄭州大學產業技術研究院有限公司 河南 鄭州 450000)
在社會基礎設施建設中,考慮到安全性和美觀性,很多設施采用地下建設的方式,如電力電纜、通信光纖、燃氣設備、供水設備等[3]。這些功能井方便了人們的生活,優化了社會環境,但此類功能井也存在著很多現實的問題:1) 井內設施被盜造成區域停水、停電、停氣,嚴重影響群眾正常生活;2) 電力設備通常需要頻繁的技術維護和支持,多人員交叉下井而責任分配不清給系統管理帶來極大負擔;3) 井蓋破損和丟失嚴重威脅行人和行駛車輛安全,導致安全事故發生。
針對上述問題,為解決以往井蓋定位系統過于簡單的現狀,本文基于井蓋和鎖相匹配并為井蓋配備專用智能鑰匙的思想[4-5],設計井蓋鎖監測管理系統,實現了對井蓋全時段上鎖并動態監控、實時報警。有效解決功能井井蓋易丟失、無法及時修補等問題,消除安全隱患,使得人與物之間的互聯關系更加密切。
智能井蓋鎖監測管理系統是針對市政功能井使用過程中暴露出的問題提出的一種基于物聯網技術的實時監測系統[6],在設計方面不僅實現了主要業務功能,還考慮了可操作性。該系統是連接客戶需求、人員管理、鎖具和鑰匙的紐帶,在設計過程中遵循了穩定可靠原則、簡單易用原則、全面充分原則和可維護擴展原則。
本系統在物聯網的基礎上,基于SSM框架和B/S架構[7-9],由智能井蓋鎖、智能鑰匙、物聯網、云服務器、云系統Web端、系統移動端等部分組成,以無線通信為媒介,以云服務器為信息載體,給每個井蓋配備專用鎖,井蓋鎖和鑰匙之間通過NFC模塊進行通信,井蓋通過NB-IoT無線通信模塊將信息上傳到云端,平臺PC端和云服務器之間基于ICMP規則,采用TCP協議進行通信[10]。系統整體架構如圖1所示。

圖1 系統整體架構
在系統設計中,我們采用三層架構搭建系統的整體框架,它們分別是表示層、業務邏輯層和數據訪問層。
表示層又稱Web層,負責收集客戶端信息,然后把收集到的信息發送到業務邏輯層進行處理,處理結果將返回給用戶端。業務邏輯層又稱BLL層,負責接收表示層發送的消息,并與數據層進行數據交互,可以進行業務邏輯以及系統服務的操作,將最終的處理結果返回給表示層。業務邏輯層相當于表示層和數據訪問層之間的橋梁。數據訪問層又稱DAL層,主要負責數據相關的操作,對數據進行資源管理。整個框架結構如圖2所示。

圖2 平臺開發架構
使用這樣的三層架構具有極大優勢,可以快速訪問數據庫,對存儲數據進行增刪查改操作,同時保障系統運行穩定和數據安全。表示層提供良好的人機交互,使用者可以利用圖形界面進行相關操作,表示層接收到操作指令時觸發對應的事件處理機制,將用戶信息提供給業務邏輯層。數據訪問層處理業務邏輯層的請求,提供文件服務、權限管理、消息隊列、數據訪問等功能。各層進行信息交互時通過M(Model)、V(View)、C(Controller)設計模式實現。其開發理念為使用業務邏輯、數據、界面顯示分離的方式來開發系統,很大程度上消除了應用間的高耦合。
根據系統功能分析及架構設計,將智能井蓋監測管理系統分為平臺管理、系統管理和個人中心三大模塊。
平臺管理模塊是主要功能模塊,負責核心任務,包含七個任務中心。系統管理模塊負責系統的人員、區域、角色、模塊的增刪查改,展示系統的操作日志等。個人中心模塊提供基礎功能,用戶進行登入登出、修改密碼、修改個人信息等。
平臺管理模塊提供了系統的主要功能。下面對平臺管理模塊的授權功能進行說明。授權中心主要實現智能設備井蓋鎖和鑰匙的添加和授權。通過NB-IoT無線技術連接硬件,獲取鑰匙和鎖的MAC地址進行系列操作。井蓋鎖和鑰匙授權流程如圖3所示。

圖3 井蓋鎖、鑰匙授權流程
“我的通知”界面以列表形式展現歷史通知日志。在“我的規則”界面,用戶可以查看規則列表,添加新的規則,訂閱用戶,對已有的規則進行修改刪除。報表中心以折線圖的形式展示設備最近一周運行狀況:正常井蓋、異常井蓋、正常打開井蓋的數量。
對數據庫系統進行設計開發是Java Web應用系統的重要組成部分。因為系統中包含大量數據,大量數據存儲在數據庫中進行共享和訪問[11]。同時,數據安全是系統安全的必要組成。智能井蓋監測管理系統中的實體主要有智能鎖、告警、規則、授權、鑰匙、人員、區域、角色、模塊、系統操作。借助E-R(實體-關系)圖來展示各實體及其關系。系統中主要的實體-關系圖如圖4所示。

圖4 系統實體-關系圖
智能井蓋監測系統利用MySQL數據庫儲存系統數據[12],由于系統較大,構建了51張數據表,包括授權表、物聯網設備表、用戶表、區域表等。此處選取物聯網設備表進行相關說明,物聯網設備表用來存儲智能鎖相關的21條信息,結構如表1所示。

表1 物聯網設備表
基于SSM框架的智能井蓋監測管理系統分為三層結構,分別是表現層、服務層和持久層,同時采用了Redis等中間件功能。
表現層(Web層):用于顯示客戶端視圖。表現層文件包括JSP、HTML和CSS。利用SpringMVC框架實現,主要功能是在瀏覽器上顯示視圖、接收用戶請求、利用HTTP協議向服務器發送用戶的請求。
服務層(service層):實現主要的業務邏輯,利用Spring框架實現。接收表現層發送的用戶請求,并進行一系列邏輯處理,如果需要利用數據庫,則轉發請求到持久層,持久層操作數據庫獲得信息返回service層,service層將處理結果返回給表現層。
持久層(dao層):利用Mybatis框架實現,主要負責與數據庫進行交互,在這一層封裝對數據庫訪問的細節,接收service層發送的請求之后,對數據庫進行增刪查改操作。
平臺管理模塊是系統的核心模塊,設置有授權中心、設備管理中心、站點管理、鎖具中心、控制器中心、消息中心,以及報表中心等。現在以授權管理中心、報表中心和消息中心進行闡述。
3.2.1授權中心實現
授權中心包含了離線單個授權、井蓋鎖授權、掛鎖授權、添加鑰匙,以及添加智能鎖五個界面及其子界面。離線單個授權表現層通過OfflineAction類實現,涉及的持久化接口包括authLogDao、keysAuthDao、ikeyssDao、disDao、ilocksDao、deptDao。在進行離線單個授權時,首先利用RedisTemplate操作工具類RedisTemplateUtil獲取藍牙客戶端服務器緩存的數據,若數據為空或者不為“123”,則提示“請啟動中間件串口服務程序”,否則根據用戶的操作利用IOTAuthModel中的方法進行實現。智能井蓋的鑰匙控制模塊會將鑰匙信息通過NB-IoT模塊上傳到云端服務器,當對鑰匙進行操作的時候通過不同的指令獲取對應的authModel。將獲取的authModel和request請求的session中的userUUID拼接成authKey,放到redis緩存中。等待一段時間后,利用ResponseLockUtil進行IoT設備解析,獲取返回值。若返回值為空,則返回JSON字符串,提示“未獲取到數據,請重新獲取”。若返回值不為空,則返回對應的值,提示操作成功。
3.2.2報表中心實現
報表中心以折線圖的形式展現最近一周正常井蓋、打開井蓋、異常井蓋的數量變化。圖表實現利用echarts。用戶點擊“報表中心”子界面時,調用echart的index.jsp命令,引入echarts,通過使用echarts.init方法來初始化一個echarts實例和使用setOption方法生成一個折線圖。當表現層發送請求,后臺利用EchartAction類進行實現,通過deviceDao查詢設備表獲取正常設備的數量,通過deviceErrorLogDao查詢設備故障日志,獲取其中打開設備和異常設備的數量,查詢結果返回前端表現層。
3.2.3消息中心實現
通過消息中心能實時、直觀、準確地展示各種工作日志內容,主要包括授權日志、設備信息日志、開關鎖日志。在進行功能操作時,后臺會將操作日志存儲在Action中,供管理員查詢維護。授權日志包含授權名稱、創建時間、授權類型、授權人員等關鍵信息。當用戶對設備進行授權時,將以上授權信息通過AuthLog對象在RedisAction類中存儲,通過IAthLogDao接口,數據固化到數據庫中。設備信息日志在對設備進行監測時存儲包含設備名稱、通知內容、預警狀態、創建時間等信息。開關鎖日志用于存儲用戶開關鎖操作信息。在對設備進行操作時,通過apiLog方法添加開鎖日志,通過openLogDao存儲openLog對象。通過OpenLockAction類中的list、update、likelist、prView等命令可以查看日志,以及進行精確查詢和模糊查詢操作。
3.2.4華為云服務器端實現
選擇華為云作為云服務器提供商,在華為云上部署Java Web項目。購買華為云的彈性云服務器之后會分配一個彈性IP,外網訪問的時候,即入站則選用這個IP。另外分配一個私有IP,關聯自己的服務器。先為服務器分配ICMP規則,否則ping的時候會請求超時,然后為Java Web項目分配8080端口和訪問規則。服務器的安裝部署完成后,仍然只能通過localhost本地去訪問,若要通過公網訪問還需要在云服務器后臺設置出入規則。設置完成后可以ping通這臺云服務器的公網地址,并可以在公網通過IP和端口訪問云服務器部署的Web項目。
根據設計過程,采用B/S網絡模式、SSM框架、HTML、CSS、Ajax技術、Java作為開發語言實現了個人中心、設備數據主界面顯示、設備授權中心、管理中心、系統報警、報表中心等模塊功能。
個人中心前臺界面是云系統呈現給客戶的第一要素,要在盡量簡約的情況下突出產品的科技感,減少操作的繁瑣性。登錄界面如圖5所示。

圖5 個人中心
系統主頁面是日常觀測頁面,為了更加直觀地顯示每個功能井的位置,本平臺設計調用了百度地圖API模塊,通過開發百度網頁,實現地圖加載功能。通過JavaScript腳本語言在網站中創建地圖應用。系統主界面如圖6所示。

圖6 系統主界面
采用顏色區分井蓋工作模式,來更直觀地顯示其狀態,綠色表示正常工作,黑色表示井蓋鎖掉線,紅色則表示井蓋被非正常打開且未得到處理。圖7為井蓋鎖掉線的狀態下的數據。

圖7 掉線鎖具信息
工作信息記錄并上報是本系統的一個重要功能,主要記錄每個設備被打開的情況和時間、是否異常打開,方便管理員做好工作記錄。上報信息如圖8所示。

圖8 設備報警
智能鎖具要連接到本系統需要系統對其進行授權,輸入智能鎖編號和唯一識別碼可得到管理員授權接入系統,授權操作如圖9所示。

圖9 授權綁定
授權成功界面如圖10所示。

圖10 授權成功
報表功能實現效果如圖11所示,系統對投入實驗的智能鎖進行每周統計并生成報表供工作人員參考,其中包括井蓋正常數量,每天的打開數量和異常打開數量,根據大數據的分析,方便工作人員數據的統計和維護工作總結。

圖11 報表顯示
本文基于云服務器實現了對重要功能井的全面監控和位置鎖定功能,降低了人們違規撬動井蓋的動機,一旦發生異動,第一責任人實時收到系統發出的消息并及時處理。插入百度地圖API,在地圖上直觀地顯示井蓋狀況以及鎖具自身狀況,同時,設計了智能鎖具、鑰匙授權和數據統計管理等功能模塊。通過數據庫設計可完成對龐大井蓋群的監管,以大數據分析思路改變工作戰略。下一步,還需要降低產品造價以推廣到城市普通井蓋,方便人們出行,減少隱患發生,保護行人人身安全。日后還可對工作記錄日志中的相關數據進行深度挖掘來發現有用價值。