Zum Inhalt

Lastenheft & Pflichtenheft - Lüftungssteuerung

Vaillant recoVAIR 275/3 | Home Assistant Package Letzte Überarbeitung: Juli 2026


Lastenheft — WAS soll das System leisten?

Gerät

Vaillant recoVAIR 275/3, angebunden via ebusd (LXC-Container, nicht HA-Addon). Entitäten unter dem Präfix ebusd_lueftung_* bzw. select.ebusd_lueftung_vai00_*.

Der Bypass ist ein internes Klappenventil der Anlage. Er wird über number.ebusd_lueftung_vai00_bypass_tage gesteuert. Die Vaillant zählt diesen Wert intern täglich von 2 auf 0 herunter; bei 0 schließt die Klappe. Die Automation hält den Zähler bei 2, solange alle Bedingungen erfüllt sind.

Betriebsmodi

Modus Beschreibung
Tag Normalbetrieb, höhere Luftmenge
Nacht Reduzierter Betrieb, geringere Luftmenge
HI Intensivmodus mit Laufzeit (Aus / 30 min / 1h / 2h / 3h). Nur bei Bad-Feuchte-Ereignis während Abwesenheit.

Anforderungen Tag/Nacht-Modus

L1 Tagbetrieb nur innerhalb eines einstellbaren Zeitfensters. Wochentag und Wochenende haben separate Startzeiten, eine gemeinsame Endzeit.

L2 Tagbetrieb nur wenn mindestens eine Person zuhause ist (binary_sensor.jemand_zuhause).

L3 Hitzeschutz hat höchste Priorität: Wenn binary_sensor.beschattung_hitzeschutz_noetig aktiv ist, wird unabhängig von Zeitfenster und Anwesenheit Nachtbetrieb gesetzt. Außenluftzufuhr im Hochsommer würde die Innentemperatur erhöhen.

L4 Manuelle Steuerung ist möglich; die Automatik kann über input_boolean.luftung_automatik_aktiv deaktiviert werden.

Anforderungen Bad-Lüftung (HI-Modus)

L5 Übersteigt die Badezimmer-Luftfeuchtigkeit einen einstellbaren Schwellwert, wird ein Timer gestartet.

L6 Solange der Timer läuft, wird Tagbetrieb erzwungen.

L7 Läuft der Timer während Abwesenheit, wird zusätzlich der HI-Modus mit einer einstellbaren Dauer aktiviert, um die Feuchtigkeit schneller abzuführen. Bei Anwesenheit wird kein HI gesetzt, da die Personen selbst für ausreichend Luftzirkulation sorgen.

L8 Der Hitzeschutz (L3) überschreibt auch den Bad-Timer: Im Hochsommer ist Nachtbetrieb wichtiger als Bad-Entlüftung.

Anforderungen Bypass (Sommerkühlung)

L9 Bypass ist grundsätzlich nur aktiv wenn input_boolean.bypass_aktiv eingeschaltet ist (Sommersaison). Im Winter ist er immer aus.

L10 Bypass-Bedingungen — alle müssen gleichzeitig erfüllt sein:

  • a) Außentemperatur liegt im einstellbaren Fenster: min_aussentemperatur ≤ außen ≤ max_aussentemperatur. Unterhalb des Minimums (Frühjahr/Herbst zu kalt) kein Bypass. Oberhalb des Maximums (Hitzewelle) kein Bypass — in diesem Fall würde Warmluft ins Haus gefördert. Die Innentemperatur ist dann irrelevant.
  • b) Innentemperatur (Mittelwert Karell + Martha) ≥ einstellbarer Mindestwert. Bypass lohnt sich nicht wenn es drinnen kühler ist als der Schwellwert.
  • c) Außenluft ist mindestens 0,5 °C kühler als die Innentemperatur (Puffer, da der Bypass träge reagiert und sonst um den Gleichstand pendeln würde).
  • d) Das Heizventil im Wohnzimmer ist geschlossen. Bypass während aktiver Heizung widerspricht dem Heizbedarf. Kinderzimmer (Karell/Martha) heizen im Winter nicht auf Bypass-relevante Temperaturen; das Wohnzimmer hat einen Kamin, dessen Temperatur nicht gemessen wird.

L11 Bypass Force (input_boolean.bypass_force) umgeht ausschließlich das Heizventil-Kriterium (L10d). Alle Temperaturkriterien (L10a–c) gelten weiterhin. Force wird automatisch zurückgesetzt, wenn die Temperaturbedingungen nicht mehr erfüllt sind.

L12 Der Bypass wird nicht gesteuert wenn Temperatursensoren nicht verfügbar sind (z.B. kurz nach HA-Neustart). Die Entscheidung wird nachgeholt sobald alle Sensoren wieder Werte liefern.

Anforderungen Frostschutz

L13 Unter 0 °C Außentemperatur (kalibrierter Fühler der Vaillant-Heizung) darf die Lüftung nicht laufen (Gefahr von Vereisen des Wärmetauschers). Ein manuelles Einschalten wird nach 20 Sekunden automatisch rückgängig gemacht.


Pflichtenheft — WIE ist das System umgesetzt?

Architektur

packages/lueftung.yaml enthält alle Skripte und Automationen der Lüftungssteuerung. Alle Entities werden außerhalb des Packages als Helper angelegt (HA UI). Die Entscheidungslogik liegt in den Automationen, die Ausführung läuft ausschließlich über die drei Skripte dieses Packages.

Skripte

Skript Funktion Mode
script.lueftung_modus_setzen_package Setzt Tag/Nacht via select.select_option queued
script.lueftung_bypass_setzen_package Setzt bypass_tage auf 2 (an) oder 0 (aus) queued
script.lueftung_hi_modus_setzen_package Setzt HI-Modus via select.select_option queued

