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