余瑞,向鄭濤,李鵬飛,孟振宇,陳宇峰
(湖北汽車工業(yè)學(xué)院 電氣與信息工程學(xué)院,湖北 十堰442002)
2017 年我國應(yīng)急管理部消防救援局發(fā)布了《關(guān)于全面推進(jìn)“智慧消防”建設(shè)的指導(dǎo)意見》,要求消防系統(tǒng)應(yīng)根據(jù)救援工作實(shí)際需要,提升消防救援水平,并且從宏觀層面提供智慧消防建設(shè)的頂層設(shè)計(jì),為我國消防管理工作提供思路和途徑[1]。當(dāng)前我國消防隊(duì)伍在智慧消防建設(shè)過程中不斷探索和實(shí)踐,通過信息化手段對火災(zāi)進(jìn)行實(shí)時(shí)監(jiān)管,解決了消防管理中存在的問題,提高了消防安全管控能力。消防技術(shù)取得一定進(jìn)步的同時(shí),也存在一系列問題亟待解決。傳統(tǒng)的消防管理模式已不能適應(yīng)當(dāng)前需求,傳統(tǒng)的消防設(shè)備缺少內(nèi)部傳感器,無法通過信息化手段實(shí)時(shí)監(jiān)測車輛各種數(shù)據(jù),如車輛用水量、用油量、車輛實(shí)時(shí)位置等數(shù)據(jù)。較為突出的是舊系統(tǒng)處理數(shù)據(jù)能力不足問題,消防平臺收集的各項(xiàng)數(shù)據(jù)存放在不同類型的數(shù)據(jù)存儲系統(tǒng)中,系統(tǒng)中不同模塊缺少信息聯(lián)通,且存儲系統(tǒng)相互關(guān)聯(lián)不夠緊密,導(dǎo)致數(shù)據(jù)的資源利用率降低,數(shù)據(jù)可讀性和實(shí)用性較低,未能為用戶提供直觀準(zhǔn)確的數(shù)據(jù)分析和參考[2]。為保證消防任務(wù)的處理速度不斷提高,文中設(shè)計(jì)了消防車輛監(jiān)控管理平臺,為消防部門人員提供了準(zhǔn)確的消防車輛信息數(shù)據(jù),實(shí)現(xiàn)了消防車輛數(shù)據(jù)信息化、系統(tǒng)化、安全化管理。
平臺主要使用RESTful 架構(gòu)[3],簡化了Web 程序開發(fā),提供了大量的擴(kuò)展點(diǎn),具有良好的可擴(kuò)展性,并且方便程序進(jìn)行自定義功能,實(shí)現(xiàn)了用戶交互以及個(gè)性化定制等功能。在采用RESTful 架構(gòu)基礎(chǔ)上,結(jié)合異步Ajax技術(shù),實(shí)現(xiàn)前端界面局部更新,減少了用戶等待時(shí)間,提高頁面加載速度,滿足用戶的需求。在處理服務(wù)器數(shù)據(jù)時(shí)統(tǒng)一使用json數(shù)據(jù)格式,實(shí)現(xiàn)對數(shù)據(jù)的快速編寫和讀取,采用了異步交互的ECharts 圖形,對數(shù)據(jù)進(jìn)行實(shí)時(shí)更新顯示,最終完成消防車輛監(jiān)控管理平臺的設(shè)計(jì)與實(shí)現(xiàn)[4]。平臺采集消防車輛在日常工作以及處理火災(zāi)過程中的實(shí)時(shí)狀態(tài)和位置信息、車輛用水量用油量信息、報(bào)警閾值提醒信息以及車輛配置管理信息,將數(shù)據(jù)以清晰準(zhǔn)確的方式在前端進(jìn)行頁面顯示,保障消防管理人員能夠隨時(shí)準(zhǔn)確掌握消防車輛相關(guān)信息,為滅火救援工作提供數(shù)據(jù)和技術(shù)支持。通過測試,平臺能夠?qū)ο儡囕v進(jìn)行高效準(zhǔn)確管理,提高了消防部門工作效率。
消防車輛管理平臺架構(gòu)如圖1所示,由消防車輛車載終端和消防車輛監(jiān)控管理平臺組成。消防車輛車載終端通過傳感器采集油量、水量信息,根據(jù)車輛實(shí)時(shí)運(yùn)行情況動態(tài)設(shè)置水量、油量相關(guān)參數(shù)和采樣頻率,定位衛(wèi)星采集消防車輛實(shí)時(shí)位置信息,一起上傳給數(shù)據(jù)解析服務(wù)器。數(shù)據(jù)解析服務(wù)器將解析好的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,數(shù)據(jù)庫服務(wù)器完成數(shù)據(jù)信息的存取。業(yè)務(wù)服務(wù)器根據(jù)業(yè)務(wù)邏輯需求建立與數(shù)據(jù)庫的連接,并負(fù)責(zé)分析、處理、調(diào)用數(shù)據(jù)。Web服務(wù)器主要負(fù)責(zé)前端的界面顯示,前端界面是實(shí)現(xiàn)用戶和應(yīng)用交互的核心方式,通過良好的界面設(shè)計(jì)能夠給用戶提供直觀的體驗(yàn),有效減輕后臺處理的壓力。
圖1 消防車輛管理平臺架構(gòu)圖
文中聚焦Web 服務(wù)器端消防車輛監(jiān)控管理平臺的設(shè)計(jì)與實(shí)現(xiàn)。針對目前消防救援隊(duì)伍的實(shí)際需求,采用消防車輛監(jiān)控管理平臺可視化界面,為用戶提供所需要的車輛相關(guān)信息,考慮實(shí)際救援過程中多種因素(火點(diǎn)位置、固定加水點(diǎn)位置、消防車自身配置等信息),實(shí)現(xiàn)消防車輛的綜合調(diào)度和管理。設(shè)計(jì)時(shí)密切關(guān)注多個(gè)子系統(tǒng)和模塊之間的聯(lián)通,提高監(jiān)控管理平臺的聯(lián)動性。通過對數(shù)據(jù)的統(tǒng)一管理和挖掘分析,實(shí)現(xiàn)數(shù)據(jù)資源高效利用,為消防工作提供正確的預(yù)判和合理布局,提升消防管理水平和工作效率。
圖2 消防車輛監(jiān)控管理平臺功能結(jié)構(gòu)圖
消防車輛監(jiān)控管理平臺功能結(jié)構(gòu)圖如圖2 所示,由實(shí)時(shí)信息展示、系統(tǒng)信息管理、查詢統(tǒng)計(jì)、參數(shù)設(shè)置4個(gè)需求功能模塊組成。通過需求分析,確保平臺對車輛實(shí)時(shí)信息進(jìn)行監(jiān)控管理,及時(shí)掌握車輛出行歷史路線數(shù)據(jù),為管理人員及用戶提供準(zhǔn)確的消防車輛水量油量信息。
1)實(shí)時(shí)信息展示模塊 實(shí)現(xiàn)消防車輛實(shí)時(shí)信息動態(tài)展示,包括車輛基本信息、車輛位置信息、用水量和用油量信息。車輛基本信息包括車輛種類、車牌號、所屬部門、駕駛員等信息,根據(jù)用戶的類型和權(quán)限,可以對車輛基本信息進(jìn)行維護(hù)。采集的實(shí)時(shí)位置信息和行駛軌跡路線信息經(jīng)過處理分析,通過地圖進(jìn)行顯示,為消防員進(jìn)行消防工作提供更加準(zhǔn)確的路徑規(guī)劃,便于消防車輛的調(diào)度和安排。用水量、油量信息通過不同類型圖形動態(tài)顯示,相關(guān)信息圖形化顯示為消防人員提供直觀的數(shù)據(jù)參考,通過準(zhǔn)確的統(tǒng)計(jì)數(shù)據(jù)可以保證車輛水量、油量能夠得到及時(shí)補(bǔ)給,提高消防隊(duì)員的工作效率。
2)系統(tǒng)信息管理模塊 實(shí)現(xiàn)用戶個(gè)人信息登錄、新用戶注冊、忘記密碼等操作。點(diǎn)擊用戶個(gè)人信息登錄界面,填寫用戶名、密碼和用戶權(quán)限后直接跳轉(zhuǎn)到主界面。根據(jù)用戶角色不同,將用戶權(quán)限設(shè)置為普通用戶、管理員、超級管理員3個(gè)權(quán)限,用戶權(quán)限越高,可操作的范圍越廣。用戶權(quán)限設(shè)置避免出現(xiàn)未經(jīng)授權(quán)的操作,屏蔽可能帶來系統(tǒng)崩潰的數(shù)據(jù)錄入,使平臺性能更加穩(wěn)定。未注冊的用戶可以通過填寫用戶名、所屬部門、車輛類型、手機(jī)號碼等關(guān)鍵信息對賬戶進(jìn)行注冊,方便登錄界面進(jìn)行信息查看。忘記密碼可以解決部分用戶密碼信息遺忘丟失問題,使數(shù)據(jù)更加安全地保存和讀取。
3)查詢統(tǒng)計(jì)模塊 實(shí)現(xiàn)車輛歷史軌跡查詢和信息條件查詢。車輛歷史軌跡信息以地圖形式顯示,通過高德地圖進(jìn)行車輛軌跡繪制分析,結(jié)合車型、駕駛員、出行歷史數(shù)據(jù),對駕駛行為進(jìn)行分析并提供路線指導(dǎo)。信息條件查詢包括查詢車輛基本信息、用水量、用油量、歷史軌跡等信息,車輛基本信息包括車輛類型、所屬部門、車牌號、駕駛員等信息,通過填寫關(guān)鍵信息,對具體信息進(jìn)行查詢或提交操作。歷史用水量、用油量以柱狀圖、折線圖等圖表形式顯示,通過圖表將數(shù)據(jù)的變化趨勢和數(shù)值大小直觀生動顯示出來。
4)參數(shù)設(shè)置模塊 實(shí)現(xiàn)對油量采樣頻率、水量采樣頻率和報(bào)警閾值的設(shè)置。根據(jù)用水量、用油量信息,統(tǒng)計(jì)不同時(shí)間段的報(bào)警次數(shù),設(shè)置報(bào)警閾值。當(dāng)用油量、用水量低于閾值時(shí),系統(tǒng)報(bào)警,將數(shù)據(jù)傳送到指揮中心,由指揮中心對消防車輛下一步行為進(jìn)行綜合應(yīng)急指揮。使用折線圖展示報(bào)警次數(shù)的變化趨勢,為消防管理人員提供預(yù)警參考。
考慮平臺實(shí)際使用范圍及界面數(shù)據(jù)顯示效率,采用合適的架構(gòu)使各系統(tǒng)協(xié)同操作,實(shí)現(xiàn)系統(tǒng)跨平臺使用。為了提高系統(tǒng)的可交互性和擴(kuò)展性,使用RESTful 架構(gòu),統(tǒng)一資源接口,從而實(shí)現(xiàn)不同平臺軟件之間的通信和數(shù)據(jù)傳輸。RESTful 架構(gòu)具有結(jié)構(gòu)清晰、容易理解、擴(kuò)展方便等優(yōu)勢[5-6],客戶端使用http 統(tǒng)一方法,實(shí)現(xiàn)對數(shù)據(jù)的增、刪、改、查工作。get、post、put、delete 對指定的URI 進(jìn)行不同操作,get 用來獲取數(shù)據(jù),post 用來新建資源,put 用來更新資源,delete 用來對資源進(jìn)行刪除操作,實(shí)現(xiàn)對數(shù)據(jù)的管理和訪問,使數(shù)據(jù)描述準(zhǔn)確簡單,減少網(wǎng)絡(luò)負(fù)載,增加了客戶端的靈活性。設(shè)計(jì)RESTful返回碼時(shí),遵循h(huán)ttp 狀態(tài)碼分布的區(qū)間范圍,服務(wù)器端使用http 響應(yīng),數(shù)據(jù)采用標(biāo)準(zhǔn)格式傳輸,使用統(tǒng)一的狀態(tài)碼進(jìn)行狀態(tài)描述,使響應(yīng)易于理解、結(jié)構(gòu)清晰,為客戶端提供具體的信息提示。圖3 為RESTful架構(gòu)示意圖。
圖3 RESTful架構(gòu)示意圖
平臺基于RESTful 架構(gòu),使用設(shè)置好的通用接口,定義合適的數(shù)據(jù)傳輸格式和響應(yīng),將系統(tǒng)相關(guān)資源進(jìn)行統(tǒng)一描述和管理,實(shí)現(xiàn)資源的規(guī)范化操作。定義和設(shè)計(jì)統(tǒng)一接口時(shí),遵循安全性和冪等性原則[7]。安全性需要在與用戶信息有關(guān)的請求上攜帶身份認(rèn)證信息,當(dāng)外系統(tǒng)對接口訪問時(shí)不改變服務(wù)器端的資源狀態(tài)。平臺包含用戶權(quán)限設(shè)置功能,只有Admin 和Manager 角色可以對用戶成員進(jìn)行delete請求,保證系統(tǒng)的安全性。冪等性是指在1 次和多次訪問同一接口的情況下對資源狀態(tài)改變的效果相同。接口使用冪等性原則可降低消防車輛管理系統(tǒng)實(shí)現(xiàn)的復(fù)雜性,從根本上解決重復(fù)操作的問題,有利于減少系統(tǒng)各模塊之間的耦合性,提高系統(tǒng)各模塊的獨(dú)立性和擴(kuò)展性。
以表單操作為例,使用put 請求后,客戶端向服務(wù)器發(fā)送數(shù)據(jù),使修改數(shù)據(jù)的內(nèi)容遵循冪等性原則,即使重復(fù)提交put 操作也不會增加數(shù)據(jù)的種類,只改變URL 中指定的資源,在發(fā)送put 請求時(shí)需要攜帶name="_method"的隱藏域,其值為PUT。請求頁面核心代碼如下:
傳統(tǒng)架構(gòu)中前端開發(fā)過程中嚴(yán)重依賴后端,職責(zé)邊界模糊不清,前端無法單獨(dú)調(diào)試,操作較為復(fù)雜,而且性能較差,須在后端完成接口設(shè)置之后才能進(jìn)一步工作,影響整體的工作效率。使用REST?ful 架構(gòu)實(shí)現(xiàn)了客戶服務(wù)器端分離,可分別對客戶端和服務(wù)器端進(jìn)行優(yōu)化和改進(jìn),縮短了整個(gè)項(xiàng)目的開發(fā)周期,為開發(fā)人員提供便捷。
平臺通過可視化界面顯示大量的車輛基本數(shù)據(jù)和信息,為消防部門提供直觀的數(shù)據(jù)分析結(jié)果。選用合適的數(shù)據(jù)傳輸格式,從后臺快速讀取數(shù)據(jù),直接進(jìn)行數(shù)據(jù)解析,提高終端和平臺之間數(shù)據(jù)傳輸效率。在數(shù)據(jù)傳輸過程中,客戶可通過服務(wù)器端進(jìn)行數(shù)據(jù)提交,服務(wù)器端處理完數(shù)據(jù)后,將大量的數(shù)據(jù)結(jié)果回傳給客戶端,此時(shí)需要合適的數(shù)據(jù)格式來解決數(shù)據(jù)快速組裝和解析問題。json 是一種輕量級數(shù)據(jù)交換格式,能夠在服務(wù)器端進(jìn)行數(shù)據(jù)交換,不僅可以使用鍵值對簡單列表形式封裝數(shù)據(jù),而且可以用來表示數(shù)組和復(fù)雜對象,具有結(jié)構(gòu)簡單、可讀性好、解析數(shù)據(jù)迅速等優(yōu)點(diǎn)[8]。為了展示不同類型車輛用水量,需要讀取車輛用水量與車輛類型,以cardate.json 文件為例,文件內(nèi)包含的字段使用json格式如下:
[{"value":38,"name":"小型車輛"},{"value":47,"name":"中型車輛"},{"value":23,"name":"大型車輛"}];
$.getJSON("json 文 件 地 址",function(data){...})方法主要用來從服務(wù)器獲取cardate.json文件內(nèi)的數(shù)據(jù),獲取的數(shù)據(jù)存放在函數(shù)的data 參數(shù)中。車輛用水量數(shù)據(jù)讀取方法如下:
$.getJSON('cardate.json',function(data){//此處返回data數(shù)據(jù)的json對象
console.log(data);//打印數(shù)據(jù),便于前臺分析
var namelist=[];//返回的數(shù)組
var barlist=[];
for(var i=0;i barlist.push(data[i]); namelist.push(data[i].value);} 選用json格式對數(shù)據(jù)進(jìn)行封裝處理,從Web服務(wù)器上讀取json文件內(nèi)數(shù)據(jù),并且將json數(shù)據(jù)轉(zhuǎn)換為JavaScript 進(jìn)行解析。在服務(wù)器端直接使用json數(shù)據(jù)格式,簡化了服務(wù)器端和客戶端代碼的開發(fā)量,提高了數(shù)據(jù)解析速度和傳輸性能,不僅使數(shù)據(jù)傳輸更快更靈活,還縮短了數(shù)據(jù)檢索時(shí)長,提升了平臺的整體性能,實(shí)現(xiàn)終端與平臺的交互。 傳統(tǒng)Web開發(fā)采用同步通信方式,通過請求、刷新、響應(yīng)的模式進(jìn)行開發(fā),每個(gè)請求需要1 個(gè)單獨(dú)的界面顯示,發(fā)送1個(gè)請求就會重新獲取這個(gè)界面,刷新必須等整個(gè)界面都加載出來后才能顯示。數(shù)據(jù)傳輸完全建立在上一步的基礎(chǔ)上,進(jìn)行系統(tǒng)之間的數(shù)據(jù)傳輸時(shí),如果傳輸數(shù)據(jù)量較大,傳輸效率降低,服務(wù)器響應(yīng)時(shí)間隨之增加,最終導(dǎo)致用戶界面的響應(yīng)比本地應(yīng)用慢很多[9]。異步Ajax 技術(shù)可以很好地解決上述傳統(tǒng)Web 應(yīng)用存在的問題。Ajax 技術(shù)和優(yōu)秀的交互設(shè)計(jì)為Web 應(yīng)用提供了廣闊的平臺,在Google Maps、微軟的Windows Live、Yahoo!的Flickr 等都是基于Ajax 技術(shù)來建造,為用戶提供了很好的體驗(yàn)[10]。 為了提高平臺服務(wù)性能,采用Ajax 技術(shù)在服務(wù)器端和客戶端之間實(shí)現(xiàn)異步通信,加快頁面響應(yīng)速度,實(shí)現(xiàn)數(shù)據(jù)的高效傳輸。瀏覽器提交數(shù)據(jù)時(shí),Ajax技術(shù)將數(shù)據(jù)進(jìn)行處理并交給服務(wù)器,從服務(wù)器端接收返回的數(shù)據(jù),無須等待數(shù)據(jù)反饋,減少了瀏覽器和服務(wù)器間的數(shù)據(jù)傳輸量,實(shí)現(xiàn)了用戶在不刷新界面的情況下更新數(shù)據(jù)的功能。圖4 為Ajax 請求方式及用戶操作流程。 圖4 Ajax請求方式及用戶操作流程 實(shí)際開發(fā)中需要前后端數(shù)據(jù)的交互,為了能直觀地將數(shù)據(jù)加載到頁面的表格中去,使用Ajax 代碼實(shí)現(xiàn)今日事項(xiàng)表格的顯示。URL實(shí)現(xiàn)了Ajax 方法跳轉(zhuǎn)地址,用來處理請求并返回參數(shù)。type類型請求方式設(shè)置為post,參數(shù)類型為string 類型,datatype 顯示了提交的數(shù)據(jù)類型為json 格式。在html 頁面使用html 和css 將表格寫出來,通過使用Ajax 方法動態(tài)獲取后臺數(shù)據(jù),循環(huán)獲取數(shù)組,最后調(diào)用回調(diào)函數(shù),加快了數(shù)據(jù)加載速度,使用戶清楚得到所需要的信息。 可視化技術(shù)能夠直觀地體現(xiàn)數(shù)據(jù)的關(guān)鍵特征,將復(fù)雜的海量數(shù)據(jù)以圖形、圖像展示出來。ECharts(Enterprise Charts)是百度前端團(tuán)隊(duì)開發(fā)的純Javascript 的圖表庫,可以在PC 端和移動端使用,根據(jù)用戶個(gè)人需求,實(shí)現(xiàn)個(gè)性化定制數(shù)據(jù)的可視化圖表[11]。ECharts 具有豐富的圖表類型,提供了常用的折線圖、柱狀圖、餅狀圖、散點(diǎn)圖等圖形,提供了基于地理位置、數(shù)據(jù)關(guān)系的關(guān)系圖以及多維坐標(biāo)圖等圖形,圖形視覺編碼方式多樣,使界面展示更加豐富,并且提供了良好的用戶體驗(yàn)。 平臺利用ECharts組件對車輛基本數(shù)據(jù)進(jìn)行可視化分析,更加清楚便捷地為用戶展示動態(tài)數(shù)據(jù)變化。ECharts 官網(wǎng)上具有多種類型開源示例代碼,在編寫代碼時(shí)直接可以導(dǎo)入js文件,在代碼3.3 異步Ajax技術(shù)實(shí)現(xiàn)動態(tài)請求
3.4 ECharts可視化直觀展示數(shù)據(jù)變化
圖5 報(bào)警次數(shù)折線圖
通過多次測試和調(diào)試,平臺界面顯示效果與加載速度達(dá)到了設(shè)計(jì)要求,效果展示如圖6所示。以實(shí)時(shí)動態(tài)地圖顯示為例,當(dāng)車輛沿著指定的消防路線行駛時(shí),車載終端收集車輛位置信息并上傳至服務(wù)器,服務(wù)器處理后將信息推送給平臺,平臺結(jié)合駕駛員、出行歷史數(shù)據(jù)實(shí)現(xiàn)駕駛行為分析和路線指導(dǎo)。前端顯示界面采用JSP動態(tài)網(wǎng)頁技術(shù),使用豐富的插件,結(jié)合css 布局樣式和jQuery EasyUI 庫,使文檔操作更加方便,制作出的動畫效果更真實(shí),數(shù)據(jù)傳輸使用異步Ajax技術(shù),采用json數(shù)據(jù)交換格式,為平臺提供了技術(shù)支持。
圖6 消防車輛監(jiān)控管理平臺實(shí)現(xiàn)效果
文中為消防救援隊(duì)伍定制了消防車輛監(jiān)控管理系統(tǒng),將消防車輛基本信息、實(shí)時(shí)狀態(tài)以及用水量、用油量進(jìn)行圖表可視化展示,使用戶直觀準(zhǔn)確地感知數(shù)據(jù)。根據(jù)需求分析對系統(tǒng)功能及架構(gòu)進(jìn)行整體設(shè)計(jì),通過多次實(shí)驗(yàn)測試,平臺頁面能夠準(zhǔn)確直觀地進(jìn)行實(shí)時(shí)數(shù)據(jù)顯示,界面動態(tài)響應(yīng)速度較快,頁面功能規(guī)范完善,提高了用戶使用效果。后續(xù)將進(jìn)一步提高數(shù)據(jù)分析處理能力,將數(shù)據(jù)更高效美觀地進(jìn)行可視化呈現(xiàn)。