物联网的发展为智能安防和自动监控带来了更多的便利,同时,新城建设、智慧城市和智慧社区的发展也对门禁管理等安全问题的智能化提出了更高的要求。 在智能化发展的背景下,门禁已成为集成访客、考勤、消费、巡视、电梯控制等更多功能的综合便捷系统安防应用,随着门禁系统的应用越来越广泛,海量数据的实时快速处理成为越来越重要的问题。
作为一款高性能的分布式时序数据库,DolphinDB 提供流表和流式计算引擎进行实时数据处理,为智能安全提供有力支撑。 今天,我们将介绍如何通过流计算引擎的多级级联实现对访问控制设备异常状态的实时监控,并为您提供一套基于 DolphinDB 流数据处理框架实时监控访问控制设备异常状态的低延迟解决方案。
常见的智能安防系统一般包括监控、报警、门禁和远程控制4大功能,可以单独操作,也可以统一管理。 门禁是整个智能安防系统的基础应用,在物联网领域也涉及公共安全、城市管理、智能家居等方面。 首先,我们来看看门禁系统的具体应用场景和功能设置
1.门禁报警综合管理系统服务器:提供集中管理和监控、输出、联动功能。
2.门禁工作站:门禁工作站提供功能设置和事件监控。
3.门禁控制器:门禁管理系统的核心部分,直接管理和控制相关设备,具有存储功能,可存储持卡人信息和各种事件记录。
4.读卡器:工作在射频模式下,采集感应卡的数据并传输给门禁控制器,以便控制器可以进行各种管理和相应的控制。
5.电锁:电子开关,用于开锁门,由门禁控制器直接控制。
6.开门按钮:提供打开门的便捷方式。
7.门磁性:检测门的状态信息并将其传输给控制器。
8.报警输入输出设备:为了加强系统的安全性,可以将输入输出设备连接到门禁控制器的接口,实现系统的报警和联动。
工业中心门禁管理系统结构。
上图显示了一种常见的门禁管理系统结构,报警系统是安防和门禁系统中确保安全的重要功能部件和环节,还可以实现与其他监控设备的联防联控。
1.设计理念和方案
随着接入智能门禁系统的终端越来越多,如何实时、高效、及时地计算出海量数据反馈报警信息,成为智能门禁和智慧社区建设中的关键问题。 保持门禁的正常关闭是保证楼内居民安全的基本要求之一,假设有一个监控系统,每5秒从所有门禁设备收集一次数据,并且门打开或关闭的事件都会主动上报数据,在这种情况下,门禁的异常状态检测要求是: 开门状态持续存在5分钟以上报警。首先,需要对采集到的数据进行重复数据删除,然后检测数据中连续超时的记录。 此时,记录将包括所有持续超过 5 分钟的数据,因此仍然需要将数据连接到下一级发动机以移除关门报警,并且只保留开门状态超时报警。 dolphindb响应状态引擎用于完成对数据进行过滤和过滤的任务,超时数据由会话窗口引擎检测。 将三个引擎级联,实现检测异常访问控制状态(开门时间大于5分钟)的流水线处理模式。
访问控制异常状态的数据处理过程。
2.内置流计算引擎,监控访问控制的异常状态
DolphinDB 内置响应式状态引擎和会话窗口引擎,实现对门控异常状态的实时监控。
CreateReactiveStateEngine
有两个因子计算:无状态和有状态。
无状态因素仅依赖于最新数据,不需要历史数据。
有状态因素需要最新的历史数据并更新状态。
每条输入数据都会触发一个结果输出,输入和输出的数据量是相同的。
算子只能包含向量函数,针对常用状态算子进行了优化,大大提高了计算效率。
CreatSessionWindowEngine:
适用于物联网场景,解决设备时间不均的问题。
窗口不是以固定的频率生成的,窗口长度也不是固定的。
第一条数据的时间戳用作第一个窗口的开始时间。
如果在指定的等待时间内未收到新数据,则当前窗口结束。
修复:无数据窗口在滑动窗口的计算中增加不必要的计算开销的问题。
3.实施步骤
接下来,我们来详细了解一下如何实现级联多级引擎的流水线处理模式,通过dolphindb检测异常访问控制状态。
3.1 定义和共享输入和输出流数据表
首先,定义一个用于接收实时门禁设备数据的流数据表,该表结构共包含七列,并通过 enabletableshareandpersistence 函数共享流数据表并持久化到硬盘中。 接下来,为响应式状态引擎的输出定义异常状态流数据表,并将其保存到磁盘。
3.2 创建反应式状态引擎以过滤重复数据
反应式状态引擎将对每条输入消息做出计算响应,从而产生结果记录,并且可以启用过滤条件以确保只输出满足条件的结果。 在这种情况下,只有事件代码发生变化的数据才会输出到设置的输出表。 dolphindb 内置的流计算引擎实现了数据表的接口,因此流水线化多个引擎非常容易,只要后一个引擎作为前一个引擎的输出即可。
3.3 通过级联会话窗口引擎检测状态超时数据
首先,创建一个 In-Memory 表,为响应式状态引擎提供输入,该表的结构与上级引擎的输出表结构相同。 在会话窗口引擎中,将分组列的 keycolumn 设置为 doornum 的门号,将 timecolumn 的 time 列设置为 eventdate 的时间。 检测要求是五分钟内没有数据告警,所以会话间隔为300(秒),这意味着在收到某条数据后等待后没有新数据到达,当前窗口终止。 metrics 设置为 last(dooreventcode),这将返回窗口中的最后一条记录数据。 会话窗口引擎的输入数据是上级反应式状态引擎的输出,输出作为下一级反应式状态引擎的输入。
3.4 响应状态发动机过滤器关门警报
父会话窗口引擎获取的数据包括5分钟以上的开门关门数据,因此需要通过反应状态引擎过滤掉关门状态超时数据,只保留开门报警。
3.5 订阅流数据
过滤掉关机告警数据后,订阅 doorrecord 表,将接收到的流数据写入会话窗口引擎。
3.6 从MQTT服务器接收数据
DolphinDB 提供了用于订阅 MQTT 服务器数据的 MQTT 插件,订阅时需要数据格式解析功能,目前插件提供了 JSON 和 CSV 格式的解析功能,在本示例中,我们使用 MQTT::createJSONparser 来解析 JSON 格式数据。 随着网络和数字化技术的飞速发展,门禁系统早已不再是简单的门和钥匙管理,而是逐渐演变成一套完整的门禁安全管理系统,集微机自动识别技术和现代安全管理措施于一体。 DolphinDB 为实时监控访问控制设备的异常状态提供了低延迟的解决方案,实现了会话窗口引擎和响应状态引擎的级联,降低了开发难度,有效提高了海量数据的实时计算效率,满足了访问控制系统的智能计算需求。
以上是基于 dolphindb 流数据处理框架的完整方案,用于引擎级联监控访问控制的异常状态,想了解详细的实现步骤并自行模拟验证吗? 欢迎关注***dolphindb物联网]了解更多。