BetterHeating_nocci/blueprint.yaml

108 lines
3.1 KiB
YAML

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.
domain: automation
input:
better_thermostat_entity:
name: Better Thermostat Entity
description: z.B. climate.wohnzimmer_bt
selector:
entity:
domain: climate
schedule_entity:
name: Heizzeitplan Schedule
description: z.B. schedule.heizzeitplan_wohnzimmer
selector:
entity:
domain: schedule
presence_entity:
name: Anwesenheit (optional)
description: Leer lassen für immer present
selector:
entity:
domain: binary_sensor
default: {}
vacation_helper:
name: Urlaubsmodus Helper
description: input_boolean.urlaub
selector:
entity:
domain: input_boolean
weather_entity:
name: Wettervorhersage
description: z.B. weather.openweathermap
selector:
entity:
domain: weather
summer_temp_threshold:
name: Sommer-Schwellwert
default: 25
selector:
number:
min: 18
max: 50
step: 1
winter_temp_threshold:
name: Winter-Schwellwert
default: 10
selector:
number:
min: 0
max: 20
step: 1
eco_temp:
name: Eco Temp
default: 15
selector:
number:
min: 10
max: 18
step: 0.5
comfort_temp:
name: Komfort Temp
default: 21
selector:
number:
min: 18
max: 24
step: 0.5
trigger:
- platform: state
entity_id: !input better_thermostat_entity
- platform: state
entity_id: !input schedule_entity
- platform: state
entity_id: !input vacation_helper
- platform: state
entity_id: !input presence_entity
- platform: state
entity_id: !input weather_entity
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' }}"
- choose:
- conditions:
- "{{ is_summer }}"
sequence:
- service: climate.set_hvac_mode
target:
entity_id: !input better_thermostat_entity
data:
hvac_mode