,
(蘇州大學(xué) 電子信息學(xué)院,蘇州 215006)
近年來中國(guó)經(jīng)濟(jì)高速發(fā)展,電梯作為一種節(jié)省人力、方便人們生活生產(chǎn)的高效運(yùn)輸載體,在城市化進(jìn)程的迅猛發(fā)展中越來越普及。出于電梯機(jī)械結(jié)構(gòu)的復(fù)雜性以及對(duì)安全性保障的要求,在電梯實(shí)際運(yùn)行中對(duì)種類繁多、任務(wù)冗雜的監(jiān)測(cè)及維保工作有極其迫切的需求。然而,隨著電梯基數(shù)的愈加龐大以及各項(xiàng)功能的日益更新,導(dǎo)致相關(guān)結(jié)構(gòu)愈加復(fù)雜,相關(guān)工作的開展更加困難。
隨著物聯(lián)網(wǎng)、互聯(lián)網(wǎng)+、云計(jì)算等概念和相關(guān)技術(shù)的發(fā)展應(yīng)用到傳統(tǒng)行業(yè)中,向各個(gè)領(lǐng)域注入了新的力量,本文研究的電梯物聯(lián)網(wǎng)系統(tǒng)在LAMP環(huán)境下搭建服務(wù)器平臺(tái),處理通過信息采集和傳輸裝置獲取的數(shù)據(jù),以APP和WebClient為服務(wù)終端。該系統(tǒng)可以為電梯生產(chǎn)廠商、運(yùn)維廠商、物業(yè)業(yè)主、政府管理部門等提供服務(wù),保障了電梯設(shè)備的安全、正常運(yùn)行,為有關(guān)單位對(duì)電梯有效管理和監(jiān)控提供了穩(wěn)定的技術(shù)支持。
目前市面上的電梯物聯(lián)網(wǎng)系統(tǒng)采用的模式是將電梯運(yùn)行數(shù)據(jù)傳送到集中器[1],再由集中器進(jìn)行處理或由集中器經(jīng)網(wǎng)絡(luò)發(fā)送至服務(wù)器后臺(tái)處理。不同于現(xiàn)有的電梯物聯(lián)網(wǎng)系統(tǒng),本文研究的電梯物聯(lián)網(wǎng)系統(tǒng)直接將單個(gè)電梯連接到網(wǎng)絡(luò),在服務(wù)器端完成數(shù)據(jù)處理后反饋給用戶,拓?fù)浜?jiǎn)明,如圖1所示。
圖1 電梯物聯(lián)網(wǎng)系統(tǒng)拓?fù)浣Y(jié)構(gòu)
該系統(tǒng)規(guī)定了一種高效的通信協(xié)議,綜合控制、數(shù)據(jù)采集、大數(shù)據(jù)分析、服務(wù)器端處理與客戶端數(shù)據(jù)獲取等技術(shù),實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的傳輸以及對(duì)電梯運(yùn)行狀態(tài)的實(shí)時(shí)監(jiān)控。功能平臺(tái)提供綜合管理的同時(shí)又能滿足不同用戶群體的個(gè)性化需求。
LAMP環(huán)境下電梯物聯(lián)網(wǎng)系統(tǒng)由主控板、信息采集及傳輸裝置、服務(wù)器及客戶數(shù)據(jù)獲取終端構(gòu)成。該系統(tǒng)實(shí)現(xiàn)了以下功能:以SP4418為核心的主控板通過CAN總線傳輸獲取電梯運(yùn)行數(shù)據(jù);配備高清數(shù)字?jǐn)z像頭的多媒體系統(tǒng)獲取轎廂內(nèi)實(shí)時(shí)音視頻數(shù)據(jù),負(fù)責(zé)多媒體廣告投放和其他必要信息顯示的任務(wù);將以上裝置獲取的數(shù)據(jù)按不同類型通過MQTT、RTP、FTP等協(xié)議經(jīng)4G數(shù)據(jù)傳輸模塊傳輸至服務(wù)器;服務(wù)器則通過MySQL數(shù)據(jù)庫(kù)和phpMyAdmin數(shù)據(jù)管理工具實(shí)現(xiàn)對(duì)電梯數(shù)據(jù)的處理;在C/S和B/S模式框架下利用HTML語言、PHP語言、JAVA語言建立瀏覽器終端和安卓APP終端,完成與服務(wù)器的數(shù)據(jù)交互。從而保證系統(tǒng)采集和處理的各項(xiàng)數(shù)據(jù)可以被維保單位、電梯廠家、物業(yè)管理、政府部門等單位高效地使用。功能可概括為:用戶管理、電梯監(jiān)控、電梯維保、數(shù)據(jù)統(tǒng)計(jì)、電梯傳媒、數(shù)據(jù)采集,如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)
由于電梯物聯(lián)網(wǎng)系統(tǒng)接入的子模塊較多,需要對(duì)電梯數(shù)據(jù)進(jìn)行及時(shí)接收、處理以及存儲(chǔ)。同時(shí)系統(tǒng)還要對(duì)接入用戶身份驗(yàn)證和權(quán)限分配,實(shí)時(shí)處理來自瀏覽器端和手機(jī)客戶端的數(shù)據(jù)請(qǐng)求,并在此基礎(chǔ)上處理各種業(yè)務(wù)應(yīng)用,如網(wǎng)絡(luò)和系統(tǒng)管理并提供Web服務(wù)等。
所有這些任務(wù)的完成需要一個(gè)功能強(qiáng)大的服務(wù)器來支持和統(tǒng)籌管理,基于此并考慮到系統(tǒng)的安全性、穩(wěn)定性、靈活性和可擴(kuò)展性,選取Linux為服務(wù)器操作系統(tǒng),搭建了基于Ubuntu的輕量型Nginx服務(wù)器。
如前所述,系統(tǒng)接收和處理的數(shù)據(jù)量龐大,并且數(shù)據(jù)會(huì)實(shí)時(shí)更新,同時(shí)還需對(duì)不同電梯按照不同條目進(jìn)行分類管理,并根據(jù)請(qǐng)求從全體數(shù)據(jù)中提取相應(yīng)數(shù)據(jù)發(fā)送給瀏覽器和手機(jī)客戶端。而對(duì)于如此復(fù)雜的數(shù)據(jù)處理工作,需要一個(gè)體量大、帶有邏輯關(guān)系的工具存放及處理整個(gè)平臺(tái)的數(shù)據(jù)。
在眾多數(shù)據(jù)庫(kù)中MySQL體積小、速度快、成本低,配合PHP和Apache可組成良好的開發(fā)環(huán)境,目前許多小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù),還考慮到寫入和查詢的速度及靈活性,本系統(tǒng)選取MySQL這一關(guān)系型數(shù)據(jù)庫(kù)[2]。
電梯數(shù)據(jù)采集裝置通過各傳感器采集電梯運(yùn)行參數(shù)并進(jìn)行邏輯運(yùn)算,處理得到電梯運(yùn)行方向、電梯運(yùn)行速度,電梯所在樓層、電梯門機(jī)狀態(tài)等信息。當(dāng)電梯發(fā)生故障時(shí)系統(tǒng)將第一時(shí)間檢測(cè)出故障并發(fā)出報(bào)警信號(hào),立即將故障信息發(fā)送至維保人員,同時(shí)自動(dòng)與監(jiān)控中心建立對(duì)講連接,對(duì)被困人員進(jìn)行安撫工作。
電梯物聯(lián)網(wǎng)系統(tǒng)可以實(shí)時(shí)顯示所有電梯的運(yùn)行狀態(tài),包括離線、故障、檢修、正常這幾項(xiàng),管理員可以直觀掌握所有電梯的情況。實(shí)現(xiàn)方法是將存放在大數(shù)據(jù)平臺(tái)的所有數(shù)據(jù)按不同電梯分類,檢索所有電梯信息中的故障代碼信息,統(tǒng)計(jì)故障代碼信息不為空的數(shù)據(jù)條目,得出故障電梯臺(tái)數(shù)。檢修電梯臺(tái)數(shù)獲取方式和故障電梯臺(tái)數(shù)類似。對(duì)離線電梯臺(tái)數(shù)的統(tǒng)計(jì)要求電梯信息采集裝置在向服務(wù)器發(fā)送電梯狀態(tài)信息的同時(shí),攜帶一個(gè)隨機(jī)更改的數(shù)據(jù),服務(wù)器每次獲取數(shù)據(jù)后將當(dāng)前該位數(shù)據(jù)和上次獲取的數(shù)據(jù)對(duì)比判斷電梯是否離線。除去異常狀態(tài)即為正常運(yùn)行的電梯臺(tái)數(shù),通過分析電梯運(yùn)行的各項(xiàng)數(shù)據(jù)可以使電梯智慧化,例如學(xué)習(xí)用戶的使用習(xí)慣后讓電梯空閑狀態(tài)??吭谑褂幂^多的樓層等。另外保存各電梯歷史故障數(shù)據(jù),由維保人員分析具體故障和發(fā)生原因,將處理建議上傳至服務(wù)器從而減少故障的發(fā)生,提高電梯的安全性。
為方便用戶對(duì)電梯物聯(lián)網(wǎng)系統(tǒng)內(nèi)電梯數(shù)據(jù)的訪問,提高系統(tǒng)的實(shí)用性設(shè)計(jì),為用戶提供了瀏覽器和手機(jī)APP兩處數(shù)據(jù)終端,用戶可以在瀏覽器和手機(jī)上登錄電梯物聯(lián)網(wǎng)系統(tǒng),按照用戶權(quán)限實(shí)時(shí)查詢或修改電梯信息。
瀏覽器端主要在檔案管理功能下以表格的形式顯示電梯信息,用戶登錄系統(tǒng)可查看所有電梯的檔案信息,能夠添加新電梯信息,同時(shí)可以選中某條電梯信息進(jìn)行刪除、修改操作,這些操作最終都將更新到數(shù)據(jù)庫(kù)。
傳統(tǒng)的頁(yè)面設(shè)計(jì)方案是在頁(yè)面規(guī)定大小位置生成表格后將數(shù)據(jù)填入,所以表格數(shù)據(jù)量固定,這種方式適應(yīng)性差,與此相關(guān)的各項(xiàng)功能都依靠不同的JS函數(shù)實(shí)現(xiàn),不能滿足實(shí)時(shí)數(shù)據(jù)顯示的靈活性要求,且代碼冗長(zhǎng)。
本系統(tǒng)所采用的Bootstrap-Table是一種基于Bootstrap的專門用于顯示數(shù)據(jù)的jQuery表格插件,通過簡(jiǎn)單的設(shè)置即可擁有強(qiáng)大的單選、多選、排序、分頁(yè)、編輯、導(dǎo)出及過濾等功能。
手機(jī)APP端同樣需要獲取數(shù)據(jù)庫(kù)的電梯資料,由于APP只需實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問,所以通過MQTT協(xié)議訂閱來自服務(wù)器的推送即可實(shí)現(xiàn)。服務(wù)器將電梯數(shù)據(jù)打包后給APP提供數(shù)據(jù)接口,在APP端獲取數(shù)據(jù)并解析后顯示,減輕了服務(wù)器的負(fù)擔(dān)。
本文研究的電梯物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)關(guān)鍵在于如何將采集到的各項(xiàng)數(shù)據(jù)迅速、高效地傳輸?shù)皆贫瞬⑦M(jìn)行處理,及實(shí)現(xiàn)數(shù)據(jù)終端對(duì)云端數(shù)據(jù)的有效訪問。因此,系統(tǒng)規(guī)定了RESTful API協(xié)議,采用AJAX技術(shù)來實(shí)現(xiàn)數(shù)據(jù)交互,同時(shí)考慮系統(tǒng)接入點(diǎn)增多、用戶量增加的惡劣情況,采用服務(wù)器負(fù)載均衡技術(shù)優(yōu)化電梯物聯(lián)網(wǎng)系統(tǒng)。
物聯(lián)網(wǎng)通信協(xié)議是雙方實(shí)體完成通信或提供服務(wù)必須遵循的規(guī)則,常用的通信協(xié)議有MQTT、CoAP、RESTful/HTTP、XMPP這4種[3]。MQTT是一個(gè)即時(shí)通信協(xié)議;CoAP是專門為受限制應(yīng)用服務(wù)的協(xié)議;REST指的是一組架構(gòu)約束條件和原則,滿足該約束條件和原則的就是RESTful;XMPP是一種基于標(biāo)準(zhǔn)通用標(biāo)記語言的子集XML的協(xié)議。在RESTful API協(xié)議下客戶端和服務(wù)器的交互在請(qǐng)求之間是無狀態(tài)的,而無狀態(tài)請(qǐng)求可以由任何可用服務(wù)器回答,這十分適合云計(jì)算之類的環(huán)境,客戶端也可以緩存數(shù)據(jù)以改進(jìn)性能,本系統(tǒng)在RESTful API協(xié)議上完成數(shù)據(jù)的傳輸。
本系統(tǒng)在RESTful API協(xié)議的基礎(chǔ)上的應(yīng)用層規(guī)定了服務(wù)器與安卓客戶端數(shù)據(jù)交互協(xié)議、服務(wù)器與電梯控制器數(shù)據(jù)交互協(xié)議,從而使整個(gè)物聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)的傳輸在統(tǒng)一的協(xié)議之上可以穩(wěn)定、高效運(yùn)行。為方便數(shù)據(jù)庫(kù)對(duì)電梯數(shù)據(jù)的管理,提高數(shù)據(jù)庫(kù)響應(yīng)數(shù)據(jù)終端請(qǐng)求的效率,在數(shù)據(jù)傳輸之前需將信息按服務(wù)器及數(shù)據(jù)終端可識(shí)別的方式進(jìn)行JSON封裝。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式[4],采用完全獨(dú)立于編程語言的文本格式來存儲(chǔ)和表示數(shù)據(jù),擁有簡(jiǎn)潔、清晰的層次結(jié)構(gòu),易于閱讀和編寫,能夠有效地提升網(wǎng)絡(luò)傳輸效率。服務(wù)器與安卓客戶端數(shù)據(jù)交互協(xié)議內(nèi)容包括實(shí)時(shí)數(shù)據(jù)、歷史故障記錄、維修保養(yǎng)記錄、電梯檔案信息及電梯維保人員通信錄;服務(wù)器與電梯控制器數(shù)據(jù)交互協(xié)議內(nèi)容包括實(shí)時(shí)故障信息、電梯運(yùn)行狀態(tài)。部分協(xié)議內(nèi)容見表1和表2。
表1 服務(wù)器與手機(jī)客戶端數(shù)據(jù)交互協(xié)議
表2 服務(wù)器與電梯控制器數(shù)據(jù)交互協(xié)議
在服務(wù)器端為電梯控制器、安卓客戶端以及瀏覽器端設(shè)置不同的數(shù)據(jù)接口。每臺(tái)電梯的主控板將采集信息根據(jù)協(xié)議進(jìn)行JSON封裝后訪問相應(yīng)的數(shù)據(jù)接口,通過POST方式將數(shù)據(jù)傳輸給服務(wù)器,服務(wù)器端解析JSON數(shù)據(jù)后根據(jù)鍵值傳遞數(shù)據(jù)更新數(shù)據(jù)庫(kù)。為減少數(shù)據(jù)的傳輸量,在傳輸數(shù)據(jù)中只有數(shù)字信息,服務(wù)器端獲取數(shù)據(jù)后在后臺(tái)通過查詢方式將傳遞的數(shù)字信息轉(zhuǎn)換成對(duì)應(yīng)的具體狀態(tài)信息后更新數(shù)據(jù)庫(kù)。
安卓客戶端和瀏覽器端通過GET方式訪問相應(yīng)數(shù)據(jù)接口,發(fā)送數(shù)據(jù)請(qǐng)求至服務(wù)器,服務(wù)器從數(shù)據(jù)庫(kù)取相應(yīng)數(shù)據(jù)并封裝后通過POST方式傳送至數(shù)據(jù)終端。解析JSON數(shù)據(jù)和顯示任務(wù)都在數(shù)據(jù)終端完成。
為方便使用,將數(shù)據(jù)庫(kù)存儲(chǔ)的信息在有限的界面上有序、準(zhǔn)確、實(shí)時(shí)地顯示,用戶借助瀏覽器或手機(jī)在任何可以上網(wǎng)的地方通過賬號(hào)和密碼即可登陸電梯物聯(lián)網(wǎng)系統(tǒng)進(jìn)行數(shù)據(jù)訪問。
圖3 AJAX工作原理
在傳統(tǒng)網(wǎng)頁(yè)設(shè)計(jì)中,頁(yè)面數(shù)據(jù)的更新必須通過手動(dòng)刷新或重載整個(gè)網(wǎng)頁(yè)的方式才能實(shí)現(xiàn),這樣工作量大而且會(huì)使該系統(tǒng)失去實(shí)時(shí)性這一優(yōu)點(diǎn)。AJAX(異步JavaScript和XML)是一種可以實(shí)現(xiàn)網(wǎng)頁(yè)異步更新的技術(shù),能夠在后臺(tái)與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,并將數(shù)據(jù)實(shí)時(shí)顯示在頁(yè)面上,用戶無需手動(dòng)刷新即可掌握電梯的實(shí)時(shí)狀態(tài)。同時(shí)用戶可以在網(wǎng)頁(yè)端修改數(shù)據(jù)庫(kù)信息,修改對(duì)象和修改內(nèi)容同樣通過AJAX技術(shù)在后臺(tái)傳輸,AJAX工作原理見圖3。
AJAX傳輸方案的實(shí)現(xiàn)方法是在頁(yè)面設(shè)計(jì)時(shí)嵌入JS,指向請(qǐng)求文件在服務(wù)器中的位置,并將請(qǐng)求通過GET方式發(fā)送至服務(wù)器。在請(qǐng)求文件中連接數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)導(dǎo)出電梯狀態(tài)信息封裝后返回響應(yīng)。在頁(yè)面中解析響應(yīng)數(shù)據(jù)并傳遞到相應(yīng)位置。考慮到檔案管理涉及數(shù)據(jù)復(fù)雜龐大,以及要將數(shù)據(jù)向表格填充,故將所有數(shù)據(jù)導(dǎo)入到txt文檔,解析和傳值交給頁(yè)面處理,減輕數(shù)據(jù)庫(kù)和服務(wù)器的負(fù)擔(dān)。按鍵關(guān)聯(lián)不同JS實(shí)現(xiàn)增加、刪除和修改功能,在JS中將頁(yè)面信息和請(qǐng)求內(nèi)容一同通過GET方式發(fā)送至服務(wù)器,同樣在請(qǐng)求文件中完成對(duì)數(shù)據(jù)庫(kù)的操作。
電梯數(shù)據(jù)信息、電梯監(jiān)控視頻信息、流媒體資源都需保存在服務(wù)器大數(shù)據(jù)平臺(tái),后期系統(tǒng)升級(jí)、接入點(diǎn)增多、用戶量增加,單臺(tái)服務(wù)器性能無法滿足大量數(shù)據(jù)的存儲(chǔ)和處理要求,以及大量用戶的訪問要求。依靠多臺(tái)服務(wù)器配合使用來提供服務(wù),實(shí)現(xiàn)數(shù)據(jù)分類管理、電梯數(shù)據(jù)處理服務(wù)器存儲(chǔ)及處理電梯數(shù)據(jù)、視頻存儲(chǔ)服務(wù)器存儲(chǔ)電梯監(jiān)控視屏及流媒體視屏功能。該部分通過負(fù)載均衡技術(shù)實(shí)現(xiàn)[5],負(fù)載均衡設(shè)備將電梯數(shù)據(jù)處理服務(wù)器地址和視頻存儲(chǔ)服務(wù)器地址映射到同一個(gè)對(duì)外服務(wù)IP,用戶訪問這一IP時(shí)負(fù)載均衡設(shè)備根據(jù)請(qǐng)求來源進(jìn)行地址處理,將請(qǐng)求攜帶的數(shù)據(jù)包分發(fā)至對(duì)應(yīng)服務(wù)器。在服務(wù)器響應(yīng)請(qǐng)求時(shí),由于之前IP地址轉(zhuǎn)換,不同應(yīng)答包中源地址和目標(biāo)地址與請(qǐng)求包對(duì)調(diào),應(yīng)答包從服務(wù)器到達(dá)負(fù)載均衡設(shè)備后將正確轉(zhuǎn)發(fā)至用戶,保證了訪問的一致性。
[1] 高林林, 宋克柱, 郭曉天. 基于物聯(lián)網(wǎng)的電梯監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 電子測(cè)量技術(shù), 2016, 39(12):5-8.
[2] 游琪. 多核環(huán)境下內(nèi)存數(shù)據(jù)庫(kù)并發(fā)調(diào)度技術(shù)優(yōu)化研究[J]. 計(jì)算機(jī)測(cè)量與控制, 2017, 25(8):234-236.
[3] 沙學(xué)軍,譚學(xué)治,張乃通.幾種可應(yīng)用于集群移動(dòng)通信系統(tǒng)的接續(xù)協(xié)議模擬分析[J]. 通信學(xué)報(bào),1995(6):64-69.
[4] 高靜, 段會(huì)川. JSON數(shù)據(jù)傳輸效率研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2011, 32(7):2267-2270.
[5] 陳世芳,呂天齊,王小娟.基于負(fù)載均衡的虛擬網(wǎng)絡(luò)映射算法研究[J]. 計(jì)算機(jī)應(yīng)用研究.2016(12):3805-3808,3831.