Vergleich mit Brennstoffkosten dazu

This commit is contained in:
Michael Stangl
2026-06-14 09:34:15 +02:00
parent 07d7a1191b
commit 3276ec8d86
2 changed files with 78 additions and 7 deletions
+20 -5
View File
@@ -61,10 +61,25 @@
"_kommentar": "Warmwasser je Person/Tag. heizbedarf_winter = max. taeglicher Raumheizbedarf eines Haushalts im tiefsten Winter, stark gebaeudeabhaengig (Neubau/saniert ~40, Altbau ~100). Auf 0 setzen, wenn nur Warmwasser betrachtet werden soll."
},
"brennstoffe": {
"gas": {"preis_ct_pro_kWh": 11.0, "wirkungsgrad": 0.95},
"oel": {"preis_ct_pro_kWh": 11.5, "wirkungsgrad": 0.90},
"pellets": {"preis_ct_pro_kWh": 7.0, "wirkungsgrad": 0.88},
"_kommentar": "Vergleichswert: was der Kaeufer fuer dieselbe Nutzwaerme aus fossilen/Holz-Brennstoffen zahlen wuerde. preis_ct_pro_kWh = Brennstoffpreis je kWh Brennstoffenergie (Stand Juni 2026, Deutschland: Gas ~11, Oel ~11.5 (=115 ct/L bei 10 kWh/L), Pellets ~7 (=350 EUR/t bei 5 kWh/kg)). wirkungsgrad = Kesselwirkungsgrad. Nutzwaermekosten = preis/wirkungsgrad."
"brennstoffe": [
{
"name": "Gas",
"preis_ct_kWh": 11.0,
"wirkungsgrad": 0.95,
"_kommentar": "Erdgas Juni 2026, Brennwertkessel."
},
{
"name": "Heizoel",
"preis_ct_kWh": 11.5,
"wirkungsgrad": 0.90,
"_kommentar": "Heizoel EL Juni 2026 (~115 ct/L bei 10 kWh/L), Brennwertkessel."
},
{
"name": "Pellets",
"preis_ct_kWh": 7.0,
"wirkungsgrad": 0.88,
"_kommentar": "Holzpellets Juni 2026 (~350 EUR/t bei 5 kWh/kg), moderner Pelletskessel."
}
],
"_kommentar_brennstoffe": "Vergleichswert: Nutzwaermekosten = preis_ct_kWh / wirkungsgrad. Reihenfolge bestimmt die Anzeigereihenfolge im Report."
}
+57 -1
View File
@@ -215,6 +215,32 @@ def haushalte(q_speicher_tag: float, cfg: dict) -> dict:
}
def brennstoffkosten(e: dict, cfg: dict) -> dict:
"""Vergleichswert der Waerme gegenueber fossilen Brennstoffen / Pellets.
Nutzwaermekosten = Brennstoffpreis / Kesselwirkungsgrad.
Bewertet werden der Energieinhalt eines vollen LKW und die Jahresmenge.
"""
energie_lkw = e["speicher"]["voller_lkw_energie_kWh"]
energie_jahr = e["waermepumpe"]["speicher_kWh_tag"] * TAGE_PRO_JAHR
vergleich = []
for b in cfg.get("brennstoffe", []):
nw_ct = b["preis_ct_kWh"] / b["wirkungsgrad"]
vergleich.append({
"name": b["name"],
"preis_ct_kWh": b["preis_ct_kWh"],
"wirkungsgrad": b["wirkungsgrad"],
"nutzwaerme_ct_kWh": nw_ct,
"eur_pro_lkw": energie_lkw * nw_ct / 100.0,
"eur_pro_jahr": energie_jahr * nw_ct / 100.0,
})
return {
"energie_lkw_kWh": energie_lkw,
"energie_jahr_kWh": energie_jahr,
"vergleich": vergleich,
}
def rechne(milch_l_tag: float, cfg: dict) -> dict:
q_milch = milch_kuehllast(milch_l_tag, cfg)
wp = waermepumpe(q_milch, cfg)
@@ -223,7 +249,7 @@ def rechne(milch_l_tag: float, cfg: dict) -> dict:
netz = netzbezug(wp["strom_kWh_tag"], pv["kWp"], cfg)
bat = batterie(wp["strom_kWh_tag"], cfg)
hh = haushalte(wp["speicher_kWh_tag"], cfg)
return {
e = {
"eingang": {"milch_l_tag": milch_l_tag},
"milch_kuehllast_kWh_tag": q_milch,
"waermepumpe": wp,
@@ -233,6 +259,9 @@ def rechne(milch_l_tag: float, cfg: dict) -> dict:
"batterie": bat,
"haushalte": hh,
}
if "brennstoffe" in cfg:
e["brennstoffkosten"] = brennstoffkosten(e, cfg)
return e
def runde_auf(wert: float, schritt: float) -> float:
@@ -376,6 +405,17 @@ def report(e: dict, cfg: dict) -> str:
L.append(f" passt in einen LKW .......... {passt:>8}")
L.append(f" voller LKW voll nach ........ {sp['voller_lkw_tausch_tage']:8.1f} Tagen")
L.append(f" Energieinhalt voller LKW .... {sp['voller_lkw_energie_kWh']:8.0f} kWh")
bk = e.get("brennstoffkosten")
if bk and bk["vergleich"]:
L.append("")
L.append("WERT DER WAERME BEIM KAEUFER (Ersatzkosten fossil/Holz)")
L.append(f" {'Brennstoff':<10} | {'ct/kWh':>7} | {'EUR/LKW':>9} | {'EUR/Jahr':>9}")
L.append(f" {'-'*10}-+-{'-'*7}-+-{'-'*9}-+-{'-'*9}")
for v in bk["vergleich"]:
L.append(f" {v['name']:<10} | {v['nutzwaerme_ct_kWh']:>7.1f} | "
f"{v['eur_pro_lkw']:>9.0f} | {v['eur_pro_jahr']:>9.0f}")
L.append(f" Bewertet: voller LKW ~{bk['energie_lkw_kWh']:.0f} kWh, "
f"Jahreserzeugung ~{bk['energie_jahr_kWh']:.0f} kWh")
L.append("=" * 62)
return "\n".join(L)
@@ -475,6 +515,22 @@ def report_md(e: dict, cfg: dict, quelldateien: list[str] | None = None) -> str:
L.append(f"| voller LKW nach | {sp['voller_lkw_tausch_tage']:.1f} Tagen |")
L.append(f"| Energieinhalt voller LKW | {sp['voller_lkw_energie_kWh']:.0f} kWh |")
bk = e.get("brennstoffkosten")
if bk and bk["vergleich"]:
L.append("")
L.append("## Wert der Waerme beim Kaeufer (Ersatzkosten fossil/Holz)")
L.append("")
L.append(f"Bewertet: voller LKW ~{bk['energie_lkw_kWh']:.0f} kWh, "
f"Jahreserzeugung ~{bk['energie_jahr_kWh']:.0f} kWh")
L.append("")
L.append("| Brennstoff | ct/kWh (Nutzw.) | EUR/LKW | EUR/Jahr |")
L.append("|------------|-----------------|---------|----------|")
for v in bk["vergleich"]:
L.append(f"| {v['name']} | {v['nutzwaerme_ct_kWh']:.1f} | "
f"{v['eur_pro_lkw']:.0f} | {v['eur_pro_jahr']:.0f} |")
L.append("")
L.append("*ct/kWh = Brennstoffpreis ÷ Kesselwirkungsgrad*")
return "\n".join(L)