# zhitan-ems **Repository Path**: wulon/zhitan-ems ## Basic Information - **Project Name**: zhitan-ems - **Description**: 开源能源管理系统+能源管理系统源码+能源管理平台+EMS 适用场景:企业、园区、化工、工矿、公共建筑等。 通过物联网技术,采集企业水、电、气、热等能耗数据,帮助企业建立能源管理体系,找到跑冒滴漏,进一步实现节能减排。 进一步为企业实现碳跟踪、碳盘查、碳交易、碳汇报的全生命过程。 为中国双碳事业做出贡献。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: zhitan_master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 116 - **Created**: 2025-09-01 - **Last Updated**: 2026-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
智碳能源管理系统 Logo

智碳能源管理系统

Zhitan Energy Carbon Management System

基于SpringBoot和若依框架开发的企业级能源管理解决方案

star fork Version License

## 项目简介 智碳能源管理系统(Zhitan EMS)是一款面向政府、园区、企业等用户的综合能源管理解决方案。 系统以工信部印发《工业企业和园区数字化能碳管理中心建设指南》为参考,通过采集水、电、气、热、碳、光、储、充等多种数据,帮助工业企业和园区建立完善的能源管理体系, 实现对能耗和碳排放的精准化计量、精细化管控、智能化决策与可视化呈现,持续提升节能降碳管理能力,有效支撑能源利用效率提升和碳排放降低,为节能减排提供科学依据,促进绿色低碳转型。 本系统致力于支持中国碳达峰、碳中和目标,助力企业实现碳跟踪、碳盘查、碳交易、碳汇报的全生命周期管理。 ## 核心亮点 ![输入图片说明](images/亮点功能.png) ## 核心功能 ### 📊 社区版功能 - ✅ 首页看板 - 实时展示关键能源指标和统计数据 - ✅ 实时数据监测 - 实时查看能源消耗数据和组态图分析 - ✅ 历史数据分析 - 查看历史点位数据进行趋势分析 - ✅ 综合指标分析 - 日/月/年度综合能耗分析报告 - ✅ 重点设备分析 - 关键设备能耗监测与分析 - ✅ 工序能耗分析 - 生产工序能耗分布与效率评估 - ✅ 尖峰平谷分析 - 电价时段统计与优化建议 - ✅ 能耗对比分析 - 各能源品种同环比分析 - ✅ 建筑能耗分析 - 支路与分项建筑能耗详细分析 - ✅ 智能报警系统 - 异常能耗预警与报警管理 - ✅ 数据补录功能 - 手动补充缺失数据记录 - ✅ 节能项目管理 - 节能改造项目跟踪 - ✅ 知识库系统 - 能源管理知识与最佳实践共享 - ✅ 设备档案管理 - 能耗设备信息维护与管理 - ✅ 模型配置管理 - 计算模型与业务模型自定义配置 - ✅ 基础数据管理 - 字典、能源类型等基础信息维护 - ✅ 系统权限管理 - 用户、角色、权限统一管控 ### 💎 增强版功能(商业版,功能需定制开发) - 🚀 单耗分析 - 产品单产能耗深度分析 - 🚀 计划与实绩对比 - 能耗计划执行情况追踪 - 🚀 用能考核体系 - 建立科学的用能考核机制 - 🚀 用能对标分析 - 行业标杆对比与差距分析 - 🚀 空调节能优化 - 建筑空调系统节能策略 - 🚀 能源平衡分析 - 能源供应与消耗平衡图表 - 🚀 能源对标分析 - 与行业标准或历史数据对标 - 🚀 重点设备节能 - 空压机等设备专项节能方案 - 🚀 碳管理体系 - 碳盘查、碳路径规划、排放因子管理 - 🚀 源网荷储协同 - 微电网能量协调优化控制 - 🚀 低碳园区建设 - 园区级低碳发展解决方案 - 🚀 自定义报表 - 灵活配置各类分析报表 - 🚀 成本效益分析 - 能源成本构成与优化分析 - 🚀 光伏运维监控 - 光伏发电系统运行状态监控 - 🚀 充电运营管理 - 新能源汽车充电设施运营 ## 在线演示 演示地址:[https://demo-ems.zhitancloud.com/](https://demo-ems.zhitancloud.com/) > ⚠️ 注意:演示环境仅提供部分功能预览,且为只读权限。 ## 系统截图 ### 登录页面 ![登录页面](images/1-登录页.png) ### 首页展示(深色主题) ![首页-深色](images/2-2-首页-深色.png) ### 首页展示(浅色主题) ![首页-浅色](images/2-1-首页-浅色.png) ### 实时监测(深色主题) ![实时监测-深色](images/3-2-能源实时监测-深色.png) ### 实时监测(浅色主题) ![实时监测-浅色](images/3-1-能源实时监测-浅色.png) ### 区域能耗分析 ![区域能耗](images/5-1-区域能耗分析-浅色.png) ### 尖峰平谷分析 ![尖峰平谷](images/4-1-峰平谷时段统计-浅色.png) ## 系统架构 ### 整体架构说明 完整的能碳管理平台由三个核心组件构成: 1. **能碳平台后台管理端** (本项目,不含数据清洗服务) - 提供后台管理界面及API接口,如需**面向中小型客户定制开发版本**请移步仓库:[zhitan-ems-mini版](https://gitee.com/liulingling1993/zhitan-ems-mini)。 2. **数据采集程序** - MQTT网关负责从现场设备采集数据并存储到时序数据库。请参考我们另一个仓库:[MQTT采集网关](https://gitee.com/liulingling1993/zhitan-gateway) 3. **数据清洗服务** - 定期将时序数据转换并存储到关系型数据库用于分析。学习者可以使用java自带的XXL job等计划任务工具自己按照业务功能,来实现数据清洗服务。 ### 项目结构 ``` zhitan-ems/ ├── bin/ # 批处理脚本目录 │ ├── clean.bat # 清理脚本 │ ├── package.bat # 打包脚本 │ └── run.bat # 运行脚本 ├── zhitan-admin/ # 主应用模块 │ └── src/main/ │ ├── java/com/zhitan/web/ # Web控制器 │ ├── java/com/zhitan/AdminApplication.java # Spring Boot主类 │ ├── java/com/zhitan/AdminServletInitializer.java │ └── resources/ # 配置文件 │ ├── application*.yml # 环境配置文件 │ ├── banner.txt # 应用横幅 │ ├── logback.xml # 日志配置 │ └── mybatis/ # MyBatis映射文件 ├── zhitan-common/ # 公共工具和共享组件 │ └── src/main/java/com/zhitan/common/ │ ├── annotation/ # 自定义注解 │ ├── config/ # 公共配置 │ ├── constant/ # 常量定义 │ ├── core/ # 核心组件(控制器、领域模型等) │ ├── enums/ # 枚举类型 │ ├── exception/ # 异常处理 │ ├── filter/ # 过滤器(XSS、重复请求等) │ ├── utils/ # 工具类 │ └── xss/ # XSS防护组件 ├── zhitan-framework/ # 框架组件 │ └── src/main/java/com/zhitan/framework/ │ ├── aspectj/ # 面向切面编程组件 │ ├── config/ # 配置类 │ ├── datasource/ # 数据源管理 │ ├── interceptor/ # 拦截器 │ ├── manager/ # 管理组件 │ ├── mqtt/ # MQTT消息支持 │ ├── security/ # 安全组件 │ ├── sms/ # 短信功能 │ └── web/ # Web相关组件 ├── zhitan-generator/ # 代码生成模块 ├── zhitan-quartz/ # 定时任务模块 ├── zhitan-system/ # 系统管理模块 └── zhitan-vue/ # 前端应用(Vue.js) ├── html/ # HTML文件 ├── src/ # 源码目录 │ ├── api/ # API客户端 │ ├── assets/ # 静态资源 │ ├── components/ # Vue组件 │ ├── directive/ # Vue指令 │ ├── layout/ # 布局组件 │ ├── plugins/ # 插件 │ ├── router/ # 路由配置 │ ├── store/ # Vuex状态管理 │ ├── utils/ # 前端工具 │ ├── views/ # 视图组件 │ ├── App.vue # 根Vue组件 │ ├── main.js # 入口文件 │ ├── permission.js # 权限控制 │ └── settings.js # 应用设置 ├── vite/plugins/ # Vite构建插件 ├── index.html # 主HTML文件 ├── package.json # Node.js依赖 └── vite.config.js # Vite配置 ``` ## 技术栈 ### 后端技术 - 核心框架:Spring Boot + Ruoyi Framework - 数据库:PostgreSQL (推荐), MySQL (需自行适配) - 时序数据库:InfluxDB 2.7+ - 缓存中间件:Redis - 任务调度:Quartz - 消息通信:MQTT - 安全框架:Spring Security - 接口文档:Swagger ### 前端技术 - 主框架:Vue 3 + Element Plus - 构建工具:Vite - 状态管理:Vuex - 路由管理:Vue Router - 图表库:ECharts - UI主题:支持深色/浅色模式切换 ## 快速部署 本项目已支持容器化部署,可供您快速部署,学习并使用。请按照以下顺序进行执行部署: 官方镜像库: `API镜像库: `https://hub.docker.com/r/zhitancorp/zhitan-api `Web镜像库:`https://hub.docker.com/r/zhitancorp/zhitan-web #### 1. 数据库: ##### 1.1 部署数据库 ```bash # 拉取镜像 docker pull docker.1ms.run/library/postgres:14-alpine docker tag docker.1ms.run/library/postgres:14-alpine postgres:14-alpine # 启动容器 docker run -d \ --name postgres \ --restart always \ -p 5432:5432 \ -v /var/lib/postgresql/data:/var/lib/postgresql/data \ -e POSTGRES_DB=zhitan_ems \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=postgres \ -e TZ=Asia/Shanghai \ postgres:14-alpine ``` ##### 1.2 导入数据库脚本: ``` sql -- 执行 zhitan-api/sql/public-v3.sql 文件初始化数据库 ``` #### 2. Redis: ```bash # 拉取镜像 docker pull docker.1ms.run/library/redis:6.2.21 docker tag docker.1ms.run/library/redis:6.2.21 redis:6.2.21 # 启动容器 docker run -d \ --name redis \ --restart always \ -p 6379:6379 \ redis:6.2.21 \ redis-server --appendonly yes ``` #### 3. MQTT: 您可以使用免费公共MQTT服务来进行测试。 详情: https://www.emqx.com/zh/mqtt/public-mqtt5-broker ```text Broker: broker.emqx.io TCP 端口: 1883 WebSocket 端口: 8083 SSL/TLS 端口: 8883 WebSocket Secure 端口: 8084 QUIC 端口: 14567 ``` #### 4. InfluxDB(时序数据库): ##### 4.1 部署 ```bash # 拉取镜像 docker pull docker.1ms.run/library/influxdb:latest docker tag docker.1ms.run/library/influxdb:latest influxdb:latest # 启动容器 docker run -d \ --name influxdb \ --restart always \ -p 8086:8086 \ -v /path/to/your/data:/var/lib/influxdb \ influxdb:latest ``` ##### 4.2 获得访问token 1. 访问influxDB的 IP:8086。请填写以下信息,请记住`Org Name`和`Bucket Name`,点击`Continue` ![1a0eeda6-0328-483f-ac6d-2015263e9f04](./images/1a0eeda6-0328-483f-ac6d-2015263e9f04.png) 2. 点击`Continue`以后:请记住该Token ![2a8a88e2-57a3-4129-a473-55ed27c858a3](./images/2a8a88e2-57a3-4129-a473-55ed27c858a3.png) #### 5. 后端API: ##### 5.1 准备环境变量配置文件 本项目中所需要的配置,均可通过环境变量进行注入,具体参考根目录中的 `.env.file` 文件 请将该配置文件中的各个参数,配置为您实际的系统信息。如以下: ```context # ============================================ # 环境变量配置文件 # ============================================ # ===== 数据库配置 ===== DB_URL=jdbc:postgresql://192.168.0.40:5432/zhitan_ems DB_USERNAME=postgres DB_PASSWORD=postgres # 从库配置(可选) DB_SLAVE_ENABLED=false DB_SLAVE_URL= DB_SLAVE_USERNAME= DB_SLAVE_PASSWORD= # ===== Redis 配置 ===== REDIS_HOST=192.168.0.40 REDIS_PORT=6379 REDIS_DATABASE=0 REDIS_PASSWORD= # ===== Druid 监控配置 ===== DRUID_USERNAME=admin DRUID_PASSWORD=123456 # ===== InfluxDB 配置 ===== RTDB_HOST=http://192.168.0.40:8086 RTDB_TOKEN=2yizQ6PXpzQvmfdoUr0vcV5rxvT3L_ss99p6MR816PV8mCJnUrtveddSISK83aZGPH8LO5S3Jx-c1UcXatUQ5A== RTDB_ORG=org RTDB_BUCKET=bucket RTDB_MEASUREMENT=data # ===== MQTT 配置 ===== MQTT_HOST=tcp://broker.emqx.io:1883 MQTT_CLIENT_ID=MQTT_WK MQTT_TOPICS=topic1 MQTT_USERNAME= MQTT_PASSWORD= MQTT_TIMEOUT=30 MQTT_KEEPALIVE=60 MQTT_QOS=1 MQTT_CLEAN_SESSION=false MQTT_AUTO_RECONNECT=true # ===== SSO 配置 ===== SINGLE_LOGIN_URL=localhost:8090/singleLogin/getInfo # ===== 阿里云短信配置(可选) ===== ALIYUN_ACCESS_KEY_ID= ALIYUN_ACCESS_KEY_SECRET= ALIYUN_SMS_ENDPOINT=dysmsapi.aliyuncs.com ALIYUN_SMS_SIGN_NAME= ALIYUN_SMS_TEMPLATE_CODE= ALIYUN_USER_ROLE_ID= ALIYUN_SMS_TIME_MINUTES=40 ALIYUN_SMS_MAX_COUNT=1 # ===== SSO Ticket 配置(可选) ===== SSO_TICKET= SSO_USERNAME= # ===== Token 配置 ===== TOKEN_HEADER=Authorization TOKEN_SECRET=abcdefghijklmnopqrstuvwxyzzhitancloud TOKEN_EXPIRE_TIME=300 ``` ##### 5.2 部署镜像 将.env.file文件复制当前目录中,并执行以下语句。 ``` # 拉取镜像 docker pull docker.1ms.run/zhitancorp/zhitan-api:latest docker tag docker.1ms.run/zhitancorp/zhitan-api:latest zhitancorp/zhitan-api:latest # 启动容器 docker run -d -p 8080:8080 \ --name zhitan-api \ --restart=always \ --env-file .env.file \ zhitancorp/zhitan-api:latest ``` #### 6. Web管理平台: 请注意:更改BACKEND_URL为您的API所在的IP地址与端口 ```bash # 拉取镜像 docker pull docker.1ms.run/zhitancorp/zhitan-web:latest docker tag docker.1ms.run/zhitancorp/zhitan-web:latest zhitancorp/zhitan-web:latest # 启动容器 docker run -d \ --name zhitan-web \ -p 80:80 \ -e API_BASE_URL=/prod-api \ -e BACKEND_URL=http://192.168.0.40:8080 \ -e APP_TITLE=碳未来能碳管理系统 \ -e APP_ENV=production \ -e APP_SYSTEM=智碳未来能碳管理系统前端 \ --restart=always \ zhitancorp/zhitan-web:latest ``` ##### 7. 访问Web管理平台 访问您的Web所在的IP与端口,使用测试账号与密码: ``` 账号:admin 密码:123456 ``` ![bf129f1b-6246-49a4-a4b0-7db51ab8e25e](./images/bf129f1b-6246-49a4-a4b0-7db51ab8e25e.png) ## 文档资源 详细的开发文档和用户手册请访问我们的 Wiki: - GitHub Wiki:[https://github.com/zhitancloud/zhitan-ems/wiki](https://github.com/zhitancloud/zhitan-ems/wiki) - Gitee Wiki:[https://gitee.com/liulingling1993/zhitan-ems/wikis/](https://gitee.com/liulingling1993/zhitan-ems/wikis/) API文档可通过本地部署后访问:http://localhost:8080/swagger-ui/index.html ## 开源协议 zhitan-ems 是基于 [AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html) 和 [ZTPL](./LICENSE) 双协议的开源软件。您在使用、修改、复制、分发本项目时,仔细阅读并理解以下该协议条款。 如果您属于以下情况,请遵循[AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html)协议 - 您是个人开发者、研究机构或教育机构,希望技术学习、研究或非商业性地使用本项目。 - 您希望基于本项目进行修改或扩展,并愿意将您的修改成果同样开源给社区。 如果您是学生或者教师,用于技术学习或教学目的,可联系我们,我们将免费提供培训与指导(远程) 如果您属于以下情况,需要获得[ZTPL](./LICENSE)协议许可 - 您基于本项目的修改版本用于商业目的,但不希望公开您的项目代码。 - 您在一个内部使用的系统中集成了本项目,只对组织内部使用,不打算将其对外提供服务。 - 您计划将本项目打包成SaaS产品或云服务进行销售。 - 您需要在专有/闭源产品中集成、修改或链接本项目的代码。 - 您需要自行部署系统并运营,对外部用户提供收费服务。 如何获得[ZTPL](./LICENSE)协议许可? 您需要通过官方渠道,包括不限于:微信、QQ群等与我们取得联系,这样确保您秉持开源精神同时,获得商业许可的自由,并能得到我们官方的技术支持 ## 版权须知 本软件项目(包括但不限于源代码、文档、图片、配置等所有构成项目的材料)的原始版权和知识产权归 [青岛智碳未来科技有限公司] 所有。我们保留对本项目名称、品牌、Logo、专利以及商业许可的所有权利。未经明确授权,任何个人或组织不得使用与本项目相关的名称、标识进行商业性宣传或推广。 ## 社区交流 我们非常欢迎您的参与和反馈! ### QQ群交流 如果您只是技术学习与咨询等,请加入我们的QQ群:1037733518 请备注:ems+姓名

### 微信交流 如果您要想咨询我们的商业授权,以及培训等事宜,请优先加微信,请备注:ems+姓名

## 参与贡献 我们热烈欢迎任何形式的贡献! ### 贡献流程 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 发起 Pull Request ### 开发规范 - 遵循项目现有的代码风格 - 添加适当的注释和文档 - 确保所有测试通过 - 提交前进行充分测试 ### 报告问题 如果您发现任何问题,请在 Issues 中提交,并附上详细的描述和重现步骤。 ---

© 2025 智碳未来 - 我为地球降1℃