blueprint.yaml aktualisiert
This commit is contained in:
parent
4579b7fc09
commit
9b7966dd1c
1 changed files with 51 additions and 127 deletions
178
blueprint.yaml
178
blueprint.yaml
|
|
@ -1,175 +1,99 @@
|
|||
blueprint:
|
||||
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:
|
||||
name: Better Thermostat Entity
|
||||
description: Die BT Entität (muss Fenstersensoren in BT konfiguriert haben!)
|
||||
selector:
|
||||
entity:
|
||||
domain: climate
|
||||
integration: better_thermostat
|
||||
schedule_entity:
|
||||
name: Heizzeitplan Schedule
|
||||
selector:
|
||||
entity:
|
||||
domain: schedule
|
||||
vacation_helper:
|
||||
name: Urlaubsmodus Helper
|
||||
selector:
|
||||
entity:
|
||||
domain: input_boolean
|
||||
weather_entity:
|
||||
name: Wettervorhersage
|
||||
selector:
|
||||
entity:
|
||||
domain: weather
|
||||
summer_temp_threshold:
|
||||
name: Sommer-Schwellwert (°C)
|
||||
description: Ab hier wird die Heizung komplett ausgeschaltet.
|
||||
default: 22
|
||||
selector:
|
||||
number:
|
||||
min: 15
|
||||
max: 30
|
||||
step: 1
|
||||
winter_temp_threshold:
|
||||
name: Winter-Schwellwert (°C)
|
||||
description: Unter dieser Temp wird der Komfort-Modus erlaubt (wenn Schedule an ist).
|
||||
default: 18
|
||||
selector:
|
||||
number:
|
||||
min: 10
|
||||
max: 25
|
||||
step: 1
|
||||
eco_temp:
|
||||
name: Eco Temperatur (°C)
|
||||
description: Standard-Temperatur (Übergangszeit, Nachts, Abwesend)
|
||||
default: 17
|
||||
selector:
|
||||
number:
|
||||
min: 10
|
||||
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:
|
||||
min: 18
|
||||
max: 24
|
||||
step: 0.5
|
||||
|
||||
trigger:
|
||||
alias: Klima BT Wohnzimmer
|
||||
description: "Steuerung mit Fenster-Logik, Sommer/Winter und Zeitplan"
|
||||
mode: restart
|
||||
max: 10
|
||||
triggers:
|
||||
- platform: state
|
||||
entity_id: !input schedule_entity
|
||||
entity_id: schedule.heizzeitplan_wohnzimmer
|
||||
- platform: state
|
||||
entity_id: !input vacation_helper
|
||||
entity_id: input_boolean.urlaubsmodus_heizunh # Prüfe, ob "heizunh" wirklich stimmt!
|
||||
- platform: state
|
||||
entity_id: !input weather_entity
|
||||
entity_id: weather.schleswig
|
||||
attribute: temperature
|
||||
- platform: time_pattern
|
||||
minutes: "/30"
|
||||
# Sofort reagieren, wenn Fenster zugeht
|
||||
minutes: /30
|
||||
- platform: state
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
attribute: window_open
|
||||
|
||||
condition: []
|
||||
|
||||
action:
|
||||
actions:
|
||||
- variables:
|
||||
bt_entity: !input better_thermostat_entity
|
||||
weather_entity: !input weather_entity
|
||||
schedule_entity: !input schedule_entity
|
||||
vacation_entity: !input vacation_helper
|
||||
summer_threshold: !input summer_temp_threshold
|
||||
winter_threshold: !input winter_temp_threshold
|
||||
eco_temperature: !input eco_temp
|
||||
comfort_temperature: !input comfort_temp
|
||||
|
||||
bt_entity: climate.klima_bt_wohnzimmer
|
||||
weather_entity: weather.schleswig
|
||||
schedule_entity: schedule.heizzeitplan_wohnzimmer
|
||||
vacation_entity: input_boolean.urlaubsmodus_heizunh
|
||||
summer_threshold: 18
|
||||
winter_threshold: 18
|
||||
eco_temperature: 18
|
||||
comfort_temperature: 20.5
|
||||
- variables:
|
||||
weather_temp: '{{ state_attr(weather_entity, "temperature") | float(15) }}'
|
||||
is_window_open: '{{ state_attr(bt_entity, "window_open") | bool(false) }}'
|
||||
|
||||
# Logik-Definitionen
|
||||
weather_temp: "{{ state_attr(weather_entity, 'temperature') | float(15) }}"
|
||||
is_window_open: "{{ state_attr(bt_entity, 'window_open') | bool(false) }}"
|
||||
is_summer: "{{ weather_temp > summer_threshold }}"
|
||||
is_winter_mode: "{{ weather_temp < winter_threshold }}"
|
||||
# Winter-Definition hier für die Variable, aber im Choose nutzen wir den Default
|
||||
is_heating_season: "{{ weather_temp < winter_threshold }}"
|
||||
is_vacation: "{{ states(vacation_entity) == 'on' }}"
|
||||
schedule_active: "{{ states(schedule_entity) == 'on' }}"
|
||||
|
||||
|
||||
- choose:
|
||||
# 0. NOTBREMSE: Fenster offen
|
||||
# Wenn Fenster offen, brechen wir ab. BT regelt das "Aus".
|
||||
# Wir verhindern nur, dass die Automation die Heizung wieder anmacht.
|
||||
# 1. FENSTER OFFEN -> STOP
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_window_open }}"
|
||||
sequence:
|
||||
- stop: "Fenster offen - Automation übergibt an Better Thermostat."
|
||||
|
||||
# 1. SOMMER: Heizung ganz aus
|
||||
- stop: "Fenster ist offen - Automation bricht ab und lässt BT die Kontrolle."
|
||||
|
||||
# 2. SOMMER -> AUS
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_summer }}"
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
- action: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
hvac_mode: "off"
|
||||
|
||||
# 2. URLAUB: Immer Eco
|
||||
# 3. URLAUB -> ECO
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_vacation }}"
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
- action: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
hvac_mode: "heat"
|
||||
- service: climate.set_temperature
|
||||
hvac_mode: heat
|
||||
- action: climate.set_temperature
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
temperature: "{{ eco_temperature }}"
|
||||
|
||||
# 3. WINTER & ZEITPLAN: Komfort
|
||||
# Nur wenn es wirklich kalt ist (unter Winter-Schwelle) UND der Zeitplan an ist
|
||||
# 4. WINTER + SCHEDULE -> KOMFORT
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_winter_mode and schedule_active }}"
|
||||
value_template: "{{ is_heating_season and schedule_active }}"
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
- action: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
hvac_mode: "heat"
|
||||
- service: climate.set_temperature
|
||||
hvac_mode: heat
|
||||
- action: climate.set_temperature
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
temperature: "{{ comfort_temperature }}"
|
||||
|
||||
# 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
|
||||
|
||||
# 5. DEFAULT (Alles andere: Winter ohne Schedule, genau 18 Grad, etc.) -> ECO
|
||||
default:
|
||||
- service: climate.set_hvac_mode
|
||||
- action: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
hvac_mode: "heat"
|
||||
- service: climate.set_temperature
|
||||
hvac_mode: heat
|
||||
- action: climate.set_temperature
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
entity_id: climate.klima_bt_wohnzimmer
|
||||
data:
|
||||
temperature: "{{ eco_temperature }}"
|
||||
|
||||
mode: restart
|
||||
max: 10
|
||||
temperature: "{{ eco_temperature }}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue