refactoring: use sections and use choose instead of if

This commit is contained in:
2025-12-06 12:42:40 +01:00
parent dfa2d15b27
commit f0eb9a8c25

View File

@@ -6,59 +6,77 @@ blueprint:
domain: automation domain: automation
author: Me author: Me
input: input:
radiator_entity: radiator_section:
name: Thermostat name: Radiator Konfiguration
description: Thermostat muss ein Bosch BTH-RA sein description: Konfiguration für den Bosch BTH-RA Radiator
selector: collapsed: false
entity: input:
multiple: false radiator_entity:
filter: name: Thermostat
- domain: climate description: Thermostat muss ein Bosch BTH-RA sein
window_sensor: selector:
name: Fenster-/Türsensor (oder Gruppe) device:
selector: multiple: false
entity: filter:
multiple: false - domain: climate
filter: - integration: MQTT
- domain: binary_sensor - manufacturer: Bosch
window_delay_open: - model_id: BTH-RA
name: Fenster-/Türsensor Verzögerung window_section:
description: Zeit die das Fenster offen bleiben muss, um die den Radiator in den "Fenster offen"-Modus zu versetzen (Default = 30s) name: Fenster-/Türsensor Konfiguration
default: 30 description: Konfiguration für den Fenster-/Türsensor.
selector: collapsed: true
number: input:
mode: box window_sensor:
min: 0.0 name: Fenster-/Türsensor (oder Gruppe)
max: 3600.0 selector:
unit_of_measurement: seconds entity:
step: 1.0 multiple: false
window_delay_close: filter:
name: Fenster-/Türsensor Verzögerung - domain: binary_sensor
description: Zeit die das Fenster geschlossen bleiben muss, um die den Radiator in den "Fenster geschlossen"-Modus zu versetzen (Default = 5s) window_delay_open:
default: 5 name: Fenster-/Türsensor Verzögerung
selector: description: Zeit die das Fenster offen bleiben muss, um die den Radiator in den "Fenster offen"-Modus zu versetzen (Default = 30s)
number: default: 30
mode: box selector:
min: 0.0 number:
max: 3600.0 mode: box
unit_of_measurement: seconds min: 0.0
step: 1.0 max: 3600.0
temperature_sensor: unit_of_measurement: seconds
name: Temperatursensor step: 1.0
selector: window_delay_close:
entity: name: Fenster-/Türsensor Verzögerung
multiple: false description: Zeit die das Fenster geschlossen bleiben muss, um die den Radiator in den "Fenster geschlossen"-Modus zu versetzen (Default = 5s)
filter: default: 5
- domain: sensor selector:
device_class: temperature number:
radiator_schedules: mode: box
name: Heizpläne min: 0.0
description: Alle Heizpläne die für den Radiator berücksichtigt werden sollen max: 3600.0
selector: unit_of_measurement: seconds
entity: step: 1.0
multiple: true remaining_section:
filter: name: Weitere Konfiguration
- domain: switch 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: triggers:
- trigger: state - trigger: state
@@ -104,9 +122,8 @@ variables:
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{{ window_detection_entity_id.id }} {{ window_detection_entity_id.id }}
current_temperature: !input temperature_sensor current_temperature_entity_id: !input temperature_sensor
scheduled_temperature: > scheduled_temperature: >
{% set schedules = ['switch.schedule_bed7e4', 'switch.schedule_28375d', 'switch.schedule_0cc5de'] %}
{% set ns = namespace(current_temperature = none) %} {% set ns = namespace(current_temperature = none) %}
{% for schedule in schedules %} {% for schedule in schedules %}
{% if states(schedule) == 'on' and state_attr(schedule, 'current_slot') is not none %} {% if states(schedule) == 'on' and state_attr(schedule, 'current_slot') is not none %}
@@ -124,37 +141,38 @@ variables:
{{ ns.current_temperature }} {{ ns.current_temperature }}
actions: actions:
- if: - choose:
- condition: trigger - conditions:
id: - condition: trigger
- FENSTER_OPEN id:
then: - FENSTER_OPEN
- service: switch.turn_on sequence:
target: - service: switch.turn_on
entity_id: "{{ window_detection_entity }}" target:
alias: Setze Fenster auf offen entity_id: "{{ window_detection_entity }}"
- if: alias: Setze Fenster auf offen
- condition: trigger - conditions:
id: - condition: trigger
- FENSTER_CLOSED id:
then: - FENSTER_CLOSED
- service: switch.turn_off sequence:
target: - service: switch.turn_off
entity_id: "{{ window_detection_entity }}" target:
alias: Setze Fenster auf geschlossen entity_id: "{{ window_detection_entity }}"
alias: Setze Fenster auf geschlossen
# temperature sensor sync # temperature sensor sync
- if: - choose:
- condition: trigger - conditions:
id: - condition: trigger
- FENSTER_OPEN id:
- FENSTER_CLOSED - FENSTER_OPEN
- SYNC_TEMPERATURE - FENSTER_CLOSED
- TEMP_CHANGED - SYNC_TEMPERATURE
then: - TEMP_CHANGED
- service: number.set_value sequence:
data: - service: number.set_value
value: "{{ states(current_temperature) | float }}" data:
target: value: "{{ states(current_temperature_entity_id) | float }}"
entity_id: "{{ remote_temperature_entity }}" target:
alias: Sync remote temperature sensor entity_id: "{{ remote_temperature_entity }}"
alias: Synce Temperatur zum TRV alias: Synce Temperatur zum TRV