blueprint.yaml aktualisiert
This commit is contained in:
parent
40b4f655fb
commit
7bfab3d132
1 changed files with 110 additions and 26 deletions
136
blueprint.yaml
136
blueprint.yaml
|
|
@ -1,6 +1,6 @@
|
|||
blueprint:
|
||||
name: Custom Better Thermostat Multi-Mode Controller
|
||||
description: Steuert Better Thermostat mit Sommer/Winter (Wetterbasiert), tägliche Schedule, Anwesenheit (optional) und Urlaubs-Button. Für Homematic IP + SHT31.
|
||||
name: Better Thermostat Multi-Mode Controller
|
||||
description: Steuert Better Thermostat mit Sommer/Winter (Wetterbasiert), tägliche Schedule, Anwesenheit (optional) und Urlaubs-Button
|
||||
domain: automation
|
||||
input:
|
||||
better_thermostat_entity:
|
||||
|
|
@ -17,14 +17,14 @@ blueprint:
|
|||
domain: schedule
|
||||
presence_entity:
|
||||
name: Anwesenheit (optional)
|
||||
description: Leer lassen für immer present
|
||||
description: Leer lassen für immer anwesend
|
||||
default: ""
|
||||
selector:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
default: {}
|
||||
vacation_helper:
|
||||
name: Urlaubsmodus Helper
|
||||
description: input_boolean.urlaub
|
||||
description: input_boolean für Urlaub
|
||||
selector:
|
||||
entity:
|
||||
domain: input_boolean
|
||||
|
|
@ -36,40 +36,46 @@ blueprint:
|
|||
domain: weather
|
||||
summer_temp_threshold:
|
||||
name: Sommer-Schwellwert
|
||||
description: Wenn Vorhersage über dieser Temp, Heizung aus
|
||||
default: 25
|
||||
selector:
|
||||
number:
|
||||
min: 18
|
||||
min: 16
|
||||
max: 50
|
||||
step: 1
|
||||
unit_of_measurement: "°C"
|
||||
winter_temp_threshold:
|
||||
name: Winter-Schwellwert
|
||||
description: Wenn Vorhersage unter dieser Temp, Winter-Modus
|
||||
default: 10
|
||||
selector:
|
||||
number:
|
||||
min: 0
|
||||
max: 20
|
||||
step: 1
|
||||
unit_of_measurement: "°C"
|
||||
eco_temp:
|
||||
name: Eco Temp
|
||||
name: Eco Temperatur
|
||||
description: Temperatur bei Abwesenheit/Urlaub
|
||||
default: 15
|
||||
selector:
|
||||
number:
|
||||
min: 10
|
||||
max: 18
|
||||
step: 0.5
|
||||
unit_of_measurement: "°C"
|
||||
comfort_temp:
|
||||
name: Komfort Temp
|
||||
name: Komfort Temperatur
|
||||
description: Temperatur wenn Schedule aktiv
|
||||
default: 21
|
||||
selector:
|
||||
number:
|
||||
min: 18
|
||||
max: 24
|
||||
step: 0.5
|
||||
unit_of_measurement: "°C"
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: !input better_thermostat_entity
|
||||
- platform: state
|
||||
entity_id: !input schedule_entity
|
||||
- platform: state
|
||||
|
|
@ -78,31 +84,109 @@ trigger:
|
|||
entity_id: !input presence_entity
|
||||
- platform: state
|
||||
entity_id: !input weather_entity
|
||||
- platform: time_pattern
|
||||
minutes: "/30"
|
||||
|
||||
condition: []
|
||||
|
||||
action:
|
||||
- variables:
|
||||
we: "{{ states(''' + '''!input weather_entity) }}"
|
||||
wt: "{{ state_attr(we, 'forecast')[0].temperature if state_attr(we, 'forecast') and state_attr(we, 'forecast')|length > 0 else 0 }}"
|
||||
is_summer: "{{ wt | float(0) > [blueprint_input.summer_temp_threshold] | float(25) }}"
|
||||
is_winter: "{{ wt | float(0) < [blueprint_input.winter_temp_threshold] | float(10) }}"
|
||||
is_vacation: "{{ states(''' + '''!input vacation_helper) == 'on' }}"
|
||||
p: "{{ states(''' + '''!input presence_entity) }}"
|
||||
is_present: >-
|
||||
{%- set p = states('!input presence_entity') -%}
|
||||
{%- if p == 'unknown' or p == 'unavailable' or !input presence_entity == '' -%}
|
||||
true
|
||||
{%- else -%}
|
||||
{{ p == 'on' }}
|
||||
{%- endif -%}
|
||||
schedule_active: "{{ states(''' + '''!input schedule_entity) == 'on' }}"
|
||||
weather_entity: !input weather_entity
|
||||
schedule_entity: !input schedule_entity
|
||||
vacation_entity: !input vacation_helper
|
||||
presence_entity: !input presence_entity
|
||||
summer_threshold: !input summer_temp_threshold
|
||||
winter_threshold: !input winter_temp_threshold
|
||||
eco_temperature: !input eco_temp
|
||||
comfort_temperature: !input comfort_temp
|
||||
|
||||
- variables:
|
||||
forecast: "{{ state_attr(weather_entity, 'forecast') }}"
|
||||
weather_temp: "{{ forecast[0].temperature if forecast and forecast|length > 0 else 15 }}"
|
||||
is_summer: "{{ weather_temp | float(15) > summer_threshold | float(25) }}"
|
||||
is_winter: "{{ weather_temp | float(15) < winter_threshold | float(10) }}"
|
||||
is_vacation: "{{ states(vacation_entity) == 'on' }}"
|
||||
presence_state: "{{ states(presence_entity) if presence_entity != '' else 'on' }}"
|
||||
is_present: "{{ presence_state in ['on', 'home', 'unknown', 'unavailable'] }}"
|
||||
schedule_active: "{{ states(schedule_entity) == 'on' }}"
|
||||
|
||||
- choose:
|
||||
# Priorität 1: Sommer-Modus (Heizung aus)
|
||||
- conditions:
|
||||
- "{{ is_summer }}"
|
||||
- condition: template
|
||||
value_template: "{{ is_summer }}"
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: !input better_thermostat_entity
|
||||
data:
|
||||
hvac_mode
|
||||
hvac_mode: "off"
|
||||
|
||||
# Priorität 2: Urlaubsmodus (Eco)
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_vacation }}"
|
||||
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 }}"
|
||||
|
||||
# Priorität 3: Abwesenheit (Eco)
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ not is_present and not is_vacation }}"
|
||||
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 }}"
|
||||
|
||||
# Priorität 4: Winter + Schedule aktiv (Komfort)
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_winter and schedule_active and is_present }}"
|
||||
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: "{{ comfort_temperature }}"
|
||||
|
||||
# Priorität 5: Winter ohne Schedule (reduzierte Temp)
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_winter and not schedule_active and is_present }}"
|
||||
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 + 2 }}"
|
||||
|
||||
default: []
|
||||
|
||||
mode: queued
|
||||
max: 10
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue