eos

This repository features an Energy Optimization System (EOS) that optimizes energy distribution, usage for batteries, heat pumps& household devices. It includes predictive models for electricity prices (planned), load forecasting& dynamic optimization to maximize energy efficiency & minimize costs. Founder Dr. Andreas Schmitz (YouTube @akkudoktor)

https://github.com/akkudoktor-eos/eos

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.8%) to scientific vocabulary

Keywords from Contributors

transformation cryptocurrencies agents multi-modality interactive optim embedded trade projection autograd
Last synced: 6 months ago · JSON representation

Repository

This repository features an Energy Optimization System (EOS) that optimizes energy distribution, usage for batteries, heat pumps& household devices. It includes predictive models for electricity prices (planned), load forecasting& dynamic optimization to maximize energy efficiency & minimize costs. Founder Dr. Andreas Schmitz (YouTube @akkudoktor)

Basic Info
Statistics
  • Stars: 1,414
  • Watchers: 72
  • Forks: 110
  • Open Issues: 38
  • Releases: 0
Created about 2 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Notice

README.md

Energy System Simulation and Optimization

This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period.

Documentation can be found at Akkudoktor-EOS.

Getting Involved

See CONTRIBUTING.md.

System requirements

  • Python >= 3.11, < 3.13
  • Architecture: amd64, aarch64 (armv8)
  • OS: Linux, Windows, macOS

Note: For Python 3.13 some dependencies (e.g. Pendulum) are not yet available on https://pypi.org and have to be manually compiled (a recent Rust installation is required).

Other architectures (e.g. armv6, armv7) are unsupported for now, because a multitude of dependencies are not available on https://piwheels.org and have to be built manually (a recent Rust installation and GCC are required, Python 3.11 is recommended).

Installation

The project requires Python 3.11 or newer. Docker images (amd64/aarch64) can be found at akkudoktor/eos.

Following sections describe how to locally start the EOS server on http://localhost:8503.

Run from source

Install dependencies in virtual environment:

Linux:

bash python -m venv .venv .venv/bin/pip install -r requirements.txt .venv/bin/pip install -e .

Windows:

cmd python -m venv .venv .venv\Scripts\Activate .venv\Scripts\pip install -r requirements.txt .venv\Scripts\pip install -e .

Finally, start the EOS server to access it at http://localhost:8503 (API docs at http://localhost:8503/docs):

Linux:

bash .venv/bin/python src/akkudoktoreos/server/eos.py

Windows:

cmd .venv\Scripts\python src/akkudoktoreos/server/eos.py

Docker

Start EOS with following command to access it at http://localhost:8503 (API docs at http://localhost:8503/docs):

bash docker compose up

If you are running the EOS container on a system hosting multiple services, such as a Synology NAS, and want to allow external network access to EOS, please ensure that the default exported ports (8503, 8504) are available on the host. On Synology systems, these ports might already be in use (refer to this guide). If the ports are occupied, you will need to reconfigure the exported ports accordingly.

Configuration

This project uses the EOS.config.json file to manage configuration settings.

Default Configuration

A default configuration file default.config.json is provided. This file contains all the necessary configuration keys with their default values.

Custom Configuration

Users can specify a custom configuration directory by setting the environment variable EOS_DIR.

  • If the directory specified by EOS_DIR contains an existing config.json file, the application will use this configuration file.
  • If the EOS.config.json file does not exist in the specified directory, the default.config.json file will be copied to the directory as EOS.config.json.

Configuration Updates

If the configuration keys in the EOS.config.json file are missing or different from those in default.config.json, they will be automatically updated to match the default settings, ensuring that all required keys are present.

Classes and Functionalities

This project uses various classes to simulate and optimize the components of an energy system. Each class represents a specific aspect of the system, as described below:

  • Battery: Simulates a battery storage system, including capacity, state of charge, and now charge and discharge losses.

  • PVForecast: Provides forecast data for photovoltaic generation, based on weather data and historical generation data.

  • Load: Models the load requirements of a household or business, enabling the prediction of future energy demand.

  • Heatpump: Simulates a heat pump, including its energy consumption and efficiency under various operating conditions.

  • Strompreis: Provides information on electricity prices, enabling optimization of energy consumption and generation based on tariff information.

  • EMS: The Energy Management System (EMS) coordinates the interaction between the various components, performs optimization, and simulates the operation of the entire energy system.

