From d3beca60b683596ab8a3e93e333200c9ad15c62e Mon Sep 17 00:00:00 2001 From: Pierre Eisenbrandt Date: Sun, 21 Dec 2025 18:28:21 +0100 Subject: [PATCH] limit temps --- Climate/bosch_bth-ra_control.yaml | 61 +++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/Climate/bosch_bth-ra_control.yaml b/Climate/bosch_bth-ra_control.yaml index 3112209..e5166ef 100644 --- a/Climate/bosch_bth-ra_control.yaml +++ b/Climate/bosch_bth-ra_control.yaml @@ -33,6 +33,28 @@ blueprint: multiple: false filter: - domain: input_boolean + min_temperature: + name: Minimale Temperatur + description: Minimale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 15°C) + default: 15 + selector: + number: + mode: box + min: 10.0 + max: 20.0 + unit_of_measurement: "°C" + step: 0.5 + max_temperature: + name: Maximale Temperatur + description: Maximale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 28°C) + default: 23 + selector: + number: + mode: box + min: 20.0 + max: 25.0 + unit_of_measurement: "°C" + step: 0.5 window_section: name: Fenster-/Türsensor Konfiguration description: Konfiguration für den Fenster-/Türsensor. @@ -130,6 +152,8 @@ variables: radiator_schedules: !input radiator_schedules active_scheduler_selector: !input active_scheduler_selector away_temperature: !input away_temperature + min_temperature: !input min_temperature + max_temperature: !input max_temperature alarm_control_panel: !input alarm_control_panel is_heating_period: > {% if heating_period_switch is none or heating_period_switch == '' %} @@ -178,8 +202,28 @@ variables: {% else %} {{ away_temperature }} {% endif %} + safe_temperature: > + {% set temp = target_temperature | float(18) %} + {% if temp < min_temperature %} + {{ min_temperature }} + {% elif temp > max_temperature %} + {{ max_temperature }} + {% else %} + {{ temp }} + {% endif %} is_valid_temperature: > - {{ target_temperature is not none and target_temperature | is_number }} + {{ safe_temperature is not none and safe_temperature | is_number }} + is_temperature_change_needed: > + {% set current = state_attr(trv, 'temperature') | float(0) %} + {% set new = safe_temperature | float(0) %} + {% set diff = new - current %} + {% if new > current %} + true + {% elif diff | abs >= 0.5 %} + true + {% else %} + false + {% endif %} scheduler_mismatch: > {% set selected_friendly_name = states(active_scheduler_selector) %} {% if selected_friendly_name not in ['unknown', '', none] %} @@ -272,13 +316,13 @@ actions: - if: - condition: template value_template: > - {{ is_valid_temperature }} + {{ is_valid_temperature and is_temperature_change_needed }} then: - service: climate.set_temperature target: entity_id: !input trv data: - temperature: "{{ target_temperature | float }}" + temperature: "{{ safe_temperature | float }}" alias: Heizperiode aktiviert - Setze Modus auf heat, synchronisiere Fensterstatus und Solltemperatur - conditions: - condition: trigger @@ -329,13 +373,13 @@ actions: - if: - condition: template value_template: > - {{ is_valid_temperature }} + {{ is_valid_temperature and is_temperature_change_needed }} then: - service: climate.set_temperature target: entity_id: !input trv data: - temperature: "{{ target_temperature | float }}" + temperature: "{{ safe_temperature | float }}" alias: Setze Fenster auf geschlossen und setze Solltemperatur auf Wert aus Zeitplan (wenn vorhanden) alias: Fensterstatus Änderung # temperature sensor sync @@ -393,13 +437,13 @@ actions: - if: - condition: template value_template: > - {{ is_valid_temperature }} + {{ is_valid_temperature and is_temperature_change_needed }} then: - service: climate.set_temperature target: entity_id: !input trv data: - temperature: "{{ target_temperature | float }}" + temperature: "{{ safe_temperature | float }}" # Notification bei Scheduler-Mismatch - if: - condition: template @@ -412,7 +456,8 @@ actions: Der ausgewählte Scheduler '{{ states(active_scheduler_selector) }}' wurde nicht in der Scheduler-Liste gefunden. - TRV '{{ state_attr(trv, 'friendly_name') }}' nutzt Fallback-Temperatur: {{ away_temperature }}°C + TRV '{{ state_attr(trv, 'friendly_name') }}' nutzt Fallback-Temperatur: {{ safe_temperature }}°C + (Original: {{ target_temperature }}°C, Limits: {{ min_temperature }}-{{ max_temperature }}°C) Bitte Konfiguration überprüfen. notification_id: "radiator_control_scheduler_mismatch_{{ trv }}"