merge temp schedule change #1

Merged
pierre merged 14 commits from dev into main 2025-12-30 12:46:33 +01:00
Showing only changes of commit 576b6fa98a - Show all commits

View File

@@ -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') %}