diff --git a/Climate/bosch_bth-ra_control.yaml b/Climate/bosch_bth-ra_control.yaml index 8f0f9a6..a24ad8b 100644 --- a/Climate/bosch_bth-ra_control.yaml +++ b/Climate/bosch_bth-ra_control.yaml @@ -196,20 +196,9 @@ variables: alarm_control_panel: !input alarm_control_panel override_reset_duration: !input override_reset_duration is_heating_period: > - {% if heating_period_switch is none or heating_period_switch == '' %} - true - {% else %} - {{ is_state(heating_period_switch, 'on') }} - {% endif %} + {{ heating_period_switch in [none, ''] or is_state(heating_period_switch, 'on') }} remote_temperature_entity: > - {% set entities = device_entities(device_id(trv)) %} - {% set remote_temperature_entity_id = namespace(id='') %} - {% for entity in entities %} - {% if 'remote_temperature' in entity %} - {% set remote_temperature_entity_id.id = entity %} - {% endif %} - {% endfor %} - {{ remote_temperature_entity_id.id }} + {{ device_entities(device_id(trv)) | select('search', 'remote_temperature') | list | first | default('') }} current_remote_temperature: > {{ states(remote_temperature_entity) | float(0) if remote_temperature_entity and states(remote_temperature_entity) not in ['unknown', 'unavailable', none] else 0 }} @@ -217,23 +206,9 @@ variables: {{ as_datetime(states[remote_temperature_entity].last_changed) if remote_temperature_entity and states(remote_temperature_entity) not in ['unknown', 'unavailable', none] else none }} window_detection_entity: > - {% set entities = device_entities(device_id(trv)) %} - {% set window_detection_entity_id = namespace(id='') %} - {% for entity in entities %} - {% if 'window_detection' in entity %} - {% set window_detection_entity_id.id = entity %} - {% endif %} - {% endfor %} - {{ window_detection_entity_id.id }} + {{ device_entities(device_id(trv)) | select('search', 'window_detection') | list | first | default('') }} setpoint_change_source_entity: > - {% set entities = device_entities(device_id(trv)) %} - {% set setpoint_change_source_entity_id = namespace(id='') %} - {% for entity in entities %} - {% if 'setpoint_change_source' in entity %} - {% set setpoint_change_source_entity_id.id = entity %} - {% endif %} - {% endfor %} - {{ setpoint_change_source_entity_id.id }} + {{ device_entities(device_id(trv)) | select('search', 'setpoint_change_source') | list | first | default('') }} scheduled_temperature: > {% set ns = namespace(current_temperature = none) %} {% set selected_friendly_name = states(active_scheduler_selector) %} @@ -250,22 +225,9 @@ variables: {% endif %} {{ ns.current_temperature }} target_temperature: > - {% if alarm_control_panel and is_state(alarm_control_panel, 'armed_away') %} - {{ away_temperature }} - {% elif scheduled_temperature is not none %} - {{ scheduled_temperature }} - {% else %} - {{ away_temperature }} - {% endif %} + {{ scheduled_temperature if scheduled_temperature != none and not (alarm_control_panel and is_state(alarm_control_panel, 'armed_away')) else away_temperature }} safe_temperature: > - {% set temp = target_temperature | float(18) %} - {% if temp < min_temperature %} - {{ min_temperature }} - {% elif temp > max_temperature %} - {{ max_temperature }} - {% else %} - {{ temp }} - {% endif %} + {{ [min_temperature, [max_temperature, target_temperature | float(18)] | min] | max }} is_valid_temperature: > {{ safe_temperature is not none and safe_temperature | is_number }} is_temperature_change_needed: > @@ -284,15 +246,9 @@ variables: false {% endif %} scheduler_mismatch: > - {% set selected_friendly_name = states(active_scheduler_selector) %} - {% if selected_friendly_name not in ['unknown', '', none] %} - {% set found = namespace(value=false) %} - {% for schedule in radiator_schedules %} - {% if state_attr(schedule, 'friendly_name') == selected_friendly_name %} - {% set found.value = true %} - {% endif %} - {% endfor %} - {{ not found.value }} + {% set selected = states(active_scheduler_selector) %} + {{ selected not in ['unknown', '', none] and + selected not in radiator_schedules | map(attribute='attributes.friendly_name') | list }} {% else %} false {% endif %}