Bobby NoelteandGitHub 894790f577 feat: add pvlib pv forecast provider (#1214)
Add a PV forecast provider that calculates the forecast using a PVLib system model
and weather forecast from the EOS weather forecast provider.

Additional module and inverter models can be easily added as the database
is build from PVLib and SAM databases and a bundled csv file.

The module model and inververt model names are provided by new endpoints
to be used in configuration.

The provider is based on the fantastic work of EMHASS. See
https://github.com/davidusb-geek/emhass/blob/master/src/emhass/forecast.py

A short description of the provider is added to the documentation.

Besides the new features there are the fixes and improvements:

* feat: improve EOSdash config page

* fix: kex_to_series for start_datetime

  Make key_to_series always start the series at start_datetime.

* fix: default provider for GENETIC and GENETIC0 optimization

  To make the default less dependent on internet servers (with API changes and
  availability issues) the default for PVForecast is set to PVForecastPVLib
  and for ElecPrice to ElecPriceFixed. The default weather provider is changed
  to OpenMeteo.

* fix: EOSdash display resampled prediction values

  Make EOSdash display resampled prediction values where  resampling fits to
  the prediction value type. Use bar width that fits to 15 minutes value samples.

* chore: add a UI hints system to EOSdash

  The UI hints system eases the definition of forms for configuration items.
  There are also forms for items in maps and lists. These forms allow to add and delete
  items to/ from  maps and lists. The forms ensure that all required fields of newly
  added items are filled.

* chore: Create an enum for valid optimization algorithms

* chore. Make config also provide the available energy management modes.

  Used for configuration hints.

* chore: Randomize default device id in configuration

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
2026-08-07 13:13:17 +02:00
2026-07-20 01:11:33 +02:00
2025-01-24 20:08:48 +01:00
2026-08-01 12:45:19 +02:00
2025-04-07 22:23:35 +02:00
2024-05-03 10:43:31 +02:00
2024-11-15 22:27:25 +01:00
2026-06-18 08:29:26 +02:00
2026-08-01 12:45:19 +02:00

AkkudoktorEOS AkkudoktorEOS

Build optimized energy management plans for your home automation

AkkudoktorEOS is a comprehensive solution for simulating and optimizing energy systems based on renewable sources. Optimize your photovoltaic systems, battery storage, load management, and electric vehicles while considering real-time electricity pricing.

Why use AkkudoktorEOS?

AkkudoktorEOS can be used to build energy management plans that are optimized for your specific setup of PV system, battery, electric vehicle, household load and electricity pricing. It can be integrated into home automation systems such as NodeRED, Home Assistant, EVCC.

🏘️ Community

We are an open-source community-driven project and we love to hear from you. Here are some ways to get involved:

What do people build with AkkudoktorEOS

The community uses AkkudoktorEOS to minimize grid energy consumption and to maximize the revenue from grid energy feed in with their home automation system.

Why not use AkkudoktorEOS?

AkkudoktorEOS does not control your home automation assets. It must be integrated into a home automation system. If you do not use a home automation system or you feel uncomfortable with the configuration effort needed for the integration you should better use other solutions.

Quick Start

Run EOS with Docker (access dashboard at http://localhost:8504):

docker run -d \
  --name akkudoktoreos \
  -p 8503:8503 \
  -p 8504:8504 \
  -e OPENBLAS_NUM_THREADS=1 \
  -e OMP_NUM_THREADS=1 \
  -e MKL_NUM_THREADS=1 \
  -e EOS_SERVER__HOST=0.0.0.0 \
  -e EOS_SERVER__EOSDASH_HOST=0.0.0.0 \
  -e EOS_SERVER__EOSDASH_PORT=8504 \
  --ulimit nproc=65535:65535 \
  --ulimit nofile=65535:65535 \
  --security-opt seccomp=unconfined \
  akkudoktor/eos:latest

System Requirements

  • Python: 3.11 or higher
  • Architecture: amd64, aarch64 (armv8)
  • OS: Linux, Windows, macOS

Note

: Other architectures (armv6, armv7) require manual compilation of dependencies with Rust and GCC.

Installation

Home Assistant add-on

Supports aarch64 Architecture Supports amd64 Architecture

To install the Akkudoktor-EOS add-on in Home Assistant:

Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.

  1. Add the repository URL:

    In Home Assistant, go to:

    Settings → Add-ons → Add-on Store → ⋮ (top-right menu) → Repositories
    

    and enter the URL of this Git repository:

    https://github.com/Akkudoktor-EOS/EOS
    
  2. Install the add-on:

    After adding the repository, the add-on will appear in the Add-on Store. Click Install.

  3. Start the add-on:

    Once installed, click Start in the add-on panel.

  4. Access the dashboard:

    Click Open Web UI in the add-on panel.

  5. Configure EOS (optional): In the dashboard, go to:

    Config
    
docker pull akkudoktor/eos:latest
docker compose up -d

Access the API at http://localhost:8503 (docs at http://localhost:8503/docs)

From Source

git clone https://github.com/Akkudoktor-EOS/EOS.git
cd EOS

Linux:

python -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install -e .
.venv/bin/python -m akkudoktoreos.server.eos

Windows:

python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\pip install -e .
.venv\Scripts\python -m akkudoktoreos.server.eos

Configuration

EOS uses EOS.config.json for configuration. If the file doesn't exist, a default configuration is created automatically.

Custom Configuration Directory

export EOS_DIR=/path/to/your/config

Configuration Methods

  1. EOSdash (Recommended) - Web interface at http://localhost:8504
  2. Manual - Edit EOS.config.json directly
  3. API - Use the Server API

See the documentation for all configuration options.

Port Configuration

Default ports: 8503 (API), 8504 (Dashboard)

If running on shared systems (e.g., Synology NAS), these ports may conflict with system services. Reconfigure port mappings as needed:

docker run -p 8505:8503 -p 8506:8504 ...

API Documentation

Interactive API docs available at:

  • Swagger UI: http://localhost:8503/docs
  • OpenAPI Spec: View Online

Resources

Contributing

We welcome contributions! See CONTRIBUTING for guidelines.

Contributors

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

S
Description
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)
Readme
43 MiB
Languages
Python 99.6%
Makefile 0.3%
Dockerfile 0.1%