YAML – Lüftung¶
Dokumentation: Lüftung · Lastenheft
Aktiver Stand¶
Die Lüftung ist inzwischen als zentrales Package umgesetzt:
/config/packages/lueftung.yaml
Die Sicherung enthält:
- bestehende Package-Skripte und Package-Automationen
- MQTT-Sensor
sensor.vaillant_recovair_275_3_intensivmodus_countdown - MQTT-Binary-Sensor
binary_sensor.vaillant_recovair_275_3_luftung_kuhlung_status - Template-Sensoren für Filterstatus, Modusanzeige und Trigger-Countdown
script:
# Package-Skripte für die Lüftung.
# Diese Skripte werden von den Package-Automationen verwendet
# und sollten deshalb nicht in der UI bearbeitet werden.
lueftung_modus_setzen_package:
alias: "Lüftung: Modus setzen [Package]"
description: "Setzt den Lüftungsmodus auf Tag oder Nacht."
mode: queued
fields:
stufe:
name: Modus
description: "Zielmodus der Lüftung, zum Beispiel Tag oder Nacht."
sequence:
- action: select.select_option
target:
entity_id: select.ebusd_lueftung_vai00_lueftungsstufe_status
data:
option: "{{ stufe }}"
lueftung_bypass_setzen_package:
alias: "Lüftung: Bypass setzen [Package]"
description: "Aktiviert oder deaktiviert den Bypass über die Bypass-Tage."
mode: queued
fields:
aktiv:
name: Aktiv
description: "1 aktiviert den Bypass, 0 deaktiviert ihn."
tage:
name: Tage
description: "Anzahl der Bypass-Tage bei Aktivierung."
sequence:
- choose:
- conditions:
- "{{ aktiv | int(0) == 1 }}"
sequence:
- action: number.set_value
target:
entity_id: number.ebusd_lueftung_vai00_bypass_tage
data:
value: "{{ tage | default(1) | int(1) }}"
default:
- action: number.set_value
target:
entity_id: number.ebusd_lueftung_vai00_bypass_tage
data:
value: 0
lueftung_hi_modus_setzen_package:
alias: "Lüftung: HI-Modus setzen [Package]"
description: "Setzt den Intensivmodus der Lüftung."
mode: queued
fields:
status:
name: HI-Modus
description: "Zielwert für den Intensivmodus, zum Beispiel Aus oder 3h."
sequence:
- action: select.select_option
target:
entity_id: select.ebusd_lueftung_vai00_lueftung_hi_status
data:
option: "{{ status }}"
automation:
# Package-Automationen für die Lüftung.
# Die Entscheidungslogik bleibt in den Automationen,
# die eigentliche Ausführung läuft über die Skripte oben.
- id: lueftung_package_hauptsteuerung
alias: "Lüftung: Hauptsteuerung [Package]"
description: "Zentrale Steuerung für Tag/Nacht, HI-Modus und Bypass."
mode: restart
triggers:
# Schaltzustand-Trigger: reagieren sofort auf Statuswechsel
- trigger: state
entity_id: input_boolean.luftung_automatik_aktiv
- trigger: state
entity_id: input_boolean.bypass_aktiv
- trigger: state
entity_id: input_boolean.bypass_force
- trigger: state
entity_id: binary_sensor.beschattung_hitzeschutz_noetig
- trigger: state
entity_id: binary_sensor.jemand_zuhause
- trigger: state
entity_id: timer.luftung_bad_timer
# Zeitfenster-Trigger: starten/beenden den Tagbetrieb und wirken
# gleichzeitig als tägliche Auffrischung der Bypass-Tage
- trigger: time
at: input_datetime.luftung_start_wochentag
- trigger: time
at: input_datetime.luftung_start_wochenende
- trigger: time
at: input_datetime.luftung_ende
# Helper-Änderungs-Trigger: sofort neu bewerten wenn Einstellungen geändert werden
- trigger: state
entity_id: input_number.luftung_bypass_min_aussentemperatur
- trigger: state
entity_id: input_number.luftung_bypass_max_aussentemperatur
- trigger: state
entity_id: input_number.luftung_bypass_min_innentemperatur
# Temperatur-Grenzwert-Trigger: nur bei Überschreitung der relevanten
# Schwellwerte auslösen, nicht bei jeder kleinen Temperaturänderung.
# for: 3 Minuten entprellt Sensorwerte, die um die Schwelle pendeln.
# Außentemperatur in beide Richtungen (Bypass-Fenster betreten/verlassen),
# Innentemperatur nur nach oben (Bypass soll angehen wenn warm genug drinnen).
- trigger: numeric_state
entity_id: sensor.ebusd_lueftung_wtw04_airinlettemp
above: input_number.luftung_bypass_max_aussentemperatur
for: "00:03:00"
- trigger: numeric_state
entity_id: sensor.ebusd_lueftung_wtw04_airinlettemp
below: input_number.luftung_bypass_max_aussentemperatur
for: "00:03:00"
- trigger: numeric_state
entity_id: sensor.ebusd_lueftung_wtw04_airinlettemp
above: input_number.luftung_bypass_min_aussentemperatur
for: "00:03:00"
- trigger: numeric_state
entity_id: sensor.ebusd_lueftung_wtw04_airinlettemp
below: input_number.luftung_bypass_min_aussentemperatur
for: "00:03:00"
- trigger: numeric_state
entity_id: sensor.karell_wandthermostat_temperatur
above: input_number.luftung_bypass_min_innentemperatur
for: "00:03:00"
- trigger: numeric_state
entity_id: sensor.martha_wandthermostat_temperatur
above: input_number.luftung_bypass_min_innentemperatur
for: "00:03:00"
# Recovery-Trigger: nach HA-Neustart oder Sensorausfall sind die
# Temperatursensoren kurzzeitig unavailable. Die Bypass-Entscheidung
# wird dann übersprungen (siehe sensoren_ok) und hier nachgeholt,
# sobald der Sensor wieder einen Wert liefert.
- trigger: state
entity_id: sensor.ebusd_lueftung_wtw04_airinlettemp
from:
- unavailable
- unknown
- trigger: state
entity_id: sensor.karell_wandthermostat_temperatur
from:
- unavailable
- unknown
- trigger: state
entity_id: sensor.martha_wandthermostat_temperatur
from:
- unavailable
- unknown
conditions:
- condition: state
entity_id: input_boolean.luftung_automatik_aktiv
state: "on"
actions:
- alias: "Grundlagen berechnen"
variables:
day_window: >-
{% set start = states('input_datetime.luftung_start_wochenende') if now().weekday()
>= 5 else states('input_datetime.luftung_start_wochentag') %}
{{ 1 if today_at(start) <= now() <= today_at(states('input_datetime.luftung_ende'))
else 0 }}
# Sensor-Verfügbarkeit: Bypass-Entscheidungen nur mit echten Messwerten
# treffen, nie mit Ersatzwerten (verhindert Bypass-Flackern nach Neustart).
sensoren_ok: >-
{{ 1 if has_value('sensor.ebusd_lueftung_wtw04_airinlettemp')
and has_value('sensor.karell_wandthermostat_temperatur')
and has_value('sensor.martha_wandthermostat_temperatur') else 0 }}
outside_temp: "{{ states('sensor.ebusd_lueftung_wtw04_airinlettemp') | float(0)
}}"
inside_temp: "{{ ((states('sensor.karell_wandthermostat_temperatur') | float(20)
+ states('sensor.martha_wandthermostat_temperatur') | float(20)) / 2) }}"
# Fallback-Werte entsprechen den Default-Werten der Helper
bypass_min_aussen: "{{ states('input_number.luftung_bypass_min_aussentemperatur')
| float(5) }}"
bypass_max_aussen: "{{ states('input_number.luftung_bypass_max_aussentemperatur')
| float(23) }}"
bypass_min_innen: "{{ states('input_number.luftung_bypass_min_innentemperatur')
| float(23) }}"
bypass_tage_soll: 2
bypass_tage_ist: "{{ states('number.ebusd_lueftung_vai00_bypass_tage') | int(0)
}}"
bypass_ist_aktiv: "{{ 1 if states('number.ebusd_lueftung_vai00_bypass_tage')
| int(0) > 0 else 0 }}"
bypass_helper_aktiv: "{{ 1 if is_state('input_boolean.bypass_aktiv', 'on') else
0 }}"
bypass_force_aktiv: "{{ 1 if is_state('input_boolean.bypass_force', 'on') else
0 }}"
heizventil_aktiv: "{{ 1 if is_state('binary_sensor.wohnzimmer_wandthermostat_heizventil',
'on') else 0 }}"
outside_ok: "{{ 1 if bypass_min_aussen | float(5) <= outside_temp | float(0)
<= bypass_max_aussen | float(23) else 0 }}"
inside_ok: "{{ 1 if inside_temp | float(0) >= bypass_min_innen | float(23) else
0 }}"
# Außenluft muss mindestens 0,5 °C kühler sein als innen (Puffer,
# da der Bypass träge ist und sonst um den Gleichstand pendeln würde)
cooling_ok: "{{ 1 if outside_temp | float(0) < (inside_temp | float(0) - 0.5)
else 0 }}"
hi_dauer_bei_abwesenheit: >-
{% set stunden = states('input_number.luftung_bad_luftungsdauer') | float(1.5)
%}
{% if stunden == 0.5 %}
30 min
{% elif stunden == (stunden | int) %}
{{ stunden | int }}h
{% else %}
{{ stunden }}h
{% endif %}
force_reset_needed: "{{ 1 if sensoren_ok | int(0) == 1 and bypass_force_aktiv
| int(0) == 1 and (outside_ok | int(0) == 0 or inside_ok | int(0) == 0 or
cooling_ok | int(0) == 0) else 0 }}"
bypass_soll_aktiv: >-
{% set normal_bypass = bypass_helper_aktiv | int(0) == 1 and heizventil_aktiv
| int(0) == 0 and outside_ok | int(0) == 1 and inside_ok | int(0) == 1 and
cooling_ok | int(0) == 1 %}
{% set force_bypass = bypass_force_aktiv | int(0) == 1 and outside_ok | int(0)
== 1 and inside_ok | int(0) == 1 and cooling_ok | int(0) == 1 %}
{{ 1 if force_bypass or normal_bypass else 0 }}
bypass_log_message: >-
{% if bypass_soll_aktiv | int(0) == 1 %}
{% if bypass_ist_aktiv | int(0) == 1 and bypass_tage_ist | int(0) != bypass_tage_soll
| int(2) %}
Bypass bleibt aktiv: Bypass-Tage von {{ bypass_tage_ist | int(0) }} auf
{{ bypass_tage_soll | int(2) }} angehoben. Außen {{ outside_temp | round(1)
}} °C, innen {{ inside_temp | round(1) }} °C.
{% elif bypass_force_aktiv | int(0) == 1 %}
Bypass aktiviert: Force aktiv, Außenluft {{ outside_temp | round(1) }}
°C kühler als innen {{ inside_temp | round(1) }} °C.
{% else %}
Bypass aktiviert: Außenluft {{ outside_temp | round(1) }} °C kühler als
innen {{ inside_temp | round(1) }} °C, Bereich {{ bypass_min_aussen | round(1)
}} bis {{ bypass_max_aussen | round(1) }} °C erfüllt.
{% endif %}
{% elif bypass_force_aktiv | int(0) == 0 and bypass_helper_aktiv | int(0)
== 0 %}
Bypass deaktiviert: Bypass-Helfer und Force sind aus.
{% elif outside_temp | float(0) > bypass_max_aussen | float(23) %}
Bypass deaktiviert: Außentemperatur {{ outside_temp | round(1) }} °C über
Maximum {{ bypass_max_aussen | round(1) }} °C.
{% elif outside_temp | float(0) < bypass_min_aussen | float(5) %}
Bypass deaktiviert: Außentemperatur {{ outside_temp | round(1) }} °C unter
Minimum {{ bypass_min_aussen | round(1) }} °C.
{% elif inside_ok | int(0) == 0 %}
Bypass deaktiviert: Innentemperatur {{ inside_temp | round(1) }} °C unter
Mindestwert {{ bypass_min_innen | round(1) }} °C.
{% elif cooling_ok | int(0) == 0 %}
Bypass deaktiviert: Außenluft {{ outside_temp | round(1) }} °C ist nicht
mindestens 0,5 °C kühler als innen {{ inside_temp | round(1) }} °C.
{% elif bypass_force_aktiv | int(0) == 0 and heizventil_aktiv | int(0) ==
1 %}
Bypass deaktiviert: Heizventil ist aktiv.
{% else %}
Bypass deaktiviert: Bedingungen nicht erfüllt.
{% endif %}
- alias: "Bypass Force bei Bedarf zurücksetzen"
if:
- "{{ force_reset_needed | int(0) == 1 }}"
then:
- alias: "Force-Bypass ausschalten"
action: input_boolean.turn_off
target:
entity_id: input_boolean.bypass_force
- alias: "Lüftungsmodus entscheiden"
choose:
- conditions:
- condition: state
entity_id: binary_sensor.beschattung_hitzeschutz_noetig
state: "on"
sequence:
- alias: "Modus auf Nacht setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Nacht"
- alias: "HI-Modus ausschalten"
action: script.lueftung_hi_modus_setzen_package
data:
status: "Aus"
- alias: "Hitzeschutz ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Hitzeschutz aktiv: Nachtbetrieb gesetzt.{% if force_reset_needed | int(0)
== 1 %} Bypass Force wurde automatisch zurückgesetzt.{% endif %}
- conditions:
- condition: state
entity_id: timer.luftung_bad_timer
state: active
- condition: state
entity_id: binary_sensor.jemand_zuhause
state: "off"
sequence:
- alias: "Modus auf Tag setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Tag"
- alias: "HI-Dauer aus Helper setzen"
action: script.lueftung_hi_modus_setzen_package
data:
status: "{{ hi_dauer_bei_abwesenheit | trim }}"
- alias: "Bad-Timer Abwesenheit ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Bad-Timer aktiv: Tagbetrieb mit HI {{ hi_dauer_bei_abwesenheit | trim
}} bei Abwesenheit.{% if force_reset_needed | int(0) == 1 %} Bypass Force
wurde automatisch zurückgesetzt.{% endif %}
- conditions:
- condition: state
entity_id: timer.luftung_bad_timer
state: active
sequence:
- alias: "Modus auf Tag setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Tag"
- alias: "HI-Modus ausschalten"
action: script.lueftung_hi_modus_setzen_package
data:
status: "Aus"
- alias: "Bad-Timer Anwesenheit ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Bad-Timer aktiv: Tagbetrieb bei Anwesenheit.{% if force_reset_needed |
int(0) == 1 %} Bypass Force wurde automatisch zurückgesetzt.{% endif %}
- conditions:
- condition: state
entity_id: binary_sensor.jemand_zuhause
state: "off"
sequence:
- alias: "Modus auf Nacht setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Nacht"
- alias: "HI-Modus ausschalten"
action: script.lueftung_hi_modus_setzen_package
data:
status: "Aus"
- alias: "Abwesenheit ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Niemand zuhause: Nachtbetrieb gesetzt.{% if force_reset_needed | int(0)
== 1 %} Bypass Force wurde automatisch zurückgesetzt.{% endif %}
- conditions:
- "{{ day_window | int(0) == 0 }}"
sequence:
- alias: "Modus auf Nacht setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Nacht"
- alias: "HI-Modus ausschalten"
action: script.lueftung_hi_modus_setzen_package
data:
status: "Aus"
- alias: "Zeitfenster ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Außerhalb Zeitfenster: Nachtbetrieb gesetzt.{% if force_reset_needed |
int(0) == 1 %} Bypass Force wurde automatisch zurückgesetzt.{% endif %}
default:
- alias: "Modus auf Tag setzen"
action: script.lueftung_modus_setzen_package
data:
stufe: "Tag"
- alias: "HI-Modus ausschalten"
action: script.lueftung_hi_modus_setzen_package
data:
status: "Aus"
- alias: "Normalbetrieb ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Anwesenheit im Zeitfenster: Tagbetrieb gesetzt.{% if force_reset_needed
| int(0) == 1 %} Bypass Force wurde automatisch zurückgesetzt.{% endif %}
- alias: "Bypass entscheiden"
# Nur mit verfügbaren Temperatursensoren schalten (sensoren_ok),
# sonst wird die Entscheidung übersprungen und über die
# Recovery-Trigger nachgeholt.
choose:
- conditions:
- "{{ sensoren_ok | int(0) == 1 and bypass_soll_aktiv | int(0) == 1 and (bypass_ist_aktiv
| int(0) == 0 or bypass_tage_ist | int(0) != bypass_tage_soll | int(2)) }}"
sequence:
- alias: "Bypass aktivieren oder auf 2 Tage anheben"
action: script.lueftung_bypass_setzen_package
data:
aktiv: 1
tage: "{{ bypass_tage_soll | int(2) }}"
- alias: "Bypass-Aktivierung ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: "{{ bypass_log_message | trim }}"
- conditions:
- "{{ sensoren_ok | int(0) == 1 and bypass_soll_aktiv | int(0) == 0 and bypass_ist_aktiv
| int(0) == 1 }}"
sequence:
- alias: "Bypass deaktivieren"
action: script.lueftung_bypass_setzen_package
data:
aktiv: 0
tage: "{{ bypass_tage_soll | int(2) }}"
- alias: "Bypass-Deaktivierung ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: "{{ bypass_log_message | trim }}"
- id: lueftung_package_badfeuchte_timer
alias: "Lüftung: Badfeuchte Timer [Package]"
description: "Startet den Bad-Timer bei hoher Luftfeuchtigkeit."
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.badezimmer_wandthermostat_luftfeuchtigkeit
above: input_number.luftung_bad_feuchte_schwelle
conditions:
- condition: state
entity_id: input_boolean.luftung_automatik_aktiv
state: "on"
- condition: not
conditions:
- condition: state
entity_id: binary_sensor.beschattung_hitzeschutz_noetig
state: "on"
actions:
- alias: "Bad-Timer starten"
action: timer.start
target:
entity_id: timer.luftung_bad_timer
data:
duration: "{{ (states('input_number.luftung_bad_luftungsdauer') | float(1.5)
* 3600) | int }}"
- alias: "Bad-Timer Start ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: "Bad-Timer wurde wegen hoher Luftfeuchtigkeit gestartet."
- id: lueftung_package_frostschutz_abschaltung
alias: "Lüftung: Frostschutz Abschaltung [Package]"
description: "Schaltet die Lüftung bei Frost 20 Sekunden nach dem Einschalten wieder
aus."
mode: single
triggers:
# Bei Frost bleibt die Lüftung grundsätzlich aus.
# Ein manuelles Einschalten wird daher nach kurzer Zeit wieder beendet.
- trigger: state
entity_id: switch.luftung
to: "on"
for:
seconds: 20
conditions:
# Als Frostkriterium dient die kalibrierte Außentemperatur der Heizung.
- condition: numeric_state
entity_id: sensor.heizung_vaillant_aurocompact_outsidetemp_temp
below: 0
actions:
- alias: "Lüftung stromlos schalten"
action: switch.turn_off
target:
entity_id: switch.luftung
- alias: "Frostschutz ins Logbuch schreiben"
action: logbook.log
data:
name: "Lüftung [Package]"
message: >-
Frostschutz aktiv: Lüftung nach 20 Sekunden wieder ausgeschaltet. Außentemperatur
Heizung {{ states('sensor.heizung_vaillant_aurocompact_outsidetemp_temp')
| float(0) | round(1) }} °C.
mqtt:
sensor:
- name: "Intensivmodus Countdown"
unique_id: "ebusd_lueftung_vai00_hi_countdown"
icon: mdi:fan-speed-3
state_topic: "ebusd-lueftung/vai00/Lueftung_HI_Status"
value_template: "{{ value_json['0'].value }}"
unit_of_measurement: "min"
device:
identifiers: "vaillant_recovair_275"
name: "Vaillant recoVAIR 275/3"
model: "recoVAIR 275/3"
manufacturer: "Vaillant"
binary_sensor:
- name: "Lüftung Kühlung Status"
unique_id: "ebusd_lueftung_kuehlung_status"
state_topic: "ebusd-lueftung/vai00/Kuehlung"
value_template: >-
{% if value_json['0'].value == "EIN" %}
ON
{% else %}
OFF
{% endif %}
payload_on: "ON"
payload_off: "OFF"
device:
identifiers: "ebusd-lueftung"
name: "Vaillant recoVair 275/3"
model: "recoVair 275/3"
manufacturer: "Vaillant"
template:
- sensor:
- name: "Lüftung Filterstatus"
unique_id: luftung_filterstatus
icon: mdi:air-filter
state: >
{% set power = states('sensor.luftung_switch_0_power') | float(-1) %}
{% set modus = states('select.ebusd_lueftung_vai00_lueftungsstufe_status') %}
{% set intensiv = states('select.ebusd_lueftung_vai00_lueftung_hi_status') %}
{% if intensiv != 'Aus' %}
Intensivbetrieb
{% elif modus == 'Nacht' %}
{% set warn = states('input_number.luftung_schwelle_warnung_nacht') | float(20) %}
{% set krit = states('input_number.luftung_schwelle_kritisch_nacht') | float(28) %}
{% if power < 0 %}Unbekannt
{% elif power > krit %}Reinigung nötig
{% elif power > warn %}Prüfen
{% else %}OK{% endif %}
{% else %}
{% set warn = states('input_number.luftung_schwelle_warnung_tag') | float(50) %}
{% set krit = states('input_number.luftung_schwelle_kritisch_tag') | float(65) %}
{% if power < 0 %}Unbekannt
{% elif power > krit %}Reinigung nötig
{% elif power > warn %}Prüfen
{% else %}OK{% endif %}
{% endif %}
attributes:
leistung_aktuell: "{{ states('sensor.luftung_switch_0_power') | float(0) | round(1) }} W"
modus: "{{ states('select.ebusd_lueftung_vai00_lueftungsstufe_status') }}"
filter: "{{ states('input_select.luftung_filtertyp') }}"
- name: "Lüftungsmodus Anzeige"
unique_id: luftung_modus_anzeige
icon: mdi:fan-auto
state: "{{ states('select.ebusd_lueftung_vai00_lueftungsstufe_status') }}"
- triggers:
- trigger: mqtt
topic: "ebusd-lueftung/vai00/Lueftung_HI_Status"
sensor:
- name: "Intensivmodus Countdown"
unique_id: luftung_hi_countdown_v3
icon: mdi:fan-speed-3
unit_of_measurement: "min"
state: >
{% set val = trigger.payload_json['0'].value %}
{% if val == 'Aus' %}0{% else %}{{ val | int(0) }}{% endif %}
MQTT-Sensoren¶
Quelle in HA: /config/packages/lueftung.yaml
Live-Entity:
sensor.vaillant_recovair_275_3_intensivmodus_countdown- Plattform:
mqtt unique_id: ebusd_lueftung_vai00_hi_countdown
- name: "Intensivmodus Countdown"
unique_id: "ebusd_lueftung_vai00_hi_countdown"
icon: mdi:fan-speed-3
state_topic: "ebusd-lueftung/vai00/Lueftung_HI_Status"
value_template: "{{ value_json['0'].value }}"
unit_of_measurement: "min"
device:
identifiers: "vaillant_recovair_275"
name: "Vaillant recoVAIR 275/3"
model: "recoVAIR 275/3"
manufacturer: "Vaillant"
MQTT-Binary-Sensoren¶
Quelle in HA: /config/packages/lueftung.yaml
Live-Entity:
binary_sensor.vaillant_recovair_275_3_luftung_kuhlung_status- Plattform:
mqtt unique_id: ebusd_lueftung_kuehlung_status
# ===============================
# eBUSd Lueftung - Binary Sensoren
# ===============================
- name: "Lueftung Kuehlung Status"
unique_id: "ebusd_lueftung_kuehlung_status"
state_topic: "ebusd-lueftung/vai00/Kuehlung"
value_template: >-
{% if value_json['0'].value == "EIN" %}
ON
{% else %}
OFF
{% endif %}
payload_on: "ON"
payload_off: "OFF"
device:
identifiers: "ebusd-lueftung"
name: "Vaillant recoVair 275/3"
model: "recoVair 275/3"
manufacturer: "Vaillant"
Migrationshinweis¶
Die Lüftung hat aktive MQTT-Sensoren, aktive Template-Sensoren und die zugehörigen Automationen/Skripte in einem Paket. Die Sicherung enthält deshalb alle relevanten Blöcke in einer Datei:
mqtt.sensormqtt.binary_sensortemplatescriptautomation
Die früheren MQTT- und Template-Dateien aus custom/ sind im Wiki nur noch
historisch erwähnt. Die aktive Logik liegt im Package.