本发明涉及数据采集,具体领域为一种用于电力设备生产的数据采集存储查询系统。
背景技术:
::1、随着工业物联网技术的快速发展。国家电力设备品种型号功能的多样化,使得在进行电路设备生产过程中对应数据采集时,需要专人进行数据采集以及数据录入,但是目前的电力设备基本都配有单机数据库,实现该单机设备的数据采集存储,这些单机数据库如access、sqlite,市面上没有关于单机数据库数据采集的通用解决方案,且人工数据汇总以及数据的录入,容易出现数据泄露以及数据汇总错误的情形。技术实现思路1、针对现有技术存在的不足,本发明的目的在于提供一种用于电力设备生产的数据采集存储查询系统2、为实现上述目的,本发明提供如下技术方案:一种用于电力设备生产的数据采集存储查询系统,包括采集模组、存储模组以及查询模组,所述采集模组根据实际高压电站数量匹配设置,存储模组用于对采集模组发送的数据进行存储,所述存储模组至少设置有三个,且所有的存储模组之间互为数据备份,所述查询模组用于提取存储模组内的数据进行数据处理或数据查询;3、所述采集模组包括数据采集模块、采集参数配置模块和pc端,所述数据采集模块和采集参数配置模块设置于pc端内,pc端与电力设备数据采集端通信,4、所述数据采集模块包括采集参数信息查询接口单元、采集统一接口单元、采集软件管理单元、采集软件类型管理单元和数据采集软件监视单元;5、所述采集参数配置模块包括设备id信息配置单元、数据库信息配置单元和采集软件类型信息配置单元;6、采集参数信息查询接口单元和采集统一接口单元与电力设备数据采集端数据通信,采集参数信息查询接口单元接收设备信息并与采集参数配置模块通信进行数据匹配,采集统一接口单元接收匹配的数据信息后,将数据信息发送到采集软件类型管理单元,采集软件类型管理单元基于接收到的数据信息调用采集软件管理单元内相匹配的采集软件,采集统一接口单元通过该调用的采集软件返回到pc端进行数据采集,并将采集的数据存入本地pc端的数据库中,7、所述pc端中还包括有随机匹配单元一和数据加密单元,所述随机匹配单元一内设置有所有存储模组的链接信息,通过随机匹配单元一随机抽取一存储模组链接信息,pc端与该存储模组链接通信,pc端采集的数据通过数据加密单元加密后输送到链接的存储模组;8、所述存储模组包括独立设置的存储服务器、设置于该存储服务器内的数据解密单元一、数据加密存储单元、数据更新同步单元、数字证书单元一和存储数据库,9、数据加密存储单元的加密算法与数据加密单元的加密算法为不同的加密方式,数据解密单元一用于对数据加密单元加密的数据进行解密,数据加密存储单元用于对数据解密单元一解密后的数据进行加密并存储至存储数据库中,数据更新同步单元用于对存储数据库进行数据监视,当数据加密存储单元将加密后的数据存储到存储数据库后,触发数据更新同步单元运行,通过数据更新同步单元与其他剩下所有存储模组的存储服务器进行通信链接,并将本存储服务器中存储数据库的存入数据同步至其他存储服务器中,保持所有存储服务器的存储数据库数据一致,所述数字证书单元一内存储有所有查询模组相关的证书信息,用于对查询模组进行通信合法化链接验证;10、所述查询模组包括查询终端、设置于查询终端内的数字证书单元二、数据解密单元二、随机匹配单元二,所述随机匹配单元二内设置有所有存储模组的链接信息,通过随机匹配单元二随机抽取一存储模组链接信息,查询终端与该存储模组链接通信,数字证书单元二存储有本查询终端的数字证书,数字证书单元一用于对数字证书单元二进行验证,并通过验证后链接该查询终端与存储服务器之间的网络通信,查询终端提取存储数据库相应的数据后,数据解密单元二用于对该加密数据进行解密;11、所述随机匹配单元一的运行方式为:12、(1)将所有存储模组的链接信息进行排序编号,并构成原始数组;13、(2)采用洗牌算法,对原始数组进行洗牌随机排序构成随机数组;14、(3)根据预设的抽取排序数,对随机数组中相应位置处的编号进行抽取;15、(4)基于该抽取的编号对应到相应的链接信息,通过该链接信息实现pc端与该链接信息对应的存储模组;16、(5)根据步骤(4),当该pc端不是首次与存储模组通信连接时,随机匹配单元一将上一次链接信息所对应的编号从原始数组中剔除,然后通过洗牌算法对该数组进行洗牌随机排序构成相应的随机数组;17、(6)然后通过步骤(3)和(4),抽取到对应的链接信息后,实现pc端与存储模组的通信;18、所述随机匹配单元二与数据匹配单元一采用相同的方式处理,随机匹配单元二的抽取排序与随机匹配单元一的抽取排序不一致。19、在其中一些实施例中,所述采集模组根据对应的高压电站进行编号,且每个编号下均匹配有对应于该高压电站下的高压电数据采集设备信息,pc端每次传输至存储模组中的数据均包括有该高压电站编号、传输时间、相应的高压电数据采集设备信息、以及对应于该采集设备所采集的数据,存储模组接收到上述信息建立数据库索引,并对上述信息进行索引匹配,查询模组根据索引查询存储模组上所需的相关数据信息。20、在其中一些实施例中,所述数字证书单元一包括数字证书解析单元、数字证书验证单元和数字证书库,所述数字证书库中包含有所有查询模组相关的数字证书信息,所述数字证书解析单元用于对链接的查询终端所带的数字证书进行解析,所述数字证书验证单元用于对解析后的信息与数字证书库进行匹配,匹配验证正确后,存储模组中的存储数据库与对应的查询终端实现通信。21、在其中一些实施例中,所述采集参数信息查询接口单元其具体实现方式为:22、连接数据库:首先,使用sqlalchemy库中的create_engine函数建立与sqlite数据库的连接;23、获取表信息:然后,使用metadata对象获取数据库中的元数据信息,包括表结构等;24、查询参数:接下来,通过table对象的select方法构建一个查询语句,指定查询的是parameters表,并且筛选出device_id列等于给定参数device_id的行;25、执行查询:使用连接对象的execute方法执行查询语句,得到查询结果;26、处理查询结果:对查询结果进行遍历,将每一行的参数名和参数值添加到一个字典中;27、关闭连接:最后,关闭数据库连接,释放资源;28、返回参数字典:返回包含查询到的参数的字典。29、在其中一些实施例中,所述采集统一接口单元其具体实现方式为:30、(1)接受一个参数字典parameters,其中包含参数名和对应的数值;31、遍历参数字典,对每个参数调用call_external_api函数,将返回的数据存储在collected_data字典中;32、返回收集到的数据字典collected_data;33、(2)接受参数名和数值;34、将参数名和数值组成的字典匹配调用对应的外部api,并返回相应的数据;35、(3)接受一个数据字典data,其中包含从外部api收集到的数据;36、调用call_third_party_api函数,将收集到的数据作为参数传递,并将返回的集成结果存储在integration_result字典中;37、返回集成结果字典integration_result;38、(4)接受一个数据字典data,其中包含收集到的数据;39、返回一个包含成功状态的字典,并调用对应匹配的第三方api,并返回相应的集成结果。40、在其中一些实施例中,所述采集软件管理单元其具体实现方式为:41、导入必要的模块:使用 from flask import flask, request, jsonify 导入flask 框架及相关模块;42、创建 flask 应用:使用 app = flask(__name__) 创建一个 flask 应用;43、定义路由和视图函数:使用 @app.route() 装饰器定义了多个路由,并指定了相应的 http 请求方法;44、安装软件:在 install_software() 视图函数中,从 post 请求的 json 数据中提取软件名称,并将其添加到 installed_software 字典中,表示已安装该软件;45、配置软件:在 configure_software() 视图函数中,从 post 请求的 json 数据中提取软件名称,并返回一个成功配置的消息;46、启动软件:在 start_software() 视图函数中,从 post 请求的 json 数据中提取软件名称,并返回一个成功启动的消息;47、停止软件:在 stop_software() 视图函数中,从 post 请求的 json 数据中提取软件名称,并返回一个成功停止的消息;48、更新软件:在 update_software() 视图函数中,从 post 请求的 json 数据中提取软件名称,并返回一个成功更新的消息;49、启动应用程序:使用 app.run(debug=true) 启动 flask 应用,并开启调试模式。50、在其中一些实施例中,所述采集软件类型管理单元其具体实现方式为:51、导入必要的模块:使用 from flask import flask, request, jsonify 导入flask 框架及相关模块;52、创建 flask 应用:使用 app = flask(__name__) 创建一个 flask 应用;53、定义路由和视图函数:使用 @app.route() 装饰器定义了一个路由 /match_software_type,并指定了相应的 http 请求方法为 post;54、匹配软件类型:在 match_software_type() 视图函数中,从 post 请求的 json数据中提取数据类型 data_type,55、如果 data_type 在 software_types 字典中,则获取相应的软件类型并返回,56、如果 data_type 不在 software_types 字典中,则返回一个消息表示没有找到匹配的软件类型,并返回状态码 404;57、启动应用程序:使用 app.run(debug=true) 启动 flask 应用,并开启调试模式。58、在其中一些实施例中,所述数据采集软件监视单元其具体实现方式为:59、导入必要的模块:导入logging 模块用于日志记录,导入time 模块用于时间操作,导入 backgroundscheduler 类和相关功能模块用于后台任务调度;60、配置日志记录:使用 logging.basicconfig() 配置了日志记录器,设置了日志级别为 info,并指定了日志格式;61、定义监视数据收集函数:定义 monitor_data_collection() 函数用于监视数据收集,其中记录监视信息;62、定义异常处理函数:定义 handle_exception(e) 函数用于处理任务执行过程中的异常,其中记录异常信息;63、创建后台任务调度器:创建 backgroundscheduler 实例 scheduler 用于后台任务调度;64、添加定时任务:使用 scheduler.add_job() 方法向调度器中添加一个定时任务,每隔60秒执行一次 monitor_data_collection() 函数;65、添加异常监听器:使用 scheduler.add_listener() 方法向调度器中添加了一个异常监听器,用于监听任务执行过程中的异常,当任务发生异常时调用 handle_exception() 函数处理;66、启动调度器:使用 scheduler.start() 启动了后台任务调度器,开始执行定时任务;67、主循环及键盘中断处理:使用 while true 进入主循环,保持程序运行,68、使用 time.sleep(2) 让程序每隔2秒执行一次循环体,避免过度消耗 cpu 资源,69、使用 try-except 块捕获键盘中断异常,当接收到键盘中断信号时,调用scheduler.shutdown() 停止调度器,并记录日志信息表示调度器已停止。70、在其中一些实施例中,所述数据加密存储单元的加密算法为非对称加密算法rsa,所述数据加密单元的加密算法为keccak哈希算法。71、在其中一些实施例中,所述数字证书单元二对应的数字证书由管理人员通过加密数字证书生成器进行生成,且生成该数字证书时,加入对应的查询终端匹配信息,然后通过独立存储器进行锁存,同时在生成该数字证书时,生成相应的数字证书验证信息,并通过加密网络传输到所有的存储模组中相应的数字证书库进行存储,在使用时,该独立存储器插入与之匹配的查询终端中,该查询终端上的数字证书单元二提取独立存储器中的数字证书并与查询终端进行配对,若配对成功则数字证书进行加载,若配对不成功则独立存储器与查询终端断开连接。72、与现有技术相比,本发明的有益效果是:数据采集配置信息放在pc端,采集软件与配置信息解耦,采集解析配置信息,按照采集规则执行任务;通过软件业务关注点分离,降低了软件业务分复杂度,软件开发的工作量;维护人员只需懂得基本的sql语句,就可以完成基础的业务变更,无需开发人员参与,降低人力成本,同时实现了自动化的数据采集汇总;73、同时通过存储模组的设置,能够实现数据异地存储,以及多个存储服务器的设置,避免了数据破坏以及数据链接的隐秘安全性,保证了高压电采集数据的安全性;74、通过存储模组内的多层加密方式,能够避免pc端的加密数据与存储模组中存储数据库中的加密数据一致性,保证了数据的异化以及配对,避免了无关人员通过pc端加密数据网络传输时截取的信息与存储模组中存储数据库的信息进行偷取解密,保证了数据安全性;75、通过查询模组的设置,且查询模组内设置数字证书,提高了存储模组与查询模组之间的通信安全性;76、通过随机匹配单元的设置,能够避免相邻两次通信连接,出现同一网络匹配的情况,避免了无关人员对网络监视信息的比对,保证了每次通信时均为不同的网络匹配信息。77、本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂,通过本技术的实施例对本技术进行详尽说明和了解。当前第1页12当前第1页12