From 576b6fa98a22c0ab30afb7893d880792ecd9065f Mon Sep 17 00:00:00 2001 From: Pierre Eisenbrandt Date: Sun, 21 Dec 2025 13:44:08 +0100 Subject: [PATCH] use schedule entity and use active scheduler for determination of temp --- Climate/bosch_bth-ra_control.yaml | 38 +++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/Climate/bosch_bth-ra_control.yaml b/Climate/bosch_bth-ra_control.yaml index 2b29fd4..bcfe725 100644 --- a/Climate/bosch_bth-ra_control.yaml +++ b/Climate/bosch_bth-ra_control.yaml @@ -73,13 +73,27 @@ blueprint: input: radiator_schedules: name: Heizpläne - description: Alle Heizpläne die für den Radiator berücksichtigt werden sollen. Sind mehrere Schedules aktiv, wird der erste mit einem gültigen Slot verwendet. + description: Alle Heizpläne die für den Radiator berücksichtigt werden sollen. Sind mehrere Schedules aktiv, wird der erste mit einer gültigen Temperatur verwendet. default: [] selector: entity: multiple: true filter: - - domain: switch + - domain: schedule + + active_scheduler_selector: + name: Aktiver Scheduler Selector + description: > + Input Select der den aktuell aktiven Scheduler enthält (per Friendly Name). + Wird verwendet um zu bestimmen welcher Schedule für die Temperatur verwendet werden soll. + + **WICHTIG**: Die Options müssen die Friendly Names der Scheduler aus der Scheduler-Liste enthalten. + + Beispiel: Wird typischerweise vom "Heizplan Selector" Blueprint gesteuert. + selector: + entity: + filter: + - domain: input_select away_section: name: Konfiguration für Abwesenheitsmodus description: Konfiguration für das Absenken der Heizung im Abwesenheitsmodus eines Alarmsystems @@ -110,6 +124,7 @@ variables: temperature_sensor: !input temperature_sensor heating_period_switch: !input heating_period_switch radiator_schedules: !input radiator_schedules + active_scheduler_selector: !input active_scheduler_selector away_temperature: !input away_temperature alarm_control_panel: !input alarm_control_panel is_heating_period: > @@ -138,19 +153,18 @@ variables: {{ window_detection_entity_id.id }} scheduled_temperature: > {% set ns = namespace(current_temperature = none) %} - {% for schedule in radiator_schedules %} - {% if states(schedule) == 'on' and state_attr(schedule, 'current_slot') is not none %} - {% set current_slot = state_attr(schedule, 'current_slot') %} - {% set actions = state_attr(schedule, 'actions') %} - {% if actions is not none and actions | length > current_slot %} - {% set action = actions[current_slot] %} - {% if action.data.temperature is defined and action.data.temperature | is_number %} - {% set ns.current_temperature = action.data.temperature %} + {% set selected_friendly_name = states(active_scheduler_selector) %} + {% if selected_friendly_name is not none and selected_friendly_name != 'unknown' %} + {% for schedule in radiator_schedules %} + {% if state_attr(schedule, 'friendly_name') == selected_friendly_name and states(schedule) == 'on' %} + {% set temp = state_attr(schedule, 'temp') %} + {% if temp is not none and temp | is_number %} + {% set ns.current_temperature = temp %} {% break %} {% endif %} {% endif %} - {% endif %} - {% endfor %} + {% endfor %} + {% endif %} {{ ns.current_temperature }} target_temperature: > {% if alarm_control_panel and is_state(alarm_control_panel, 'armed_away') %}