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

官网 :https://myems.io

MyEMS开源社区版下载:https://gitee.com/myems/myems

本期解读:

空间能耗分项数据汇总计算方法:myems-aggregation/space_energy_input_item.py

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

这段代码是一个用于处理能源数据的Python脚本,主要功能是计算和聚合特定空间(如建筑物中的房间或区域)的能源输入数据。它通过与MySQL数据库交互来获取和存储数据,并使用多进程来提高处理效率。下面是对代码的概括性总结和详细解析:

概括性总结

1.主函数 (main): 循环执行,首先从系统数据库中获取所有空间的列表,然后使用多进程方式调用worker函数处理每个空间。每轮循环结束后休眠一段时间。

2.工作函数 (worker): 对于给定的空间,该函数执行多个步骤来聚合该空间的能源输入数据。这包括从系统数据库中获取与该空间相关的各种能源计量设备(如实际计量表、虚拟计量表、离线计量表等),然后从能源数据库中获取这些设备的能源数据,最后聚合这些数据并保存回能源数据库。

详细解析

1.连接数据库: 使用mysql.connector连接到MySQL数据库,分别操作系统数据库和能源数据库。

2.获取空间列表: 从系统数据库中查询所有空间,并将它们存储在一个列表中。

3.多进程处理: 使用Python的multiprocessing.Pool来并行处理每个空间,以提高效率。

4.空间能源数据处理:

  • 获取与空间相关的各种能源计量设备列表。
  • 确定聚合数据的起始和结束时间。
  • 从能源数据库中获取这些设备的能源数据。
  • 确定所有设备的共同时间段,以便进行数据聚合。
  • 按能源项目和小时聚合能源数据。
  • 将聚合后的数据保存回能源数据库。

    5.错误处理和日志记录: 在每个步骤中,如果遇到异常,则记录错误信息,并在必要时关闭数据库连接。

6.休眠和重试机制: 在无法连接数据库或处理数据时,脚本会休眠一段时间后重试。

MyEMS开源能源管理系统核心代码解读021的更多相关文章

  1. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  2. Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备

    本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...

  3. itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景       像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...

  4. 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)

    腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1.  Basic Paxos 算法是为 ...

  5. Android MVP模式 谷歌官方代码解读

    Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...

  6. msysGit管理GitHub代码

    msysGit管理GitHub代码   代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...

  7. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  8. Google免费的SVN服务器管理VS2010代码

    原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...

  9. spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...

  10. weex官方demo weex-hackernews代码解读(上)

    一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...

随机推荐

  1. DevOps 需要处理的工作

    本文纯属个人工作记录: 1.部署Linux服务器 2.安装Docker 3.在Docker中安装Gitlab和runner 4.设置Gitlab pipline,即CI/CD 5.可能需要Jenkin ...

  2. RabbitMQ单机&可能遇到的问题

    1.Deployments 1 kind: Deployment 2 apiVersion: apps/v1 3 metadata: 4 name: rabbitmq-deployment 5 spe ...

  3. manim边做边学--隐函数图像

    在数学可视化中,显函数$ y=f(x) \(相对容易处理,但**隐函数**\) F(x,y)=0 $的绘制则更具挑战性. Manim库中的ImplicitFunction类专门用于解决这个问题,它能够 ...

  4. 「Log」2023.8.25 小记

    序幕 到校同学都没来,先摆. 写博客,写啊,写啊. 改费用流板子. \(\color{royalblue}{P3381\ [模板]最小费用最大流}\) 板子. 痛心疾首,建边的时候费用边反边为负权边. ...

  5. 如何基于three.js(webgl)引擎架构,实现3D密集架库房,3D档案室智能巡检

      前言: 看了一下 距离上篇课程发布,一年多了.这一年多来也迷茫,也怀疑,在AI时代,是不是失去了写文章的意义了.切身感受到那种面对科技浪潮时的迷茫和无力感.当AI能写出流畅.结构清晰的文章,甚至模 ...

  6. C#/.NET/.NET Core技术前沿周刊 | 第 43 期(2025年6.16-6.22)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  7. 3.Java SDK源码分析系列笔记-LinkedList

    目录 1. 是什么 2. 如何使用 3. 原理分析 3.1. uml 3.2. 构造方法 3.2.1. 队列的节点Node 3.3. add方法 3.3.1. 插入到链表尾部 3.3.2. 构造新节点 ...

  8. C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值

    private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)        {           ...

  9. aegis-dev-tools的使用

    前言aegis-dev-tools是一个辅助开发前端的工具包,用于根据后端接口文档生成前端封装api请求. 创建后端项目要求使用swagger,且controler书写规范,输入输出类型,备注都要 合 ...

  10. 关于模考 T2

    今天做到模考的 T2,太有意思了. 题目描述 最近,Bob 学习了整数除法.受到这一神圣知识的启发,他决定进一步了解满足某些整除条件的正整数数组.具体来说,Bob 将一个数组 \(a=a_1,a_2, ...