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
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
- 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