MyEMS开源能源管理系统核心代码解读021
MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
官网 :https://myems.io
MyEMS开源社区版下载:https://gitee.com/myems/myems
本期解读:
空间能耗分项数据汇总计算方法:myems-aggregation/space_energy_input_item.py
这段代码是一个用于处理能源数据的Python脚本,主要功能是计算和聚合特定空间(如建筑物中的房间或区域)的能源输入数据。它通过与MySQL数据库交互来获取和存储数据,并使用多进程来提高处理效率。下面是对代码的概括性总结和详细解析:
概括性总结
1.主函数 (main): 循环执行,首先从系统数据库中获取所有空间的列表,然后使用多进程方式调用worker函数处理每个空间。每轮循环结束后休眠一段时间。
2.工作函数 (worker): 对于给定的空间,该函数执行多个步骤来聚合该空间的能源输入数据。这包括从系统数据库中获取与该空间相关的各种能源计量设备(如实际计量表、虚拟计量表、离线计量表等),然后从能源数据库中获取这些设备的能源数据,最后聚合这些数据并保存回能源数据库。
详细解析
1.连接数据库: 使用mysql.connector连接到MySQL数据库,分别操作系统数据库和能源数据库。
2.获取空间列表: 从系统数据库中查询所有空间,并将它们存储在一个列表中。
3.多进程处理: 使用Python的multiprocessing.Pool来并行处理每个空间,以提高效率。
4.空间能源数据处理:
- 获取与空间相关的各种能源计量设备列表。
- 确定聚合数据的起始和结束时间。
- 从能源数据库中获取这些设备的能源数据。
- 确定所有设备的共同时间段,以便进行数据聚合。
- 按能源项目和小时聚合能源数据。
- 将聚合后的数据保存回能源数据库。
5.错误处理和日志记录: 在每个步骤中,如果遇到异常,则记录错误信息,并在必要时关闭数据库连接。
6.休眠和重试机制: 在无法连接数据库或处理数据时,脚本会休眠一段时间后重试。
MyEMS开源能源管理系统核心代码解读021的更多相关文章
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备
本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...
- itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景 像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...
- 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)
腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1. Basic Paxos 算法是为 ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- msysGit管理GitHub代码
msysGit管理GitHub代码 代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- Google免费的SVN服务器管理VS2010代码
原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...
- spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...
- weex官方demo weex-hackernews代码解读(上)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
随机推荐
- DevOps 需要处理的工作
本文纯属个人工作记录: 1.部署Linux服务器 2.安装Docker 3.在Docker中安装Gitlab和runner 4.设置Gitlab pipline,即CI/CD 5.可能需要Jenkin ...
- RabbitMQ单机&可能遇到的问题
1.Deployments 1 kind: Deployment 2 apiVersion: apps/v1 3 metadata: 4 name: rabbitmq-deployment 5 spe ...
- manim边做边学--隐函数图像
在数学可视化中,显函数$ y=f(x) \(相对容易处理,但**隐函数**\) F(x,y)=0 $的绘制则更具挑战性. Manim库中的ImplicitFunction类专门用于解决这个问题,它能够 ...
- 「Log」2023.8.25 小记
序幕 到校同学都没来,先摆. 写博客,写啊,写啊. 改费用流板子. \(\color{royalblue}{P3381\ [模板]最小费用最大流}\) 板子. 痛心疾首,建边的时候费用边反边为负权边. ...
- 如何基于three.js(webgl)引擎架构,实现3D密集架库房,3D档案室智能巡检
前言: 看了一下 距离上篇课程发布,一年多了.这一年多来也迷茫,也怀疑,在AI时代,是不是失去了写文章的意义了.切身感受到那种面对科技浪潮时的迷茫和无力感.当AI能写出流畅.结构清晰的文章,甚至模 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 43 期(2025年6.16-6.22)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 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. 构造新节点 ...
- C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值
private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { ...
- aegis-dev-tools的使用
前言aegis-dev-tools是一个辅助开发前端的工具包,用于根据后端接口文档生成前端封装api请求. 创建后端项目要求使用swagger,且controler书写规范,输入输出类型,备注都要 合 ...
- 关于模考 T2
今天做到模考的 T2,太有意思了. 题目描述 最近,Bob 学习了整数除法.受到这一神圣知识的启发,他决定进一步了解满足某些整除条件的正整数数组.具体来说,Bob 将一个数组 \(a=a_1,a_2, ...