李 瑩,張文靜,修 苗,張 萌,喬艷芬
(遼寧省地震局,遼寧 沈陽(yáng) 110034)
我國(guó)是受地震影響較為嚴(yán)重的國(guó)家,地震發(fā)生后,需要用最快時(shí)間將地震信息及時(shí)傳送到各級(jí)政府、有關(guān)部門及救援部隊(duì),迅速成立抗震救災(zāi)指揮部,建立為地震現(xiàn)場(chǎng)指揮部服務(wù)的前方指揮技術(shù)平臺(tái)、中國(guó)地震局現(xiàn)場(chǎng)指揮部的指揮技術(shù)平臺(tái),同時(shí)與其他相關(guān)部門聯(lián)絡(luò),實(shí)時(shí)交換信息。動(dòng)員相關(guān)力量進(jìn)行地震救援,盡量把災(zāi)害損失降到最低。
目前,遼寧省地震局應(yīng)急行政值班室實(shí)行7×24 小時(shí)值班制度,發(fā)生地震突發(fā)事件后,地震應(yīng)急值班人員除了承擔(dān)上報(bào)重要情況信息外,還需要對(duì)相關(guān)負(fù)責(zé)人進(jìn)行電話速報(bào),對(duì)地震災(zāi)情進(jìn)行快速收集、上報(bào),還要負(fù)責(zé)接待來(lái)電咨詢,按有關(guān)規(guī)定及時(shí)解答相關(guān)問(wèn)題等工作。對(duì)于值班中產(chǎn)生的重要信息,基本上是通過(guò)電話、文件、傳真和網(wǎng)絡(luò)等進(jìn)行傳達(dá),不但工作效率低,而且制約了信息收集的速度,大大增加了對(duì)突發(fā)應(yīng)急事件的反應(yīng)時(shí)間。因此,根據(jù)值班業(yè)務(wù)需求,提出由手機(jī)鬧鈴APP 軟件代替?zhèn)鹘y(tǒng)打電話的方式將地震信息報(bào)告給相關(guān)人員,可以減輕值班人員的工作強(qiáng)度,使值班人員有更多的精力和時(shí)間投入到信息報(bào)送處理,搜集災(zāi)情信息等工作中[1-4]。
通過(guò)地震應(yīng)急值班喚醒APP 鬧鈴系統(tǒng)可以將地震信息自動(dòng)發(fā)送給領(lǐng)導(dǎo)和相關(guān)人員,該軟件移動(dòng)端(手機(jī)APP)啟動(dòng)鬧鈴及地震信息提示,直到喚醒用戶手動(dòng)關(guān)閉鬧鈴APP 為止,服務(wù)器端可以接收到手機(jī)APP 用戶反饋信息,值班員可以在客戶端查看手機(jī)APP 用戶的接收情況。地震應(yīng)急值班喚醒鬧鈴系統(tǒng)的研發(fā)將大幅提高地震應(yīng)急值班人員的工作效率、縮短應(yīng)急人員的到崗時(shí)間。
本系 統(tǒng)利用androidstudio3.1、SQL Server 2008 等開(kāi)發(fā)環(huán)境,使用物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)流行的MQTT 協(xié)議,服務(wù)使用開(kāi)源免費(fèi)的EMQ服務(wù),服務(wù)程序是整個(gè)系統(tǒng)的核心單元,使用DelphiXE2 開(kāi)發(fā),采用經(jīng)典的PASCAL 語(yǔ)言,實(shí)現(xiàn)了地震應(yīng)急值班喚醒APP 鬧鈴系統(tǒng)。
地震應(yīng)急值班喚醒APP 鬧鈴系統(tǒng)提出使用手機(jī)APP 鬧鈴代替?zhèn)鞔螂娫挿绞?,并且收到信息的人員手動(dòng)確定“已收到地震信息”按鈕,本軟件本著簡(jiǎn)潔、美觀、實(shí)用的原則來(lái)設(shè)計(jì)界面和內(nèi)容,主要可實(shí)現(xiàn)以下功能:
(1)該軟件能夠自動(dòng)獲取臺(tái)網(wǎng)中心發(fā)送的地震三要素,并通過(guò)APP 軟件發(fā)送給領(lǐng)導(dǎo)和相關(guān)人員;
(2)該軟件不依賴第三方的任何推送服務(wù),自己建立服務(wù)器??蛻舳嗣摼W(wǎng)服務(wù)端必須在短時(shí)間內(nèi)檢測(cè)到(一般3 分鐘之內(nèi)) 以便于提醒客戶端手機(jī)持有人;
(3)手機(jī)端APP 要求時(shí)時(shí)在線,斷線時(shí)間最多不超過(guò)10 秒鐘(手機(jī)無(wú)網(wǎng)絡(luò)除外);
(4)APP 應(yīng)用不能太耗電,幾乎不影響正常使用,待機(jī)功耗小于微信待機(jī)功耗;
(5)APP 用戶接收到地震信息后,必須點(diǎn)擊接收,服務(wù)端可以查看,實(shí)現(xiàn)地震信息傳達(dá)及時(shí)、準(zhǔn)確、全覆蓋;
(6)手機(jī)端APP 以前臺(tái)服務(wù)方式啟動(dòng),確保在正常情況下不退出,保持后臺(tái)待命狀態(tài),隨時(shí)接受消息推送。
(1)服務(wù)器端
硬件環(huán)境:CPU 四核心主頻1.5Hz、內(nèi)存4G 及以上、硬盤200G 及以上。
軟件環(huán)境:Windows 2008R2 系統(tǒng)及以上,sqlserver2008R2 以上。
(2)客戶端
硬件環(huán)境:CPU 奔騰雙核及以上、2G 內(nèi)存以上,硬盤100G 及以上。
軟件環(huán)境:WindowsXP 及以上。
(3)移動(dòng)端
硬件環(huán)境:CPU 雙核心及以上、內(nèi)存2G及以上存儲(chǔ)空間1G 及以上。
軟件環(huán)境:android4.4 系統(tǒng)及以上。
地震應(yīng)急值班喚醒APP 鬧鈴系統(tǒng)的觸發(fā)條件是以《國(guó)家地震應(yīng)急預(yù)案》及《遼寧省地震應(yīng)急預(yù)案》為依據(jù),結(jié)合遼寧地區(qū)的實(shí)際情況而制定的,地震應(yīng)急響應(yīng)分為四個(gè)等級(jí),響應(yīng)等級(jí)是與地震災(zāi)害事件受災(zāi)程度相對(duì)應(yīng)的,地震災(zāi)害事件分為特別重大、重大、較大、一般四個(gè)等級(jí),對(duì)地震應(yīng)急響應(yīng)啟動(dòng)等級(jí)的判定實(shí)際就是對(duì)地震災(zāi)害事件級(jí)別的判定。該系統(tǒng)設(shè)定觸發(fā)條件,如下:
(1)遼寧省內(nèi)陸地震級(jí)M ≥2.7 級(jí)地震;
(2)遼寧省近海震級(jí)M ≥3.0 級(jí)地震;
(3)吉林省、黑龍江省震級(jí)M ≥4.5 級(jí)地震,其他鄰省距我省邊界200 km 范圍內(nèi)的的震級(jí)M ≥4.5 級(jí)地震;
(4)國(guó)內(nèi)震級(jí)M ≥6.0 級(jí)地震;
(5)國(guó)際震級(jí)M ≥7.0 級(jí)地震。
地震應(yīng)急值班喚醒APP 鬧鈴基于移動(dòng)端(手機(jī)鬧鈴APP)、服務(wù)器端和客戶端的整體架構(gòu),滿足應(yīng)急值班工作的業(yè)務(wù)需求,實(shí)現(xiàn)了地震應(yīng)急值班喚醒鬧鈴軟件,通過(guò)各個(gè)平臺(tái)的功能服務(wù)實(shí)現(xiàn)了地震信息獲取、信息處理與信息服務(wù)。
服務(wù)器端能夠啟動(dòng)各個(gè)服務(wù)程序,短信接收設(shè)備接收地震臺(tái)網(wǎng)中心發(fā)布的地震短信,程序獲取地震短信息后,服務(wù)器將臺(tái)網(wǎng)發(fā)送的短信內(nèi)容保存到數(shù)據(jù)庫(kù)備查,程序能夠從短信內(nèi)容中分析出發(fā)生地震的經(jīng)度、緯度以及震級(jí)等地震要素信息。軟件服務(wù)器端將經(jīng)度、緯度及震級(jí)信息發(fā)送到GIS 系統(tǒng)中分析地震震中的位置,自動(dòng)生成需要通知接收人的電話,接收人通過(guò)手機(jī)端APP 系統(tǒng)進(jìn)行登錄并接受信息,服務(wù)程序?qū)⑾⑺偷組QTT 推送服務(wù)器進(jìn)行推送的過(guò)程可在值班客戶端體現(xiàn)。手機(jī)APP 端接收到鬧鐘之后發(fā)出警報(bào),直到點(diǎn)擊我已收到鬧鈴?fù)V梗@示已經(jīng)閱讀的狀態(tài),完成整個(gè)業(yè)務(wù)的閉環(huán),圖1 為軟件設(shè)計(jì)流程圖。
圖1 軟件設(shè)計(jì)流程圖Fig.1 Flow chart of software design
3.2.1 服務(wù)器端設(shè)計(jì)
(1)DTU 短信接收設(shè)備
采用西門子TC35 芯片,此芯片性能穩(wěn)定可靠,接收短信息不丟失。短信接收機(jī)使用一張SIM 卡,用于接收來(lái)自臺(tái)網(wǎng)中心12322 發(fā)送的短信,采用USB 接口與服務(wù)器相連接,忽略“自動(dòng)測(cè)定”字樣的短信,保留“測(cè)定”和“正式測(cè)定”短信,確保發(fā)送出去的短信準(zhǔn)確。
(2)GIS 系統(tǒng)
本系統(tǒng)使用mapinfo7.0 軟件,編制程序用于接收經(jīng)、緯度、震級(jí)以及判定接受短信的響應(yīng)人。
(3)MQTT 推送服務(wù)
使用物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)流行的MQTT 協(xié)議,服務(wù)使用開(kāi)源免費(fèi)的EMQ 服務(wù),它具有以下特征:基于高并發(fā)的Erlang/OTP 語(yǔ)言平臺(tái)設(shè)計(jì),支持百萬(wàn)級(jí)連接和分布式集群,發(fā)布訂閱模式的開(kāi)源MQTT 消息服務(wù)器,完整支持MQTT V3.1/V3.1.1 協(xié) 議 規(guī) 范, 擴(kuò) 展 支 持WebSocket、Stomp、CoAP、MQTT-SN 或私有TCP 協(xié)議,主要特點(diǎn)如下:
①完全開(kāi)放源碼,基于Apache Version 2.0開(kāi)源協(xié)議;
②百萬(wàn)級(jí)并發(fā)連接,單節(jié)點(diǎn)100 萬(wàn)并發(fā)MQTT 連接峰值負(fù)載;
③完整MQTT 協(xié)議支持MQTT V3.1.1 協(xié)議規(guī)范QoS0/1/2 消息支持;
④簡(jiǎn)便安裝部署跨平臺(tái)部署在Linux、FreeBSD、Mac OS X 或Windows 服務(wù)器;
⑤分布式集群或橋接,雙節(jié)點(diǎn)負(fù)載均衡或多節(jié)點(diǎn)分布式集群;
⑥擴(kuò)展模塊與插件 LDAP, MySQL,PostgreSQL,Redis,MongoDB 擴(kuò)展插件集成。
(4)數(shù)據(jù)庫(kù)
軟件數(shù)據(jù)庫(kù)是基于SQL Server 2008 智能數(shù)據(jù)平臺(tái)構(gòu)建而成,SQL Server 2008 R2 提供了大量新的改進(jìn),可以高效的調(diào)整規(guī)模,提高IT 效率并實(shí)現(xiàn)管理完善的自助BI。此版本中包含應(yīng)用程序和多服務(wù)器管理、復(fù)雜事件處理、主數(shù)據(jù)服務(wù)及最終用戶報(bào)告等方面的新功能和增強(qiáng)功能。
(5)服務(wù)程序
服務(wù)程序是整個(gè)系統(tǒng)的核心單元,使用DelphiXE2 開(kāi)發(fā),采用經(jīng)典的PASCAL 語(yǔ)言,適合于快速搭建服務(wù)平臺(tái),主要的功能有:與短信接收設(shè)備使用串口DTU 指令進(jìn)行通訊、接收的短信保存到數(shù)據(jù)庫(kù)備查、實(shí)現(xiàn)了MQTTClient將信息發(fā)布到推送服務(wù)器、提供整個(gè)系統(tǒng)狀態(tài)查詢服務(wù)。服務(wù)端可以顯示內(nèi)容,如圖2 所示。
圖2 服務(wù)器端顯示內(nèi)容界面Fig.2 Server-side display content interface
通過(guò)服務(wù)器端顯示內(nèi)容界面可以直觀反應(yīng)出信息接收人的在線狀態(tài),以及最后在線的時(shí)間,超過(guò)5 分鐘不在線自動(dòng)進(jìn)行顏色標(biāo)識(shí),能夠顯示出消息是否推送成功、是否已經(jīng)點(diǎn)擊接受、各個(gè)服務(wù)的狀態(tài)以及手機(jī)卡是否有信號(hào)等信息。
主要代碼截取如下:
begin
//處理 消息回執(zhí)
//更新 列表接收狀態(tài)
//{"MessageID":"1","ClientID":"aaa","MsgState":"1"}
//MsgState :1.已經(jīng)接收消息 2.已經(jīng)確認(rèn)消息
DM.Log.WriteLog (' 收 到 消 息 回 執(zhí):'+payload) ;
try
json := SO (payload) ;
except
on e:Exception do
begin DM.Log.WriteLog ('解析消息回執(zhí)失?。?+e.Message) ;
Exit;
end;
end;
try
m_MessageID := json.I ['Messageid'] ;
m_ClientID := json.s ['ClientID'] ;
m_MessageState := json.I ['MsgState'] ;
except
on e:Exception do end;
3.2.2 手機(jī)鬧鈴APP 設(shè)計(jì)
手機(jī)鬧鈴APP 端使用androidstudio 3.1 開(kāi)發(fā),該軟件提供了系統(tǒng)登錄(圖3)、聯(lián)網(wǎng)狀態(tài)顯示(圖4)、歷史地震信息查詢(圖5)、系統(tǒng)設(shè)置,包括自動(dòng)更新、斷網(wǎng)自動(dòng)提醒及記錄運(yùn)行日志等功能(圖6)。
(1)軟件進(jìn)入登陸界面以后,需注意用戶名真實(shí)有效確認(rèn)無(wú)誤,密碼確保正確否則將出現(xiàn)密碼不正確或者用戶名有誤等提示,用戶登錄該系統(tǒng)時(shí)請(qǐng)?jiān)偃_認(rèn)準(zhǔn)確性。操作人員若操作失誤或者無(wú)法確定用戶名或密碼導(dǎo)致登錄的失敗,系統(tǒng)將會(huì)自動(dòng)彈出錯(cuò)誤提示框,需要重新輸入用戶名和密碼進(jìn)行重新登錄。如若忘記密碼請(qǐng)及時(shí)聯(lián)系數(shù)據(jù)管理員進(jìn)行找回,系統(tǒng)登錄如圖3 所示。
(2)用戶在系統(tǒng)使用前需要對(duì)網(wǎng)絡(luò)狀態(tài)進(jìn)行檢查,為了便于用戶的便捷操作及狀態(tài)檢查設(shè)置聯(lián)網(wǎng)狀態(tài)顯示頁(yè)面,通過(guò)該頁(yè)面可了解系統(tǒng)網(wǎng)絡(luò)運(yùn)行的狀態(tài)及相關(guān)數(shù)據(jù),便于用戶了解進(jìn)行下一步的操作聯(lián)網(wǎng)狀態(tài),顯示界面如圖4所示。
(3)用戶可以查詢所有符合響應(yīng)條件的地震信息情況,設(shè)置歷史地震信息查詢界面,地震信息短信界面如圖5 所示。
(4)系統(tǒng)設(shè)置界面是使用過(guò)程中根據(jù)實(shí)際需求進(jìn)行系統(tǒng)操作,包括自動(dòng)更新、斷網(wǎng)自動(dòng)提醒、記錄運(yùn)行日志等功能,系統(tǒng)設(shè)置界面如圖6 所示。主要代碼摘取如下
圖3 系統(tǒng)登錄界面Fig.3 System login interface
圖4 聯(lián)網(wǎng)狀態(tài)顯示界面Fig.4 Networking status display interface
圖5 地震信息短信界面Fig.5 Earthquake information SMS interface
圖6 系統(tǒng)設(shè)置界面Fig.6 System settings interface
private void CheckAccount (String Account,String PassWord)
{
String Url = " http://" + PubData.serverAddress + " :" + PubData.HTTPPort + "/CheckLeaderAccount?Account=%s&Password=%s" ;
Url = String.format ( Url, Account,PassWord) ;
OkHttpClient okHttpClient = new OkHttpClient () ;
final Request request = new Request.Builder ()
.url (Url)
.get () //默認(rèn)就是GET 請(qǐng)求,可以不寫(xiě)
.build () ;
Call call = okHttpClient.newCall(request) ;
call.enqueue (new Callback () {
@Override
public void onFailure ( Call call,IOException e) {
Log.d (TAG, " onFailure: ") ;
Message msg = new Message () ;
Bundle bundle = new Bundle () ;
bundle.putString (" ErrText" , "連接網(wǎng)絡(luò)異常") ;
msg.setData (bundle) ;msg.what = 1;
LoginActivity.this.UIhandler.send Message(msg) ;
}
3.2.3 值班室客戶端設(shè)計(jì)
鬧鈴系統(tǒng)值班室客戶端首先要由應(yīng)急值班人員登錄,登錄系統(tǒng)是權(quán)限管理的重要組成部分,系統(tǒng)登錄要提供正確的用戶名和密碼,才可以啟動(dòng)軟件,進(jìn)入登錄界面,如圖7 所示。
圖7 地震應(yīng)急值班鬧鈴軟件值班室查詢系統(tǒng)Fig.7 Earthquake emergency alarm software duty roominquiry system
值班人員在系統(tǒng)的使用過(guò)程中,根據(jù)實(shí)際需求進(jìn)行系統(tǒng)操作,可以通過(guò)該查詢系統(tǒng)查看手機(jī)APP 用戶的在線狀態(tài)、是否正常接收短信、是否已經(jīng)點(diǎn)擊“我已知道”地震發(fā)生按鈕。還可以查詢數(shù)據(jù)服務(wù)是否正常、短信設(shè)備是否工作正常、推送服務(wù)運(yùn)行是否正常,如圖8 所示。
圖8 軟件操作日志界面Fig.8 Software operation log interface
地震應(yīng)急值班喚醒APP 鬧鈴系統(tǒng)充分考慮到地震值班人員在地震等一系列突發(fā)事件來(lái)臨時(shí)的緊急情況,從而進(jìn)行設(shè)計(jì)與軟件實(shí)現(xiàn),并在地震應(yīng)急演練中多次進(jìn)行了測(cè)試,試運(yùn)行情況基本達(dá)到了設(shè)計(jì)要求。目前該手機(jī)鬧鈴APP系統(tǒng)運(yùn)行穩(wěn)定,服務(wù)器端及客戶端系統(tǒng)軟件運(yùn)行良好。
(1)考慮到值班人員的緊迫性與信息的時(shí)效性,全自動(dòng)定義軟件的信息,由于之前采用人工收集編輯信息,存在手工編輯困難、發(fā)送速度緩慢、發(fā)送對(duì)象難以管理、發(fā)送優(yōu)先級(jí)無(wú)法調(diào)整等問(wèn)題,軟件全自動(dòng)發(fā)送地震信息,避免人為干預(yù)而造成的信息發(fā)送錯(cuò)誤,同時(shí)減輕值班人員的工作強(qiáng)度,提高工作效率。
(2)本軟件將外部數(shù)據(jù)及文檔系統(tǒng)無(wú)縫集成,在軟件管理系統(tǒng)可以清楚的看到相關(guān)人員的短信接收情況,推送給哪些人員,并保留短信接受記錄和推送記錄,最大程度保證地震信息通知的覆蓋率。