These classes work together to enable a detailed simulation and optimization of the energy system. For each class, specific parameters and settings can be adjusted to test different scenarios and strategies.

Customization and Extension

Each class is designed to be easily customized and extended to integrate additional functions or improvements. For example, new methods can be added for more accurate modeling of PV system or battery behavior. Developers are invited to modify and extend the system according to their needs.

Server API

See the Swagger API documentation for detailed information: EOS OpenAPI Spec

Further resources

Owner

  • Name: Akkudoktor-EOS
  • Login: Akkudoktor-EOS
  • Kind: organization

GitHub Events

Total
  • Create event: 195
  • Issues event: 226
  • Watch event: 1,169
  • Delete event: 205
  • Member event: 8
  • Issue comment event: 637
  • Push event: 621
  • Gollum event: 31
  • Pull request event: 603
  • Pull request review comment event: 328
  • Pull request review event: 374
  • Fork event: 85
Last Year
  • Create event: 195
  • Issues event: 226
  • Watch event: 1,169
  • Delete event: 205
  • Member event: 8
  • Issue comment event: 637
  • Push event: 621
  • Gollum event: 31
  • Pull request event: 603
  • Pull request review comment event: 328
  • Pull request review event: 374
  • Fork event: 85

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 600
  • Total Committers: 30
  • Avg Commits per committer: 20.0
  • Development Distribution Score (DDS): 0.723
Past Year
  • Commits: 539
  • Committers: 29
  • Avg Commits per committer: 18.586
  • Development Distribution Score (DDS): 0.727
Top Committers
Name Email Commits
Andreas d****e@g****e 166
dependabot[bot] 4****] 147
Normann g****b@k****m 92
Dominique Lasserre l****d@g****m 65
Bobby Noelte b****e@g****m 49
Dominik Siebel d****l@t****m 16
Daniel Molkentin d****l@m****e 10
Michael Osthege m****e@o****m 10
Dennis 7****X 4
redmoon2711 1****1 4
rompic r****n@p****u 4
celle1234 6****4 3
Christian Heinrich Hohlfeld c****d@g****m 3
Fortrieb d****v@f****g 3
Chris g****t@n****e 2
Georg Z. g****z@g****e 2
Eric 1****h 2
Chris 4****h 2
Ikko Eltociear Ashimine e****r@g****m 2
Theo Weiss t****o@m****g 2
Yunus AYDIN a****s@g****m 2
thiloms 1****s 2
BerndCzech t****h@g****m 1
Jakob Moecke j****o@g****m 1
Jürgen Eckel e****j 1
Marco 9****1 1
SchaafAlexander 8****r 1
Your Name y****u@e****m 1
Sebastian Struß c****e@x****e 1
wenzul w****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 165
  • Total pull requests: 792
  • Average time to close issues: 16 days
  • Average time to close pull requests: 4 days
  • Total issue authors: 52
  • Total pull request authors: 31
  • Average comments per issue: 2.07
  • Average comments per pull request: 0.99
  • Merged pull requests: 589
  • Bot issues: 0
  • Bot pull requests: 274
Past Year
  • Issues: 165
  • Pull requests: 792
  • Average time to close issues: 16 days
  • Average time to close pull requests: 4 days
  • Issue authors: 52
  • Pull request authors: 31
  • Average comments per issue: 2.07
  • Average comments per pull request: 0.99
  • Merged pull requests: 589
  • Bot issues: 0
  • Bot pull requests: 274
Top Authors
Issue Authors
  • drbacke (56)
  • NormannK (14)
  • b0661 (12)
  • RobertHerter (10)
  • njoerd114 (6)
  • XHalamaX (4)
  • andig (4)
  • danimo (3)
  • Isengo1989 (3)
  • celle1234 (3)
  • aydinnyunus (2)
  • briearn (2)
  • redmoon2711 (2)
  • rompic (2)
  • meintechblog (2)
