No description
* dev/perform-refactoring: chore: update tests to adaped to new structure refactor: modernize project and improve error handling and documentation |
||
|---|---|---|
| api | ||
| collectors | ||
| config | ||
| dashboard | ||
| scripts | ||
| tests | ||
| transformators | ||
| utils | ||
| .gitignore | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| main.py | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Strompreis & Netz Pipeline
Automatisierte End-to-End Daten-Pipeline zur Erfassung, Analyse und Visualisierung von Strommarkt- und Wetterdaten.
🏗 Architektur (Medallion Prinzip)
Das Projekt folgt einer sauberen Data-Engineering-Struktur unter Verwendung von DuckDB und Polars:
- Bronze Layer (Raw): Unveränderte API-Antworten von SMARD und Bright Sky werden als historische Fakten gespeichert.
- Gold Layer (Combined): Transformierte, bereinigte und über Zeitstempel zusammengeführte Daten (Inner Join), die direkt für Analysen und das Dashboard bereitstehen.
🚀 Features
- Datensammlung: Automatisiertes Abrufen von:
- Strompreisen, Netzlast, Gesamterzeugung, Wind- & Solar-Erzeugung (SMARD API).
- Umfassenden Wetterdaten (Temperatur, Wind, Solarstrahlung, etc. via Bright Sky API).
- Dashboard: Interaktive Visualisierung mit Streamlit (Preise, Energiemix, Wetter-Details).
- REST-API: FastAPI-Schnittstelle für den programmatischen Zugriff auf aktuelle Daten.
- Orchestrierung: Vollständige Docker-Integration inklusive eines automatisierten Schedulers.
🛠 Installation & Betrieb
Mit Docker (Empfohlen)
Das gesamte System (Pipeline, API, Dashboard) wird mit einem Befehl gestartet:
docker-compose up --build
- Dashboard:
http://localhost:8501 - API:
http://localhost:8000/docs
Lokal (Entwicklung)
-
Abhängigkeiten installieren:
uv sync -
Pipeline manuell ausführen:
uv run python main.py run -
Dashboard starten:
uv run streamlit run dashboard/app.py
⚙️ Konfiguration
Die Konfiguration erfolgt über config/config.yaml oder Umgebungsvariablen mit dem Präfix STROM_:
STROM_SMARD__REGION: Region-Code (Standard: DE-LU)STROM_DATABASE__PATH: Pfad zur DuckDB DateiINTERVAL: Ausführungsintervall des Schedulers im Docker-Container (in Sekunden).
🧪 Tests
uv run pytest
Lizenz
MIT