Files
Milchwaerme/README.md
T
Michael Stangl 07d7a1191b Readme dazu
2026-06-14 09:34:02 +02:00

121 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.