MyEMS开源能源管理系统核心代码解读020
MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
官网 :https://myems.io
MyEMS开源社区版下载:https://gitee.com/myems/myems
本期解读:
空间能耗分类汇总计算方法:myems-aggregation/space_energy_input_category.py
这段代码是一个用于能源数据处理的Python脚本,主要功能是计算和聚合一个建筑空间内不同能源输入类别的小时能耗数据。它通过连接到MySQL数据库来获取空间、仪表、虚拟仪表、离线仪表、组合设备、设备、商铺、商店、租户和子空间的相关信息,并计算这些实体在特定时间段内的能耗。以下是对代码的详细解析:
总体流程
1.主循环: 脚本持续运行,定期(每5分钟)执行能耗数据的聚合计算。
2.获取空间列表: 从系统数据库中获取所有空间的列表。
3.多进程处理: 为每个空间创建一个进程,并行处理能耗数据的聚合。
4.数据聚合: 对于每个空间,聚合其下所有相关实体的能耗数据。
详细步骤
1.连接数据库: 连接到系统数据库和能源数据库。
2.获取空间列表: 查询系统数据库,获取所有空间的ID和名称。
3.随机化空间列表: 为了避免每次处理相同顺序的空间,将空间列表随机化。
4.多进程聚合: 使用Python的multiprocessing库,为每个空间创建一个进程进行数据聚合。
5.数据聚合流程(在每个空间上执行):
- 获取与空间关联的所有仪表、虚拟仪表、离线仪表、组合设备、设备、商铺、商店、租户和子空间。
- 确定聚合的起始和结束时间。
- 从能源数据库中获取每个实体在指定时间段内的能耗数据。
- 确定所有实体能耗数据的公共时间范围。
- 在公共时间范围内,按能源类别和小时聚合能耗数据。
- 将聚合后的数据保存回能源数据库。
关键点
- 错误处理: 在每个关键步骤中,都有异常处理来确保数据库连接的稳定性和错误的记录。
- 日志记录: 使用logger对象记录错误和重要的信息。
- 配置管理: 通过config模块管理数据库连接和其他配置信息。
- 性能优化: 通过多进程处理和数据聚合优化性能。
结论
这个脚本是一个复杂的数据处理工具,用于管理和聚合建筑空间内的能源消耗数据。它展示了数据库操作、多进程编程和数据处理的高级应用。
MyEMS开源能源管理系统核心代码解读020的更多相关文章
- 优秀开源代码解读之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 ...
随机推荐
- Web前端入门第 63 问:JavaScript 图解 for 循环执行顺序
神奇的 for 循环代码执行顺序并不是按照代码书写顺序执行,这就导致在看很多程序算法的时候,会有那么一点打脑壳. for 语法 for 循环的语法很简单,重点是小括号里面的三个部分,这三部分的执行顺序 ...
- ubuntu2004 ROS1安装
ubuntu初始环境配置ROS1 1.换源并更新数据库 ubuntu2004换源 # 备份原来的源并且另存 sudo cp -v /etc/apt/sources.list /etc/apt/sour ...
- HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
鸿蒙核心技术##运动开发##Core Speech Kit(基础语音服务)# 前言 在运动类应用中,语音播报功能不仅可以提升用户体验,还能让运动过程更加生动有趣.想象一下,当你准备开始运动时,一个温暖 ...
- 【Zookeeper】ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解)
ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解) 一.环境准备(Docker版) 1. 服务器准备(3台节点) # 所有节点执行 sudo apt-get update ...
- Golang协程和线程区别
一.进程.线程.协程介绍 进程:系统中所有的应用程序都是以进程(process)的方式运行,是系统进行资源分配和调度的基本单位,每个进程都有自己的独立的地址空间,使得进程之间的地址空间相互隔离. 线程 ...
- mysql练习题二练
题目 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 查询同时存在" 01 "课程和" 02 "课程 ...
- 查看Linux配置信息
cat gitlab.rb |grep -v "^[#,;]" |grep -v "^$"
- websocket h5控制 pc 大屏 进行协同操作
接到产品需求单 ,哎说多都是累 这几天接口写个没停 今天捣鼓一下这个需求 需求简要说明:客户找我们做的pc端可视化大屏 需要扫码 到 h5端移动端控制pc端大屏 移动端当然也是一个网页 一对一操控 分 ...
- 解决Xamarin.Android 软键盘弹出挡住Edittext的问题
Window.SetSoftInputMode(SoftInput.AdjustPan);
- Electron初始化项目并打包
初始化项目初始化项目用模板就行 # 克隆这仓库 $ git clone https://github.com/electron/electron-quick-start # 进入仓库 $ cd ele ...