From 4579b7fc096b598f8815c917efe3cb18566e70fc Mon Sep 17 00:00:00 2001 From: nocci Date: Fri, 16 Jan 2026 11:19:31 +0100 Subject: [PATCH] blueprint.yaml aktualisiert --- blueprint.yaml | 72 ++++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/blueprint.yaml b/blueprint.yaml index 622d545..ad17464 100644 --- a/blueprint.yaml +++ b/blueprint.yaml @@ -1,6 +1,6 @@ blueprint: - name: Better Thermostat Multi-Mode Controller (Window Aware) - description: Steuert Better Thermostat mit Fenster-Check, Sommer/Winter, Schedule und Urlaub. + name: Better Thermostat Controller (Window + Deadzone Fix) + description: Steuert BT. Logik: Fenster offen > Sommer (Aus) > Urlaub (Eco) > Winter+Schedule (Komfort) > SONST IMMER ECO. domain: automation input: better_thermostat_entity: @@ -27,6 +27,7 @@ blueprint: domain: weather summer_temp_threshold: name: Sommer-Schwellwert (°C) + description: Ab hier wird die Heizung komplett ausgeschaltet. default: 22 selector: number: @@ -35,7 +36,7 @@ blueprint: step: 1 winter_temp_threshold: name: Winter-Schwellwert (°C) - description: Unter dieser Temp wird geheizt. + description: Unter dieser Temp wird der Komfort-Modus erlaubt (wenn Schedule an ist). default: 18 selector: number: @@ -44,14 +45,16 @@ blueprint: step: 1 eco_temp: name: Eco Temperatur (°C) - default: 16 + description: Standard-Temperatur (Übergangszeit, Nachts, Abwesend) + default: 17 selector: number: min: 10 - max: 18 + max: 20 step: 0.5 comfort_temp: name: Komfort Temperatur (°C) + description: Temperatur wenn es kalt ist UND Schedule aktiv ist. default: 21 selector: number: @@ -66,10 +69,10 @@ trigger: entity_id: !input vacation_helper - platform: state entity_id: !input weather_entity - attribute: temperature # Nur triggern, wenn sich die Temperatur ändert, nicht bei jedem Wetter-Update + attribute: temperature - platform: time_pattern minutes: "/30" - # Wir triggern auch, wenn BT sich ändert (z.B. Fenster geht zu), um sofort wieder zu heizen + # Sofort reagieren, wenn Fenster zugeht - platform: state entity_id: !input better_thermostat_entity attribute: window_open @@ -89,24 +92,25 @@ action: - variables: weather_temp: '{{ state_attr(weather_entity, "temperature") | float(15) }}' - # Prüfen, ob BT sagt, dass ein Fenster offen ist is_window_open: '{{ state_attr(bt_entity, "window_open") | bool(false) }}' + + # Logik-Definitionen is_summer: "{{ weather_temp > summer_threshold }}" - # Winter ist alles, was NICHT Sommer ist (um Lücken zu vermeiden), oder explizit definiert - is_heating_season: "{{ weather_temp < winter_threshold }}" + is_winter_mode: "{{ weather_temp < winter_threshold }}" is_vacation: "{{ states(vacation_entity) == 'on' }}" schedule_active: "{{ states(schedule_entity) == 'on' }}" - choose: - # Priorität 0: FENSTER OFFEN -> Sofort Stop, nichts tun. - # Better Thermostat kümmert sich um das Abschalten. Wir verhindern nur das Anschalten. + # 0. NOTBREMSE: Fenster offen + # Wenn Fenster offen, brechen wir ab. BT regelt das "Aus". + # Wir verhindern nur, dass die Automation die Heizung wieder anmacht. - conditions: - condition: template value_template: "{{ is_window_open }}" sequence: - - stop: "Fenster ist offen - Automation bricht ab und lässt BT die Kontrolle." + - stop: "Fenster offen - Automation übergibt an Better Thermostat." - # Priorität 1: Sommer-Modus (Heizung aus) + # 1. SOMMER: Heizung ganz aus - conditions: - condition: template value_template: "{{ is_summer }}" @@ -117,7 +121,7 @@ action: data: hvac_mode: "off" - # Priorität 2: Urlaubsmodus (Eco) + # 2. URLAUB: Immer Eco - conditions: - condition: template value_template: "{{ is_vacation }}" @@ -133,10 +137,11 @@ action: data: temperature: "{{ eco_temperature }}" - # Priorität 3: Heizsaison + Schedule aktiv (Komfort) + # 3. WINTER & ZEITPLAN: Komfort + # Nur wenn es wirklich kalt ist (unter Winter-Schwelle) UND der Zeitplan an ist - conditions: - condition: template - value_template: "{{ is_heating_season and schedule_active }}" + value_template: "{{ is_winter_mode and schedule_active }}" sequence: - service: climate.set_hvac_mode target: @@ -149,23 +154,22 @@ action: data: temperature: "{{ comfort_temperature }}" - # Priorität 4: Heizsaison ohne Schedule (Absenkung) - - conditions: - - condition: template - value_template: "{{ is_heating_season and not schedule_active }}" - sequence: - - service: climate.set_hvac_mode - target: - entity_id: !input better_thermostat_entity - data: - hvac_mode: "heat" - - service: climate.set_temperature - target: - entity_id: !input better_thermostat_entity - data: - temperature: "{{ eco_temperature }}" - # Habe "+ 2" entfernt, da es unklar war. Lieber "Eco" nehmen oder eine eigene Variable "Comfort_Eco" einführen. + # 4. DEFAULT / FALLBACK (Die ehemalige Todeszone + Nachts) + # Wenn KEINE der oberen Bedingungen zutrifft (also weder Sommer, noch Urlaub, noch Kalter-Komfort), + # dann greift dieser Block. Das deckt ab: + # - Winter + Nachts (Schedule aus) + # - Übergangszeit (Todeszone) egal ob Schedule an oder aus + default: + - service: climate.set_hvac_mode + target: + entity_id: !input better_thermostat_entity + data: + hvac_mode: "heat" + - service: climate.set_temperature + target: + entity_id: !input better_thermostat_entity + data: + temperature: "{{ eco_temperature }}" - default: [] mode: restart max: 10 \ No newline at end of file