From f0eb9a8c25df935840ec5ed0df32d1b3664235a0 Mon Sep 17 00:00:00 2001 From: Pierre Eisenbrandt Date: Sat, 6 Dec 2025 12:42:40 +0100 Subject: [PATCH] refactoring: use sections and use choose instead of if --- Climate/bosch_bth-ra_control_dev.yaml | 194 ++++++++++++++------------ 1 file changed, 106 insertions(+), 88 deletions(-) diff --git a/Climate/bosch_bth-ra_control_dev.yaml b/Climate/bosch_bth-ra_control_dev.yaml index d246ad6..95a56b7 100644 --- a/Climate/bosch_bth-ra_control_dev.yaml +++ b/Climate/bosch_bth-ra_control_dev.yaml @@ -6,59 +6,77 @@ blueprint: domain: automation author: Me input: - radiator_entity: - name: Thermostat - description: Thermostat muss ein Bosch BTH-RA sein - selector: - entity: - multiple: false - filter: - - domain: climate - window_sensor: - name: Fenster-/Türsensor (oder Gruppe) - selector: - entity: - multiple: false - filter: - - domain: binary_sensor - window_delay_open: - name: Fenster-/Türsensor Verzögerung - description: Zeit die das Fenster offen bleiben muss, um die den Radiator in den "Fenster offen"-Modus zu versetzen (Default = 30s) - default: 30 - selector: - number: - mode: box - min: 0.0 - max: 3600.0 - unit_of_measurement: seconds - step: 1.0 - window_delay_close: - name: Fenster-/Türsensor Verzögerung - description: Zeit die das Fenster geschlossen bleiben muss, um die den Radiator in den "Fenster geschlossen"-Modus zu versetzen (Default = 5s) - default: 5 - selector: - number: - mode: box - min: 0.0 - max: 3600.0 - unit_of_measurement: seconds - step: 1.0 - temperature_sensor: - name: Temperatursensor - selector: - entity: - multiple: false - filter: - - domain: sensor - device_class: temperature - radiator_schedules: - name: Heizpläne - description: Alle Heizpläne die für den Radiator berücksichtigt werden sollen - selector: - entity: - multiple: true - filter: - - domain: switch + radiator_section: + name: Radiator Konfiguration + description: Konfiguration für den Bosch BTH-RA Radiator + collapsed: false + input: + radiator_entity: + name: Thermostat + description: Thermostat muss ein Bosch BTH-RA sein + selector: + device: + multiple: false + filter: + - domain: climate + - integration: MQTT + - manufacturer: Bosch + - model_id: BTH-RA + window_section: + name: Fenster-/Türsensor Konfiguration + description: Konfiguration für den Fenster-/Türsensor. + collapsed: true + input: + window_sensor: + name: Fenster-/Türsensor (oder Gruppe) + selector: + entity: + multiple: false + filter: + - domain: binary_sensor + window_delay_open: + name: Fenster-/Türsensor Verzögerung + description: Zeit die das Fenster offen bleiben muss, um die den Radiator in den "Fenster offen"-Modus zu versetzen (Default = 30s) + default: 30 + selector: + number: + mode: box + min: 0.0 + max: 3600.0 + unit_of_measurement: seconds + step: 1.0 + window_delay_close: + name: Fenster-/Türsensor Verzögerung + description: Zeit die das Fenster geschlossen bleiben muss, um die den Radiator in den "Fenster geschlossen"-Modus zu versetzen (Default = 5s) + default: 5 + selector: + number: + mode: box + min: 0.0 + max: 3600.0 + unit_of_measurement: seconds + step: 1.0 + remaining_section: + name: Weitere Konfiguration + description: Sonstige Konfigurationen für die Automation + collapesed: true + input: + temperature_sensor: + name: Temperatursensor + selector: + entity: + multiple: false + filter: + - domain: sensor + device_class: temperature + radiator_schedules: + name: Heizpläne + description: Alle Heizpläne die für den Radiator berücksichtigt werden sollen + selector: + entity: + multiple: true + filter: + - domain: switch triggers: - trigger: state @@ -104,9 +122,8 @@ variables: {% endif %} {% endfor %} {{ window_detection_entity_id.id }} - current_temperature: !input temperature_sensor + current_temperature_entity_id: !input temperature_sensor scheduled_temperature: > - {% set schedules = ['switch.schedule_bed7e4', 'switch.schedule_28375d', 'switch.schedule_0cc5de'] %} {% set ns = namespace(current_temperature = none) %} {% for schedule in schedules %} {% if states(schedule) == 'on' and state_attr(schedule, 'current_slot') is not none %} @@ -124,37 +141,38 @@ variables: {{ ns.current_temperature }} actions: -- if: - - condition: trigger - id: - - FENSTER_OPEN - then: - - service: switch.turn_on - target: - entity_id: "{{ window_detection_entity }}" - alias: Setze Fenster auf offen -- if: - - condition: trigger - id: - - FENSTER_CLOSED - then: - - service: switch.turn_off - target: - entity_id: "{{ window_detection_entity }}" - alias: Setze Fenster auf geschlossen + - choose: + - conditions: + - condition: trigger + id: + - FENSTER_OPEN + sequence: + - service: switch.turn_on + target: + entity_id: "{{ window_detection_entity }}" + alias: Setze Fenster auf offen + - conditions: + - condition: trigger + id: + - FENSTER_CLOSED + sequence: + - service: switch.turn_off + target: + entity_id: "{{ window_detection_entity }}" + alias: Setze Fenster auf geschlossen # temperature sensor sync -- if: - - condition: trigger - id: - - FENSTER_OPEN - - FENSTER_CLOSED - - SYNC_TEMPERATURE - - TEMP_CHANGED - then: - - service: number.set_value - data: - value: "{{ states(current_temperature) | float }}" - target: - entity_id: "{{ remote_temperature_entity }}" - alias: Sync remote temperature sensor - alias: Synce Temperatur zum TRV \ No newline at end of file + - choose: + - conditions: + - condition: trigger + id: + - FENSTER_OPEN + - FENSTER_CLOSED + - SYNC_TEMPERATURE + - TEMP_CHANGED + sequence: + - service: number.set_value + data: + value: "{{ states(current_temperature_entity_id) | float }}" + target: + entity_id: "{{ remote_temperature_entity }}" + alias: Synce Temperatur zum TRV \ No newline at end of file