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

简介: MyEMS开源能源管理系统助力企业低碳发展,支持建筑、工厂、园区等场景的能源数据采集与分析,提供光伏、储能、充电桩等可选功能,由专业团队维护,保障长期稳定运行。

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

本期解读:

空间能耗分项成本汇总计算方法:myems-aggregation/space_billing_input_item.py

源代码链接:https://gitee.com/myems/myems/blob/master/myems-aggregation/space_billing_input_item.py?sessionid=963465273

这段代码是一个用于计算和保存能源消耗计费信息的Python脚本。它主要用于连接到MyEMS系统的数据库,获取空间(如建筑物或房间)的能源使用数据,根据能源使用量和相应的电价计算费用,并将计费数据保存回数据库。以下是对代码的详细解析:

概括性总结

1.连接数据库: 脚本首先连接到MyEMS系统的三个数据库:系统数据库、能源数据库和计费数据库。
2.获取空间列表: 从系统数据库中获取所有空间的列表。
3.遍历每个空间: 对于列表中的每个空间,执行以下步骤:

  • 获取该空间最新的计费开始时间。
  • 从能源数据库中获取自上次计费以来的所有能源输入数据。
  • 获取电价信息。
  • 根据能源使用量和电价计算计费。
  • 将计费数据保存到计费数据库。
    4.循环执行: 脚本在一个无限循环中运行,每300秒执行一次上述过程。

详细解析

1.连接数据库: 使用mysql.connector连接到MyEMS的三个数据库。如果连接失败,则记录错误并等待60秒后重试。
2.获取空间列表:

  • 从系统数据库中查询所有空间的ID、名称和成本中心ID。
  • 如果没有空间数据,则记录信息并等待60秒后重试。
    3.遍历每个空间:

  • 对于每个空间,获取其在计费数据库中的最新计费开始时间。

  • 从能源数据库中获取自上次计费以来的所有能源输入数据。
  • 获取每个能源项的电价信息。
  • 根据能源使用量和电价计算计费。
  • 将计费数据保存到计费数据库。
    4.循环执行: 脚本在一个无限循环中运行,每300秒执行一次上述过程。

代码特点

  • 异常处理:在数据库操作和数据处理过程中,脚本包含了异常处理逻辑,以确保在出现错误时能够记录错误信息并安全地关闭数据库连接。
  • 日志记录:脚本使用logger对象记录错误信息,有助于问题的调试和追踪。
  • 配置管理:脚本使用config模块来管理数据库连接和其他配置信息,这有助于代码的模块化和维护。
  • 时间处理:脚本使用datetime模块处理时间数据,确保时间计算的准确性。

    优化建议

  • 代码重构:可以将代码分解为更小的函数,以提高代码的可读性和可维护性。
  • 错误处理:可以改进错误处理逻辑,例如,在连续多次失败后停止重试,或者发送警报通知管理员。
  • 性能优化:如果数据量大,可以考虑优化数据库查询和数据处理的性能。
相关文章
|
5月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
147 0
|
算法 Go
golang力扣leetcode 399.除法求值
golang力扣leetcode 399.除法求值
123 0
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
2070 0
|
人工智能 API 开发工具
YOLOV11 使用流程
本内容整理了YOLO V11的常用代码语句,涵盖YOLO模型下载、数据集划分、模型训练与推理优化等关键步骤,适用于目标检测任务。
|
10月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
876 19
|
11月前
|
人工智能 Java 测试技术
《鸿蒙Next集成第三方AI图形渲染库:开启图形技术新征程》
在鸿蒙Next中集成第三方AI图形渲染库可提升应用的图形处理能力和视觉效果。开发者需熟悉开发环境,明确需求并选择合适的渲染库(如OpenGL、Vulkan等),获取相关文件与文档。集成步骤包括导入库文件、配置权限与资源、初始化及调用库功能。随后进行系统适配、性能优化和兼容性处理,确保不同设备上的正常运行。最后通过功能、性能和兼容性测试,确保应用稳定性和用户体验。这一过程要求开发者全面掌握鸿蒙开发技术和第三方库的使用方法,推动图形技术领域的创新。
221 7
Vue3空状态(Empty)
这是一个可高度定制化的空状态组件,支持自定义描述内容、描述样式、图片显示方式及样式、底部内容等属性。提供两种预设图片风格(filled/outlined)或自定义图片链接。在线预览与详细代码示例可见[此处](https://themusecatcher.github.io/vue-amazing-ui/guide/components/empty.html)。组件使用了`useSlotsExist`工具函数来判断插槽是否存在。通过简单配置即可实现多样化的展示效果。
223 3
Vue3空状态(Empty)
|
网络协议 Linux 开发工具
|
存储 数据挖掘 数据库
【办公自动化】使用Python一键往Word文档的表格中填写数据
【办公自动化】使用Python一键往Word文档的表格中填写数据
905 1
|
Java Windows
码神开源,War包反编译获得JAVA源码,竟然这样简单
码神开源,War包反编译获得JAVA源码,竟然这样简单
1184 0
码神开源,War包反编译获得JAVA源码,竟然这样简单

热门文章

最新文章