From a0737f3fdd5e3a250ba25b7bcca9b1be53f24ccc Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 30 Aug 2025 03:49:51 +0000 Subject: [PATCH] blueprints/automation/wd-close-weather-notification.yaml aktualisiert --- .../wd-close-weather-notification.yaml | 58 +++++++++++++++---- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/blueprints/automation/wd-close-weather-notification.yaml b/blueprints/automation/wd-close-weather-notification.yaml index 5fa5d15..59ed640 100644 --- a/blueprints/automation/wd-close-weather-notification.yaml +++ b/blueprints/automation/wd-close-weather-notification.yaml @@ -8,18 +8,39 @@ blueprint: description: Select windows and doors to monitor selector: entity: - domain: binary_sensor multiple: true temperature_sensor: name: Temperature Sensor - description: Select a temperature sensor + description: Select a sensor or forecast entity for temperature selector: entity: - domain: sensor - device_class: temperature + filter: + domain: + - sensor + - weather + device_class: + - temperature + temperature_cold_threshold: + name: Cold Temperature Threshold + description: Notify if temperature drops below this value + default: 15 + selector: + number: + min: -50 + max: 50 + unit_of_measurement: °C + temperature_hot_threshold: + name: Hot Temperature Threshold + description: Notify if temperature rises above this value + default: 28 + selector: + number: + min: -50 + max: 50 + unit_of_measurement: °C weather_entity: name: Weather Forecast Entity - description: Select a weather forecast entity + description: Select a weather forecast entity for bad weather detection selector: entity: domain: weather @@ -62,10 +83,21 @@ trigger: action: - variables: - current_temp: "{{ states(!input.temperature_sensor) | map(attribute='state') | map('float') | min }}" + # Safely extract temperature from sensor or weather entity + current_temp: > + {% if state_attr(!input.temperature_sensor, 'temperature') is not none %} + {{ state_attr(!input.temperature_sensor, 'temperature') | float }} + {% else %} + {{ states(!input.temperature_sensor) | map(attribute='state') | map('float', default=0) | min }} + {% endif %} + # Determine current condition based on thresholds and bad weather current_condition: > {% set states_list = !input.bad_weather_states.split(',') | map('trim') %} - {% if states(!input.weather_entity) | string in states_list %} + {% if current_temp < !input.temperature_cold_threshold %} + too cold + {% elif current_temp > !input.temperature_hot_threshold %} + too hot + {% elif states(!input.weather_entity) | string in states_list %} bad weather {% else %} unknown @@ -75,8 +107,10 @@ action: data: target: "{{ !input.notify_target }}" message: > - {{ !input.custom_message - | replace('{{ entity_name }}', states(trigger.entity_id).attributes.friendly_name) - | replace('{{ temperature }}', current_temp | string) - | replace('{{ condition }}', current_condition) - }} + {% if state_attr(trigger.entity_id, 'device_class') in ['window','door'] %} + {{ !input.custom_message + | replace('{{ entity_name }}', state_attr(trigger.entity_id,'friendly_name')) + | replace('{{ temperature }}', current_temp | string) + | replace('{{ condition }}', current_condition) + }} + {% endif %}