Pull Request Authors
  • dependabot[bot] (274)
  • NormannK (178)
  • b0661 (98)
  • Lasall (97)
  • drbacke (42)
  • michaelosthege (12)
  • redmoon2711 (9)
  • rompic (9)
  • noootch (9)
  • fortrieb (7)
  • niklasbeinghaus (6)
  • ChristianHohlfeld (5)
  • danimo (4)
  • BerndCzech (4)
  • e-hirsch (4)
Top Labels
Issue Labels
bug (71) enhancement (26) simulation (6) stale (6) good first issue (4) Stale (4) optimization (3) prediction (2) question (2) refactoring / maintenance (2) help wanted (2) hacktoberfest (1) wontfix (1) windows (1) docker (1) documentation (1)
Pull Request Labels
dependencies (274) python (158) refactoring / maintenance (7) in progess (2) optimization (2) stale (1)

Dependencies

requirements.txt pypi
  • Flask ==3.0.3
  • Jinja2 ==3.1.4
  • Mako ==1.3.5
  • Markdown ==3.7
  • MarkupSafe ==2.1.5
  • Pygments ==2.18.0
  • Werkzeug ==3.0.4
  • absl-py ==2.1.0
  • astunparse ==1.6.3
  • blinker ==1.8.2
  • certifi ==2024.8.30
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • contourpy ==1.3.0
  • cycler ==0.12.1
  • deap ==1.4.1
  • flatbuffers ==24.3.25
  • fonttools ==4.53.1
  • gast ==0.6.0
  • google-pasta ==0.2.0
  • grpcio ==1.66.1
  • h5py ==3.11.0
  • idna ==3.8
  • itsdangerous ==2.2.0
  • joblib ==1.4.2
  • keras ==3.5.0
  • kiwisolver ==1.4.7
  • libclang ==18.1.1
  • mariadb ==1.1.10
  • markdown-it-py ==3.0.0
  • matplotlib ==3.9.2
  • mdurl ==0.1.2
  • ml-dtypes ==0.4.0
  • namex ==0.0.8
  • numpy ==1.26.4
  • opt-einsum ==3.3.0
  • optree ==0.12.1
  • packaging ==24.1
  • pandas ==2.2.2
  • pdoc3 ==0.11.1
  • pillow ==10.4.0
  • protobuf ==4.25.4
  • pyparsing ==3.1.4
  • python-dateutil ==2.9.0.post0
  • pytz ==2024.1
  • requests ==2.32.3
  • rich ==13.8.1
  • scikit-learn ==1.5.1
  • scipy ==1.14.1
  • setuptools ==74.1.2
  • six ==1.16.0
  • tensorboard ==2.17.1
  • tensorboard-data-server ==0.7.2
  • tensorflow ==2.17.0
  • termcolor ==2.4.0
  • threadpoolctl ==3.5.0
  • typing_extensions ==4.12.2
  • tzdata ==2024.1
  • urllib3 ==2.2.2
  • wheel ==0.44.0
  • wrapt ==1.16.0
.github/workflows/docker-build.yml actions
  • actions/attest-build-provenance v1 composite
  • actions/download-artifact v4 composite
  • actions/github-script v6 composite
  • actions/upload-artifact v4 composite
  • docker/build-push-action v6 composite
  • docker/login-action v3 composite
  • docker/metadata-action v5 composite
  • docker/setup-buildx-action v3 composite
  • docker/setup-qemu-action v3 composite
.github/workflows/pre-commit.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pre-commit/action v3.0.1 composite
.github/workflows/pytest.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v5 composite
Dockerfile docker
  • python ${PYTHON_VERSION}-slim build
pyproject.toml pypi
requirements-dev.txt pypi
  • myst-parser ==4.0.0 development
  • pre-commit * development
  • pytest ==8.3.3 development
  • pytest-cov ==5.0.0 development
  • pytest-xprocess ==1.0.2 development
  • sphinx ==8.0.2 development
  • sphinx_rtd_theme ==3.0.1 development