物聯(lián)網(wǎng)的發(fā)展為智能安防和自動化監(jiān)控帶來了更多便利,同時,新型城鎮(zhèn)建設(shè)、智慧城市與智慧社區(qū)的發(fā)展也為門禁管理等安防問題智能化提出了更高的要求。在智能化發(fā)展的背景下,門禁成為一套集成了訪客、考勤、消費(fèi)、巡更、梯控等更多功能的全面便捷的系統(tǒng)安全應(yīng)用,隨著門禁系統(tǒng)應(yīng)用愈發(fā)廣泛,對海量數(shù)據(jù)的實(shí)時快速處理也成為了日益重要的問題。
作為一款高性能分布式時序數(shù)據(jù)庫,DolphinDB 提供了流數(shù)據(jù)表和流計算引擎用于實(shí)時數(shù)據(jù)處理,為智能安防提供了有力支持。今天,我們將介紹如何通過流計算引擎多級級聯(lián)實(shí)現(xiàn)對門禁設(shè)備異常狀態(tài)的實(shí)時監(jiān)測,基于 DolphinDB 流數(shù)據(jù)處理框架,為大家提供一套實(shí)時監(jiān)測門禁設(shè)備異常狀態(tài)的低延時解決方案。
常見的智能安防系統(tǒng)一般包含有監(jiān)控、報警、門禁和遠(yuǎn)程控制4個主要功能,可以單獨(dú)運(yùn)行也可統(tǒng)一管理。而門禁則是整個智能安防系統(tǒng)中的基礎(chǔ)應(yīng)用,同時也關(guān)系到物聯(lián)網(wǎng)領(lǐng)域中的公共安全、城市管理、智能家居等多個方面。首先,我們先來了解一下門禁系統(tǒng)的具體應(yīng)用場景與功能設(shè)置:
1.門禁、報警綜合管理系統(tǒng)服務(wù)器:提供集中管理及監(jiān)控、輸出、聯(lián)動功能。
2.門禁工作站:門禁工作站提供功能設(shè)置及事件監(jiān)控。
3.門禁控制器:門禁管理系統(tǒng)的核心部分,直接管理及控制相關(guān)設(shè)備,具有存儲功能,可存放持卡人資料及各種事件記錄。
4.讀卡器:工作于射頻方式,采集感應(yīng)卡的數(shù)據(jù)傳輸?shù)介T禁控制器,以便控制器進(jìn)行各種管理及相應(yīng)的控制。
5.電鎖:電子方式開關(guān),實(shí)現(xiàn)開門及鎖門,由門禁控制器直接控制。
6.開門按鈕:提供便利的開門方式。
7.門磁:檢測門的狀態(tài)信息,然后傳輸?shù)娇刂破鳌?/p>
8.報警輸入輸出設(shè)備:為加強(qiáng)系統(tǒng)的保安,可以將輸入輸出設(shè)備接入門禁控器的接口,實(shí)現(xiàn)系統(tǒng)的報警及聯(lián)動。
工業(yè)中心門禁管理系統(tǒng)結(jié)構(gòu)
上圖展示了一個常見的門禁管理系統(tǒng)結(jié)構(gòu),報警系統(tǒng)是安防及門禁系統(tǒng)中保障安全問題的重要功能組件及環(huán)節(jié),也可以實(shí)現(xiàn)與其他監(jiān)控設(shè)備的聯(lián)防聯(lián)控。
1. 設(shè)計思路與方案
隨著接入智能門禁系統(tǒng)的終端不斷增多,如何對海量數(shù)據(jù)進(jìn)行實(shí)時高效計算、及時反饋報警消息,成為智能門禁及智慧社區(qū)建設(shè)的關(guān)鍵問題。保持門禁正常關(guān)閉狀態(tài)是保證樓宇內(nèi)居民安全的基礎(chǔ)需求之一,假定有一個監(jiān)控系統(tǒng),對所有門禁設(shè)備每5秒鐘采集1次數(shù)據(jù),同時開門或關(guān)門的事件會主動上報數(shù)據(jù),本案例中的門禁異常狀態(tài)檢測需求是:開門狀態(tài)連續(xù)存在超過5分鐘報警。首先需要對采集數(shù)據(jù)進(jìn)行去重處理,再檢測出數(shù)據(jù)中狀態(tài)持續(xù)超時的記錄。此時的記錄會包括所有狀態(tài)持續(xù)超過5分鐘的數(shù)據(jù),因此仍需將數(shù)據(jù)接入下一級引擎去除關(guān)門告警,只保留開門狀態(tài)超時報警。采用 DolphinDB 響應(yīng)式狀態(tài)引擎完成過濾篩選數(shù)據(jù)的任務(wù),并通過會話窗口引擎檢測超時數(shù)據(jù)。將三個引擎級聯(lián),實(shí)現(xiàn)檢測異常門禁狀態(tài)(開門時間大于5分鐘)的流水線處理模式。
門禁異常狀態(tài)數(shù)據(jù)處理流程
2. 內(nèi)置流計算引擎監(jiān)測門禁異常狀態(tài)
DolphinDB 內(nèi)置了響應(yīng)式狀態(tài)引擎和會話窗口引擎實(shí)現(xiàn)門禁異常狀態(tài)的實(shí)時監(jiān)測。
響應(yīng)式狀態(tài)引擎(createReactiveStateEngine):
·有兩種因子計算:無狀態(tài)因子和有狀態(tài)因子。
·無狀態(tài)因子只依賴最新數(shù)據(jù),不需要?dú)v史數(shù)據(jù)。
·有狀態(tài)因子需要最新數(shù)據(jù)和歷史數(shù)據(jù),并會更新狀態(tài)。
·每輸入一條數(shù)據(jù)都將觸發(fā)一條結(jié)果輸出,輸入和輸出數(shù)據(jù)量一致。
·算子中只能包含向量函數(shù),對于常見狀態(tài)算子進(jìn)行了優(yōu)化,大幅提高計算效率。
會話窗口引擎(creatSessionWindowEngine):
·適用于物聯(lián)網(wǎng)場景,解決設(shè)備在線時間不均勻的問題。
·窗口不按固定頻率生成,窗口長度也不是固定的。
·以第一條數(shù)據(jù)的時間戳作為第一個窗口的起始時間。
·若在指定等待時間內(nèi)未收到新數(shù)據(jù),則當(dāng)前窗口結(jié)束。
·解決滑動窗口計算中無數(shù)據(jù)窗口增加不必要計算開銷的問題。
3.?實(shí)現(xiàn)步驟
接下來,我們一起來詳細(xì)了解下如何通過 DolphinDB 實(shí)現(xiàn)多級引擎級聯(lián)檢測異常門禁狀態(tài)的流水線處理模式。
3.1 定義并共享輸入輸出流數(shù)據(jù)表
首先定義一個用于實(shí)時接收門禁監(jiān)控設(shè)備數(shù)據(jù)的流數(shù)據(jù)表,表結(jié)構(gòu)共包含七列,通過?enableTableShareAndPersistence函數(shù)共享流數(shù)據(jù)表并持久化到硬盤上。其次定義異常狀態(tài)流數(shù)據(jù)表,用于響應(yīng)式狀態(tài)引擎的輸出,并將其持久化到磁盤上。
3.2?創(chuàng)建響應(yīng)式狀態(tài)引擎過濾重復(fù)數(shù)據(jù)
響應(yīng)式狀態(tài)引擎會對輸入的每一條消息做出計算響應(yīng),產(chǎn)生一條記錄作為結(jié)果,可以啟用過濾條件保證只有滿足條件的結(jié)果才會輸出。在本案例中,只有事件碼有變化的數(shù)據(jù)才會被輸出到設(shè)置的輸出表中。DolphinDB 內(nèi)置的流計算引擎均實(shí)現(xiàn)了數(shù)據(jù)表的接口,因此多個引擎流水線處理變得異常簡單,只要將后一個引擎作為前一個引擎的輸出即可。
3.3?通過級聯(lián)會話窗口引擎檢測狀態(tài)超時數(shù)據(jù)
首先創(chuàng)建一張內(nèi)存表,為響應(yīng)式狀態(tài)引擎提供輸入的表結(jié)構(gòu),與上一級引擎輸出表的結(jié)構(gòu)一致。在會話窗口引擎中,設(shè)置分組列??keyColumn??為門號??doorNum?,時間列??timeColumn??為時間??eventDate?。檢測需求是五分鐘內(nèi)無數(shù)據(jù)報警,因此??sessionGap??為300(秒),表示收到某條數(shù)據(jù)后經(jīng)過該時間的等待仍無新數(shù)據(jù)到來,就終止當(dāng)前窗口。?metrics??設(shè)為??last(doorEventCode)?,即返回窗口內(nèi)的最后一條記錄數(shù)據(jù)。會話窗口引擎的輸入數(shù)據(jù)為上一級響應(yīng)式狀態(tài)引擎的輸出,輸出作為下一級響應(yīng)式狀態(tài)引擎的輸入。
3.4?響應(yīng)式狀態(tài)引擎過濾關(guān)門告警
上級會話窗口引擎獲取到的數(shù)據(jù)包括開門和關(guān)門超過5分鐘的數(shù)據(jù),因此需要再通過響應(yīng)式狀態(tài)引擎過濾掉關(guān)門狀態(tài)超時數(shù)據(jù),只保留開門告警。
3.5?訂閱流數(shù)據(jù)
過濾了關(guān)門告警數(shù)據(jù)后,訂閱流數(shù)據(jù)表??doorRecord??并把收到的流數(shù)據(jù)寫入上述會話窗口引擎。
3.6?從 MQTT 服務(wù)器接收數(shù)據(jù)
DolphinDB 提供了 MQTT 插件用于訂閱 MQTT 服務(wù)器的數(shù)據(jù),在訂閱時需要數(shù)據(jù)格式解析函數(shù),目前插件提供了??json??和??csv??格式的解析函數(shù),本例使用??mqtt::createJsonParser??解析??json??格式數(shù)據(jù)。隨著網(wǎng)絡(luò)與數(shù)字技術(shù)飛速發(fā)展,門禁系統(tǒng)早已不再是單純的門道及鑰匙管理,而是逐漸演變成為一套完整的出入門禁安全管理系統(tǒng),集微機(jī)自動識別技術(shù)和現(xiàn)代安全管理措施為一體。DolphinDB 提供了一種實(shí)時監(jiān)測門禁設(shè)備異常狀態(tài)的低延時解決方案,實(shí)現(xiàn)了會話窗口引擎和響應(yīng)式狀態(tài)引擎級聯(lián),降低開發(fā)難度,有效提升海量數(shù)據(jù)的實(shí)時計算效率,滿足了門禁系統(tǒng)智能化的計算需求。
以上是基于 DolphinDB 流數(shù)據(jù)處理框架進(jìn)行引擎級聯(lián)監(jiān)測門禁異常狀態(tài)的完整方案,想知道詳細(xì)實(shí)現(xiàn)步驟并自己動手模擬驗證?歡迎關(guān)注公眾號【DolphinDB 物聯(lián)網(wǎng)】深入了解。
相關(guān)稿件