restructure variables
This commit is contained in:
@@ -184,6 +184,7 @@ blueprint:
|
|||||||
enable_day: false
|
enable_day: false
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
|
# Input-Variablen
|
||||||
trv: !input trv
|
trv: !input trv
|
||||||
temperature_sensor: !input temperature_sensor
|
temperature_sensor: !input temperature_sensor
|
||||||
sensor_sync_threshold: !input sensor_sync_threshold
|
sensor_sync_threshold: !input sensor_sync_threshold
|
||||||
@@ -195,26 +196,34 @@ variables:
|
|||||||
max_temperature: !input max_temperature
|
max_temperature: !input max_temperature
|
||||||
alarm_control_panel: !input alarm_control_panel
|
alarm_control_panel: !input alarm_control_panel
|
||||||
override_reset_duration: !input override_reset_duration
|
override_reset_duration: !input override_reset_duration
|
||||||
temperature_change_tolerance: 0.4 # °C
|
|
||||||
sensor_sync_max_age: 1499 # Sekunden (25 Minuten - 1 Sekunde)
|
# Konstanten
|
||||||
is_heating_period: >
|
temperature_change_tolerance: 0.4 # °C - Minimale Differenz für Temperaturänderung
|
||||||
{{ heating_period_switch in [none, ''] or is_state(heating_period_switch, 'on') }}
|
sensor_sync_max_age: 1499 # Sekunden (25 Minuten - 1 Sekunde) - Max Alter für Sensor-Sync
|
||||||
|
|
||||||
|
# Entity-Discovery
|
||||||
remote_temperature_entity: >
|
remote_temperature_entity: >
|
||||||
{{ device_entities(device_id(trv)) | select('search', 'remote_temperature') | list | first | default('') }}
|
{{ device_entities(device_id(trv)) | select('search', 'remote_temperature') | list | first | default('') }}
|
||||||
remote_temperature_entity_valid: >
|
|
||||||
{{ remote_temperature_entity and states(remote_temperature_entity) not in ['unknown', 'unavailable', none] }}
|
|
||||||
setpoint_change_source_entity_valid: >
|
|
||||||
{{ setpoint_change_source_entity and states(setpoint_change_source_entity) not in ['unknown', 'unavailable', none] }}
|
|
||||||
window_detection_entity_valid: >
|
|
||||||
{{ window_detection_entity and window_detection_entity | length > 0 }}
|
|
||||||
current_remote_temperature: >
|
|
||||||
{{ states(remote_temperature_entity) | float(0) if remote_temperature_entity_valid else 0 }}
|
|
||||||
remote_temperature_last_change: >
|
|
||||||
{{ states[remote_temperature_entity].last_changed if remote_temperature_entity_valid else none }}
|
|
||||||
window_detection_entity: >
|
window_detection_entity: >
|
||||||
{{ device_entities(device_id(trv)) | select('search', 'window_detection') | list | first | default('') }}
|
{{ device_entities(device_id(trv)) | select('search', 'window_detection') | list | first | default('') }}
|
||||||
setpoint_change_source_entity: >
|
setpoint_change_source_entity: >
|
||||||
{{ device_entities(device_id(trv)) | select('search', 'setpoint_change_source') | list | first | default('') }}
|
{{ device_entities(device_id(trv)) | select('search', 'setpoint_change_source') | list | first | default('') }}
|
||||||
|
|
||||||
|
# Entity-Validierung
|
||||||
|
remote_temperature_entity_valid: >
|
||||||
|
{{ remote_temperature_entity and states(remote_temperature_entity) not in ['unknown', 'unavailable', none] }}
|
||||||
|
window_detection_entity_valid: >
|
||||||
|
{{ window_detection_entity and window_detection_entity | length > 0 }}
|
||||||
|
setpoint_change_source_entity_valid: >
|
||||||
|
{{ setpoint_change_source_entity and states(setpoint_change_source_entity) not in ['unknown', 'unavailable', none] }}
|
||||||
|
|
||||||
|
# Basis-Berechnungen
|
||||||
|
is_heating_period: >
|
||||||
|
{{ heating_period_switch in [none, ''] or is_state(heating_period_switch, 'on') }}
|
||||||
|
current_remote_temperature: >
|
||||||
|
{{ states(remote_temperature_entity) | float(0) if remote_temperature_entity_valid else 0 }}
|
||||||
|
remote_temperature_last_change: >
|
||||||
|
{{ states[remote_temperature_entity].last_changed if remote_temperature_entity_valid else none }}
|
||||||
scheduled_temperature: >
|
scheduled_temperature: >
|
||||||
{% set schedule_finder = namespace(current_temperature = none) %}
|
{% set schedule_finder = namespace(current_temperature = none) %}
|
||||||
{% set selected_friendly_name = states(active_scheduler_selector) %}
|
{% set selected_friendly_name = states(active_scheduler_selector) %}
|
||||||
@@ -230,6 +239,8 @@ variables:
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ schedule_finder.current_temperature }}
|
{{ schedule_finder.current_temperature }}
|
||||||
|
|
||||||
|
# Temperatur-Berechnungen
|
||||||
target_temperature: >
|
target_temperature: >
|
||||||
{% if alarm_control_panel and is_state(alarm_control_panel, 'armed_away') %}
|
{% if alarm_control_panel and is_state(alarm_control_panel, 'armed_away') %}
|
||||||
{{ away_temperature }}
|
{{ away_temperature }}
|
||||||
@@ -240,6 +251,8 @@ variables:
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
safe_temperature: >
|
safe_temperature: >
|
||||||
{{ [min_temperature, [max_temperature, target_temperature | float(18)] | min] | max }}
|
{{ [min_temperature, [max_temperature, target_temperature | float(18)] | min] | max }}
|
||||||
|
|
||||||
|
# Status-Prüfungen
|
||||||
is_valid_temperature: >
|
is_valid_temperature: >
|
||||||
{{ safe_temperature is not none and safe_temperature | is_number }}
|
{{ safe_temperature is not none and safe_temperature | is_number }}
|
||||||
is_temperature_change_needed: >
|
is_temperature_change_needed: >
|
||||||
@@ -266,6 +279,8 @@ variables:
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
is_manual_override: >
|
is_manual_override: >
|
||||||
{{ (state_attr(trv, 'temperature') | float(0) - safe_temperature | float(0)) | abs >= temperature_change_tolerance }}
|
{{ (state_attr(trv, 'temperature') | float(0) - safe_temperature | float(0)) | abs >= temperature_change_tolerance }}
|
||||||
|
|
||||||
|
# Override Reset Berechnungen
|
||||||
override_reset_duration_seconds: >
|
override_reset_duration_seconds: >
|
||||||
{{ (override_reset_duration.hours | default(0) | int) * 3600 +
|
{{ (override_reset_duration.hours | default(0) | int) * 3600 +
|
||||||
(override_reset_duration.minutes | default(0) | int) * 60 +
|
(override_reset_duration.minutes | default(0) | int) * 60 +
|
||||||
|
|||||||
Reference in New Issue
Block a user