Install

Three routes, all ending at the same web UI on port 8081.

Install

Pick one. All three end at the same place: a web UI on port 8081 that walks you through setup.

Home Assistant add-on

The easiest route if you already run Home Assistant.

  1. Add the ohAnd/ha_addons repository to your add-on store.
  2. Install EOS Connect and start it.
  3. Open http://homeassistant.local:8081.

The add-on only sets the web port, time zone and log level. Everything else lives in EOS Connect's own database and is configured in its web UI.

Docker

Works on anything that runs containers.

git clone https://github.com/ohAnd/EOS_connect.git
cd EOS_connect
docker compose up -d

Keep the ./data:/app/data volume. Your settings, the PV yield history the forecast auto-scaler learns from, and what each managed load has learned about its appliance all live in data/eos_connect.db. Without that mount the database sits on the container's writable layer and is destroyed every time the container is recreated — which is exactly what an update does. Your settings then appear to have reverted on their own. Compose files written before v0.3.34 do not have it.

The shipped compose file mounts a second path, ./src/config.yaml:/app/config.yaml, which is the only persistent home the three bootstrap keys have — they are never stored in the database. On a clean clone that file does not exist yet (it is gitignored), so Docker creates an empty directory in its place. Harmless — EOS Connect logs which keys it ignored and starts on defaults — but to be rid of it:

rmdir src/config.yaml
printf 'time_zone: Europe/Berlin\n' > src/config.yaml

Or drop that line and use the environment variables instead.

From source

Python 3.13.

git clone https://github.com/ohAnd/EOS_connect.git
cd EOS_connect
pip install -r requirements.txt
python src/eos_connect.py

Bootstrap settings

Almost everything is configured in the web UI and stored in the database. Only these infrastructure keys are read from config.yaml at startup, because they are needed before the database is open:

# config.yaml — bootstrap settings only
eos_connect_web_port: 8081  # web server port
time_zone: Europe/Berlin    # system time zone
log_level: info             # debug, info, warning, error

Each has an environment-variable equivalent, which wins over the file: EOS_WEB_PORT, EOS_TIMEZONE, EOS_LOG_LEVEL and EOS_DATA_PATH.

Upgrading? On first start EOS Connect migrates an existing config.yaml into the database by itself. Afterwards you can cut the file back to the keys above.

Next steps