Readme dazu

This commit is contained in:
Michael Stangl
2026-06-14 09:34:02 +02:00
parent 0748b63a58
commit 07d7a1191b
+120
View File
@@ -0,0 +1,120 @@
# Auslegung Wärmerückgewinnung Milchkühlung
Kommandozeilen-Werkzeug zur Auslegung einer Wärmerückgewinnung aus der Milchkühlung: Aus der täglich zu kühlenden **Milchmenge** werden Wärmepumpe, PV-Anlage, Batterie und Natriumacetat-Latentspeicher dimensioniert inklusive Abhollogistik, versorgbarer Haushalte und Brennstoffkosten-Vergleich.
Alle Annahmen liegen in einer `config.json`, sodass sich Varianten ohne Codeänderung nachrechnen lassen.
## Konzept
```
Milchabwärme (37→4 °C) ──► Wärmepumpe (Strom aus PV) ──► Latentspeicher (Natriumacetat, 58 °C) ──► Abholung per LKW
```
Da Natriumacetat-Trihydrat erst bei 58 °C schmilzt, die Milchabwärme aber nur bei ~37 °C anfällt, hebt eine Wärmepumpe das Temperaturniveau an. Der Speicher kann unterkühlt und damit isolierungsfrei transportiert werden.
## Voraussetzungen
- Python 3.8+
- Keine externen Abhängigkeiten (nur Standardbibliothek)
## Dateien
| Datei | Zweck |
|---|---|
| `auslegung.py` | Berechnungsprogramm |
| `config.json` | Sämtliche Annahmen (kopieren für Varianten) |
## Verwendung
```bash
# Detailreport für 1000 L Milch/Tag
python auslegung.py 1000
# Kompakte Empfehlung (gerundete Größen + vorgeschlagener Abholzyklus)
python auslegung.py 1000 --suggest-size
# Variante mit eigener Config und Ergebnis-Export als JSON
python auslegung.py 1500 --config meine_variante.json --json ergebnis.json
```
| Argument | Beschreibung |
|---|---|
| `milch_l_tag` | (Pflicht) Milchmenge pro Tag in Litern |
| `--config PFAD` | Pfad zur JSON-Konfiguration (Standard: `config.json`) |
| `--json PFAD` | Ergebnis zusätzlich als JSON schreiben |
| `--suggest-size` | Kompakte Empfehlung statt Detailreport |
## Was berechnet wird
- **Milchkühllast** (kWh/Tag) aus Menge und Temperaturhub
- **Wärmepumpe**: Kälte-, Heiz- und elektrische Leistung, Strombedarf, in den Speicher gelieferte Wärme
- **PV-Anlage**: Leistung (kWp) und Dachfläche für die Jahresbilanz des WP-Strombedarfs
- **Netzbezug**: jährlicher Zukauf-Anteil durch die Wintermonate (Monatsbilanz)
- **Batterie**: nutzbare und Nennkapazität für den Tag-/Nacht-Ausgleich
- **Latentspeicher**: Masse, Volumen, LKW-Auslastung, Energieinhalt einer Ladung
- **Versorgte Haushalte**: Warmwasser (ganzjährig) und Winterfall (Heizung + WW)
- **Brennstoffkosten**: Wert der Wärme als Ersatzkosten für Gas, Heizöl, Pellets
## Konfiguration (`config.json`)
| Abschnitt | Wichtigste Parameter |
|---|---|
| `milch` | Ein-/Austrittstemperatur, Dichte, spez. Wärme |
| `waermepumpe` | `cop`, `laufzeit_h_pro_tag` |
| `pcm` | `modus` (`latent_only` / `latent_plus_hub`), Latentwärme, Dichte, c-Werte, Lade-/Entladetemperatur |
| `abholung` | `zyklus_tage`, LKW-Nutzlast und -Volumen |
| `pv` | spez. Jahresertrag, Fläche je kWp, Monatsprofil |
| `batterie` | Direkt-PV-Stunden, nutzbarer Anteil, Reservefaktor |
| `haushalt` | Personen, Warmwasser je Person, Winter-Heizbedarf |
| `brennstoffe` | Preis (ct/kWh) und Wirkungsgrad für Gas/Öl/Pellets |
### Wichtigste Stellschrauben
- `pcm.modus` `latent_only` (nur Phasenwechsel) oder `latent_plus_hub` (mit Überhitzung): bestimmt Energiedichte und Speichergröße.
- `abholung.zyklus_tage` Abholrhythmus, steuert die Speichergröße direkt.
- `waermepumpe.cop` bestimmt Strombedarf und damit PV-Größe.
- `haushalt.heizbedarf_winter_kWh_tag` stark gebäudeabhängig (saniert ~40, Altbau ~100, 0 = nur Warmwasser).
- `brennstoffe` Preise sind Stand Juni 2026 (DE) und jederzeit überschreibbar.
## Ausgabe
Der Detailreport schreibt einen formatierten Konsolentext mit allen Blöcken. Mit `--json` wird das vollständige Ergebnis zusätzlich als strukturiertes JSON gespeichert (alle Zwischengrößen, im Suggest-Modus zusätzlich der `vorschlag`-Block).
### Beispiel (gekürzt, 1000 L)
```
WAERMEPUMPE (COP 2.60, Laufzeit 18 h/Tag)
Strombedarf ................. 24.0 kWh/Tag
Waerme in den Speicher ...... 62.4 kWh/Tag
PV-ANLAGE
Leistung .................... 8.8 kWp
Dachflaeche ................. 44 m2
NETZBEZUG (durch Wintermonate)
Netzbezug ................... 1941 kWh/a = 22 %
VERSORGTE HAUSHALTE (2 Erw. + 2 Kinder)
-> Warmwasser ganzjaehrig ... 11.1 Haushalte
-> im Winter ................ 1.0 Haushalte
LATENTSPEICHER (Natriumacetat-Trihydrat, Modus: latent_plus_hub)
Energieinhalt voller LKW .... 2185 kWh
WERT DER WAERME BEIM KAEUFER
Gas | 11.6 ct/kWh | 253 EUR/LKW | 2635 EUR/Jahr
Pellets | 8.0 ct/kWh | 174 EUR/LKW | 1810 EUR/Jahr
```
## Modell-Annahmen & Vereinfachungen
- Milch wird thermisch als Wasser gerechnet.
- Der zurückkehrende Speicherbehälter wird als „warm" (nahe Schmelzpunkt) angenommen; sonst müsste die WP ihn zusätzlich aufheizen.
- Der Netzbezug ist eine **Monatsbilanz** und setzt einen Tag-/Nacht-Ausgleich per Batterie voraus. Ohne Batterie liegt der reale Zukauf höher (~5060 %).
- `--suggest-size` optimiert den Abholzyklus auf **Transportauslastung**, nicht auf die Verweildauer der Wärme im Speicher.
- Die Brennstoffkosten sind der **Brutto-Substitutionswert** der Wärme, kein erzielbarer Verkaufspreis (Transport, Strom, Abschreibung noch nicht abgezogen).
## Mögliche Erweiterungen
- Anbieterseite: Transportkosten, WP-Stromkosten und Speicher-Abschreibung → echte Marge bzw. Mindestverkaufspreis je kWh.
- Monatlich aufgelöste PV-Deckung als Diagramm.