mode: queued stellt sicher dass aufeinanderfolgende Aufrufe nicht verworfen werden.

Automationen

automation.luftung_package_hauptsteuerung (mode: restart)

Zentrale Steuerung. Wird bei jedem relevanten Zustandswechsel neu gestartet; ein laufender Durchlauf wird dabei abgebrochen.

Trigger-Gruppen: - Schaltzustand: Automatik, Bypass, Hitzeschutz, Anwesenheit, Bad-Timer - Zeitfenster: Start Wochentag/Wochenende, Ende - Helper-Änderungen: Bypass-Temperaturgrenzen (sofortige Neubewertung) - Temperatur-Grenzwerte: numeric_state mit 3 min Entprellung (verhindert unnötige Schaltvorgänge bei Pendeln um die Schwelle) - Recovery: Sensoren kommen aus unavailable/unknown zurück

Prioritätsreihenfolge Tag/Nacht (erste zutreffende Bedingung gewinnt):

Priorität Bedingung Ergebnis
1 (höchste) Hitzeschutz aktiv Nacht
2 Bad-Timer + Abwesenheit Tag + HI
3 Bad-Timer + Anwesenheit Tag
4 Abwesenheit Nacht
5 Außerhalb Zeitfenster Nacht
6 (Standard) Anwesenheit im Zeitfenster Tag

Bypass-Entscheidung (läuft nach der Modus-Entscheidung, separat): - Nur wenn sensoren_ok (alle drei Temperatursensoren verfügbar) - Bypass an: alle Bedingungen L10a–d erfüllt (bzw. L11 für Force) - Bypass aus: mindestens eine Bedingung nicht mehr erfüllt - Keine Aktion wenn Bypass bereits im Sollzustand und Tage == 2

automation.luftung_package_badfeuchte_timer (mode: single)

Startet timer.luftung_bad_timer wenn Badfeuchte > input_number.luftung_bad_feuchte_schwelle, Automatik aktiv und kein Hitzeschutz. Timer-Dauer aus input_number.luftung_bad_luftungsdauer.

automation.luftung_package_frostschutz_abschaltung (mode: single)

Schaltet die Lüftung nach kurzer Verzögerung wieder aus, wenn die Frostschutzbedingung erfüllt ist.

Helper-Entitäten (Einstellwerte)

Entity Funktion Default
input_boolean.luftung_automatik_aktiv Automatik ein/aus on
input_boolean.bypass_aktiv Bypass-Saison ein/aus on
input_boolean.bypass_force Force (ignoriert Heizventil) off
input_datetime.luftung_start_wochentag Tagbetrieb-Start Mo–Fr 07:00
input_datetime.luftung_start_wochenende Tagbetrieb-Start Sa–So 08:30
input_datetime.luftung_ende Tagbetrieb-Ende (täglich) 21:00
input_number.luftung_bypass_min_aussentemperatur Bypass ab Außen (°C) 13
input_number.luftung_bypass_max_aussentemperatur Bypass bis Außen (°C) 23
input_number.luftung_bypass_min_innentemperatur Bypass ab Innen (°C) 23
input_number.luftung_bad_feuchte_schwelle Feuchte-Schwelle Bad (%) 70
input_number.luftung_bad_luftungsdauer HI-Dauer bei Abwesenheit (h) 1,5
timer.luftung_bad_timer Laufender Bad-Lüftungs-Timer idle

Sensor-Entitäten (Messwerte)

Entity Bedeutung
sensor.ebusd_lueftung_wtw04_airinlettemp Außentemperatur (Zuluft-Fühler)
sensor.karell_wandthermostat_temperatur Innentemperatur Kinderzimmer 1
sensor.martha_wandthermostat_temperatur Innentemperatur Kinderzimmer 2
sensor.badezimmer_wandthermostat_luftfeuchtigkeit Luftfeuchtigkeit Bad
binary_sensor.jemand_zuhause Anwesenheit gesamt
binary_sensor.beschattung_hitzeschutz_noetig Hitzeschutz-Signal
binary_sensor.wohnzimmer_wandthermostat_heizventil Heizventil Wohnzimmer
sensor.heizung_vaillant_aurocompact_outsidetemp_temp Außentemp Heizung (Frostschutz, falls im System vorhanden)

Design-Entscheidungen & bekannte Einschränkungen

  • Innentemperatur-Mittelwert: Karell + Martha. Das Wohnzimmer (Kamin) wird nicht einbezogen, da der Wert dort nicht repräsentativ für den Bypass-Bedarf ist.
  • Keine state-Trigger auf Temperatursensoren: Nur numeric_state-Trigger bei Grenzwertüberschreitung (mit 3 min Entprellung), um unnötige Schaltvorgänge zu vermeiden.
  • Kein Trigger auf bypass_tage: Würde einen Selbst-Trigger-Loop verursachen (Automation setzt Tage → Trigger feuert → Automation läuft erneut). Stattdessen hebt jeder Lauf die Tage auf 2 an. Die täglichen Zeitfenster-Trigger (Start/Ende) wirken als impliziter Keepalive.
  • Sensor-Guard: Bei unavailable-Sensoren wird die Bypass-Entscheidung übersprungen statt mit Ersatzwerten falsch zu schalten. Recovery-Trigger holen die Entscheidung nach.
  • HI-Modus Erweiterbarkeit: Der HI-Modus bei Bad-Feuchte könnte bei mangelndem Solarstromüberschuss im Winter oder auf Wunsch ganz deaktiviert werden (Bad-Timer-Automation einfach deaktivieren, Rest bleibt unberührt).