diff --git a/blueprint.yaml b/blueprint.yaml index 826a2c1..ef615b8 100644 --- a/blueprint.yaml +++ b/blueprint.yaml @@ -17,11 +17,10 @@ blueprint: domain: schedule presence_entity: name: Anwesenheit (optional) - description: Optional - leer lassen für immer present. z.B. binary_sensor.presence + description: Leer lassen für immer present selector: entity: domain: binary_sensor - multiple: false default: {} vacation_helper: name: Urlaubsmodus Helper @@ -37,16 +36,14 @@ blueprint: domain: weather summer_temp_threshold: name: Sommer-Schwellwert - description: Wenn Vorhersage > X °C, Sommer-Modus (off) default: 25 selector: number: - min: 20 - max: 35 + min: 18 + max: 50 step: 1 winter_temp_threshold: name: Winter-Schwellwert - description: Wenn Vorhersage < X °C, Winter-Modus (heat) default: 10 selector: number: @@ -54,7 +51,7 @@ blueprint: max: 20 step: 1 eco_temp: - name: Eco Temp (Abwesenheit/Urlaub) + name: Eco Temp default: 15 selector: number: @@ -62,7 +59,7 @@ blueprint: max: 18 step: 0.5 comfort_temp: - name: Komfort Temp (Schedule) + name: Komfort Temp default: 21 selector: number: @@ -79,82 +76,27 @@ trigger: entity_id: !input vacation_helper - platform: state entity_id: !input presence_entity - - platform: numeric_state + - platform: state entity_id: !input weather_entity - attribute: temperature - above: !input summer_temp_threshold - - platform: numeric_state - entity_id: !input weather_entity - attribute: temperature - below: !input winter_temp_threshold condition: [] action: - variables: - weather_temp: "{{ state_attr(!input weather_entity, 'forecast')[0].temperature }}" - is_summer: "{{ weather_temp > !input summer_temp_threshold }}" - is_winter: "{{ weather_temp < !input winter_temp_threshold }}" - is_vacation: "{{ is_state(!input vacation_helper, 'on') }}" - is_present: >- - {%- if !input presence_entity or !input presence_entity == '' -%} - true - {%- else -%} - {{ is_state(!input presence_entity, 'on') }} - {%- endif -%} - schedule_active: "{{ is_state(!input schedule_entity, 'on') }}" + 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: "{{ p == '' or p == 'unavailable' or p == 'on' }}" + schedule_active: "{{ states(''' + '''!input schedule_entity) == 'on' }}" - choose: - # Sommer-Modus - conditions: - - condition: template - value_template: "{{ is_summer }}" + - "{{ is_summer }}" sequence: - service: climate.set_hvac_mode target: entity_id: !input better_thermostat_entity data: - hvac_mode: "off" - # Urlaub - - conditions: - - condition: template - value_template: "{{ is_vacation }}" - sequence: - - service: better_thermostat.set_temp_target_temperature - target: - entity_id: !input better_thermostat_entity - data: - temp: !input eco_temp - # Abwesenheit Eco - - conditions: - - condition: template - value_template: "{{ not is_present and not is_vacation }}" - sequence: - - service: better_thermostat.set_temp_target_temperature - target: - entity_id: !input better_thermostat_entity - data: - temp: !input eco_temp - # Winter + Schedule Komfort - - conditions: - - condition: template - value_template: "{{ is_winter and schedule_active }}" - sequence: - - service: better_thermostat.set_temp_target_temperature - target: - entity_id: !input better_thermostat_entity - data: - temp: !input comfort_temp - # Default Winter heat - - conditions: - - condition: template - value_template: "{{ is_winter }}" - sequence: - - service: climate.set_hvac_mode - target: - entity_id: !input better_thermostat_entity - data: - hvac_mode: "heat" - default: [] - -mode: queued -max: 10 + hvac_mode