Zum Inhalt springen

Architektur

EEDC besteht aus drei Repositories, die zusammen ein vollständiges Ökosystem bilden:

┌─────────────────────────┐
│ eedc (Core) │ Shared: FastAPI + React + SQLite
│ Standalone via Docker │ Kann unabhängig laufen
└────────────┬────────────┘
│ Git Subtree (eedc/ Verzeichnis)
┌─────────────────────────┐ POST /api/submit
│ eedc-homeassistant │ ──────────────────────────► ┌──────────────────────┐
│ Home Assistant Add-on │ GET /api/benchmark │ eedc-community │
│ + MQTT + Sensor- │ ◄────────────────────────── │ PostgreSQL Server │
│ Mapping + Docs │ │ energy.raunet.eu │
└─────────────────────────┘ └──────────────────────┘

Das Herzstück — die gemeinsame Codebasis für Backend und Frontend. Kann standalone via docker-compose up gestartet werden, ohne Home Assistant.

Verpackt den Core als Home Assistant Add-on und ergänzt:

  • MQTT Discovery für native HA-Sensoren
  • Sensor-Mapping-Wizard
  • HA-Statistik-Import
  • Monatsabschluss-Wizard mit HA-Datenvorschlägen

Der Core wird als Git Subtree eingebunden — kein Submodule, sondern eine vollständige Kopie unter eedc/. Das vereinfacht CI/CD und ermöglicht eigenständige Builds.

Ein eigenständiger Server für anonyme Community-Benchmarks. Architektonisch bewusst getrennt:

  • PostgreSQL statt SQLite (Multi-User, Concurrent Writes)
  • Async SQLAlchemy für bessere Skalierung
  • Eigene API mit 19 Endpunkten
SchichtCore / HA Add-onCommunity Server
BackendPython, FastAPI, SQLAlchemyPython, FastAPI, SQLAlchemy 2.0 (async)
FrontendReact, TypeScript, Vite, Tailwind CSS, RechartsReact, TypeScript, Vite, Tailwind CSS, Recharts
DatenbankSQLitePostgreSQL
DeploymentDocker, HA Add-onDocker, GitHub Actions, Portainer
Externe APIsOpen-Meteo, DWD Bright Sky, PVGIS

Das zentrale Datenmodell dreht sich um die Anlage (PV-System) und ihre Investitionen (Komponenten):

Anlage (Standort, Ausrichtung, Neigung)
├── Monatsdaten (monatliche Zählerstände)
├── Strompreise (zeitlich gültige Tarife)
└── Investitionen
├── Wechselrichter
│ ├── PV-Module (Pflicht)
│ └── DC-Speicher (optional)
├── AC-Speicher
├── E-Auto
├── Wärmepumpe
├── Wallbox
├── Balkonkraftwerk
└── Sonstiges

Jede Investition hat eigene InvestitionMonatsdaten — z.B. String-Erträge pro PV-Modul, Lade-/Entladezyklen pro Speicher, gefahrene km pro E-Auto.

Nicht jeder nutzt Home Assistant. Durch die Trennung in Core (ohne HA-Abhängigkeit) und HA-Wrapper bleibt das Projekt:

  • Testbar — Unit-Tests laufen ohne HA-Instanz
  • Portabel — läuft auf jedem System mit Docker
  • Zukunftssicher — neue Integrationen (z.B. ioBroker) ohne Core-Änderungen

Git Submodules sind fehleranfällig und erschweren CI/CD. Ein Subtree ist eine vollständige Kopie im Repository — einfacher zu klonen, zu bauen und zu releasen. Updates werden mit git subtree pull synchronisiert.

  • Core: Einzelbenutzer, lokale Installation. SQLite = zero config, eine Datei, Backup durch Kopieren.
  • Community: Multi-User-Server mit gleichzeitigen Schreibzugriffen. PostgreSQL = ACID-Transaktionen, Connection Pooling, robustes Locking.

Für Amortisation, Eigenverbrauchsquote und Langzeittrends reichen Monatswerte. Vorteile:

  • Einfache Dateneingabe (12 Werte pro Jahr statt 8.760)
  • Robuster gegen Sensor-Ausfälle
  • Vergleichbar mit Abrechnungen vom Netzbetreiber
  • Prognosen auf Monatsbasis sind meteorologisch belastbar