Compare commits
2 Commits
7dd83511a3
...
2eba16f2e7
| Author | SHA1 | Date | |
|---|---|---|---|
| 2eba16f2e7 | |||
| 2c838a85a1 |
@@ -6,6 +6,11 @@ blueprint:
|
||||
min_version: "2024.6.0"
|
||||
description: >
|
||||
Eine Automation zur automatischen Steuerung eines Bosch TRV Heizkörperthermostats.
|
||||
|
||||
**Temperatur-Prioritätslogik:**
|
||||
1. Alarm armed_away → Abwesenheitstemperatur
|
||||
2. Aktiver Zeitplan → Temperatur aus Schedule
|
||||
3. Fallback → Abwesenheitstemperatur
|
||||
domain: automation
|
||||
author: Me
|
||||
input:
|
||||
@@ -27,7 +32,14 @@ blueprint:
|
||||
device_class: temperature
|
||||
sensor_sync_threshold:
|
||||
name: Sensor-Synchronisations-Schwellenwert
|
||||
description: Minimale Temperaturdifferenz in °C, um eine Sensor-Synchronisation auszulösen (Default = 0.5°C). Temperatur wird weiterhin spätestens nach 25 Minuten synchronisiert.
|
||||
description: >
|
||||
Minimale Temperaturdifferenz in °C, um eine Sensor-Synchronisation auszulösen (Default = 0.5°C).
|
||||
|
||||
**Synchronisation erfolgt bei:**
|
||||
1. Differenz zwischen Sensor und TRV ≥ Schwellenwert
|
||||
2. Sensor kreuzt Solltemperatur von unten (verhindert zu spätes Aufheizen)
|
||||
3. Sensor kreuzt Solltemperatur von oben (verhindert Überhitzung)
|
||||
4. Spätestens nach 25 Minuten ohne Änderung
|
||||
default: 0.5
|
||||
selector:
|
||||
number:
|
||||
@@ -46,7 +58,9 @@ blueprint:
|
||||
- domain: input_boolean
|
||||
min_temperature:
|
||||
name: Minimale Temperatur
|
||||
description: Minimale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 15°C)
|
||||
description: >
|
||||
Minimale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 15°C).
|
||||
Alle berechneten Temperaturen werden auf diesen Minimalwert begrenzt (Clamping).
|
||||
default: 15
|
||||
selector:
|
||||
number:
|
||||
@@ -57,7 +71,9 @@ blueprint:
|
||||
step: 0.5
|
||||
max_temperature:
|
||||
name: Maximale Temperatur
|
||||
description: Maximale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 28°C)
|
||||
description: >
|
||||
Maximale erlaubte Solltemperatur als Sicherheitsgrenze (Default = 23°C).
|
||||
Alle berechneten Temperaturen werden auf diesen Maximalwert begrenzt (Clamping).
|
||||
default: 23
|
||||
selector:
|
||||
number:
|
||||
@@ -146,7 +162,12 @@ blueprint:
|
||||
- domain: alarm_control_panel
|
||||
away_temperature:
|
||||
name: Abwesenheitstemperatur
|
||||
description: Temperatur die eingestellt wird, wenn der Alarm im Abwesendmodus ist (Default = 18°C)
|
||||
description: >
|
||||
Temperatur die verwendet wird, wenn der Alarm im Abwesendmodus ist oder kein Zeitplan aktiv ist (Default = 18°C).
|
||||
|
||||
**Verwendung:**
|
||||
- Primär: Alarm Control Panel im Modus 'armed_away' (höchste Priorität)
|
||||
- Fallback: Wenn kein aktiver Zeitplan eine Temperatur liefert
|
||||
default: 18
|
||||
selector:
|
||||
number:
|
||||
@@ -237,6 +258,7 @@ variables:
|
||||
{% endif %}
|
||||
|
||||
# Temperatur-Berechnungen
|
||||
# Priorität: 1. Alarm armed_away → away_temperature, 2. Aktiver Zeitplan → scheduled_temperature, 3. Fallback → away_temperature
|
||||
target_temperature: >
|
||||
{% if alarm_control_panel and is_state(alarm_control_panel, 'armed_away') %}
|
||||
{{ away_temperature }}
|
||||
@@ -245,6 +267,7 @@ variables:
|
||||
{% else %}
|
||||
{{ away_temperature }}
|
||||
{% endif %}
|
||||
# Begrenzt target_temperature auf den Bereich [min_temperature, max_temperature] (Clamping)
|
||||
safe_temperature: >
|
||||
{{ [min_temperature, [max_temperature, target_temperature | float(18)] | min] | max }}
|
||||
|
||||
@@ -253,6 +276,7 @@ variables:
|
||||
{{ safe_temperature is not none and safe_temperature | is_number }}
|
||||
is_temperature_change_needed: >
|
||||
{{ (safe_temperature | float(0) - state_attr(trv, 'temperature') | float(0)) | abs >= temperature_change_tolerance }}
|
||||
# Synchronisation nötig wenn: 1) Differenz > Schwelle, 2) Sensor kreuzt Soll-Temp von unten, 3) Sensor kreuzt Soll-Temp von oben
|
||||
is_sensor_sync_needed: >
|
||||
{% set new_sensor_temp = states(temperature_sensor) | float(0) %}
|
||||
{% set target_temp = state_attr(trv, 'temperature') | float(0) %}
|
||||
@@ -277,6 +301,7 @@ variables:
|
||||
{{ (state_attr(trv, 'temperature') | float(0) - safe_temperature | float(0)) | abs >= temperature_change_tolerance }}
|
||||
|
||||
# Override Reset Berechnungen
|
||||
# Konvertiert duration-Dictionary {hours, minutes, seconds} in Gesamtsekunden
|
||||
override_reset_duration_seconds: >
|
||||
{{ (override_reset_duration.hours | default(0) | int) * 3600 +
|
||||
(override_reset_duration.minutes | default(0) | int) * 60 +
|
||||
@@ -285,6 +310,7 @@ variables:
|
||||
{{ states[setpoint_change_source_entity].last_updated if setpoint_change_source_entity_valid else none }}
|
||||
is_setpoint_manual: >
|
||||
{{ setpoint_change_source_entity_valid and states(setpoint_change_source_entity) == 'manual' }}
|
||||
# Early exits: 1) Keine Änderung/Timeout=0 → false, 2) Nicht manuell → false, 3) Berechne Zeitdifferenz
|
||||
override_duration_exceeded: >
|
||||
{% if override_last_change == none or override_reset_duration_seconds == 0 %}
|
||||
false
|
||||
|
||||
Reference in New Issue
Block a user