MyEMS开源能源管理系统核心代码解读013

46 阅读2分钟

MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展! 官网 :myems.io

MyEMS开源社区版下载:gitee.com/myems/myems 本期解读:

离线表数据文件计算方法:myems/myems-normalization/offlinemeter.py 源代码链接:gitee.com/myems/myems… 这段代码是一个用于处理离线表数据的Python脚本,主要功能是从数据库中获取新的离线表文件,解析这些文件中的数据,然后将数据存储到另一个数据库中。整个过程分为四个步骤:

1.获取所有状态为'new'的离线表文件: 这一步骤通过连接到MyEMS历史数据库,查询状态为'new'的离线表文件,并将这些文件的信息(包括文件ID、文件名和文件对象)保存到一个列表中。

2.遍历每个新文件,读取单元格的值并存储数据到能源数据列表: 对于列表中的每个文件,脚本会将文件对象写入本地文件,然后使用openpyxl库加载工作簿。接着,脚本会遍历工作簿中的行,读取表ID、表名称和日期时间数据,将这些数据存储到一个字典中。

3.将能源数据插入或更新到能源数据库中的离线表小时表: 在这一步骤中,脚本首先验证表ID是否有效,然后检查数据的有效性(比如数据的范围是否在预设的低限和高限之间)。如果数据有效,脚本会连接到MyEMS能源数据库,并删除可能存在的旧数据,然后插入新的小时数据。

4.更新文件状态为'done'或'error': 最后,脚本会更新原始文件的状态,标记为'done'表示处理成功,或者'error'表示处理过程中出现错误。

整个脚本在一个无限循环中运行,每处理完一批文件后,会暂停一段时间(例如5分钟),然后再次开始处理新的文件。脚本还包括了错误处理机制,比如在数据库连接失败或数据处理过程中遇到错误时,会记录错误信息并暂停一段时间后重试。