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