From 74afedd45d634f4b378f300c0c1af931eb6181e8 Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 30 Aug 2025 09:33:14 +0000 Subject: [PATCH] blueprints/automation/wd-close-weather-notification.yaml aktualisiert --- .../wd-close-weather-notification.yaml | 70 +++++++++++++------ 1 file changed, 48 insertions(+), 22 deletions(-) diff --git a/blueprints/automation/wd-close-weather-notification.yaml b/blueprints/automation/wd-close-weather-notification.yaml index 82ed48c..640aadc 100644 --- a/blueprints/automation/wd-close-weather-notification.yaml +++ b/blueprints/automation/wd-close-weather-notification.yaml @@ -1,6 +1,6 @@ blueprint: - name: Open Windows/Doors Notification (Clean Working Version) - description: Notify when windows or doors are open based on weather or temperature thresholds. Supports multiple notify services and multiple weather states. + name: Open Windows/Doors Notification (Clean Final) + description: Notify when windows or doors are open. Triggers on weather, temperature, or manual execution. Only sends notifications if windows/doors are open. domain: automation input: openings: @@ -44,15 +44,14 @@ blueprint: min: -50 max: 50 unit_of_measurement: °C - notify_services: - name: Notification Services - description: Comma-separated notify services (e.g., notify.mobile_app_phone,notify.alexa_media_livingroom) + notify_service: + name: Notification Service default: notify.notify selector: text: {} custom_message: name: Custom Message Template - default: "{{ entity_name }} is open! Trigger: {{ trigger_state }}" + default: "{{ entity_name }} is open! Trigger: {{ trigger_info }}" selector: text: {} @@ -70,23 +69,32 @@ action: - variables: # Inputs openings_list: !input openings + weather_sensor_id: !input weather_sensor + temperature_sensor_id: !input temperature_sensor raw_weather_states: !input weather_trigger_states - raw_notify_services: !input notify_services - custom_msg: !input custom_message + notify_service_name: !input notify_service + message_template: !input custom_message + temp_above_threshold: !input temp_above + temp_below_threshold: !input temp_below - # Processed lists + # Process weather states weather_states: "{{ raw_weather_states.split(',') | map('trim') | list }}" - notify_services_list: "{{ raw_notify_services.split(',') | map('trim') | list }}" - # Current trigger state - trigger_state: > - {% if trigger.to_state is not none %} - {{ trigger.to_state.state }} + # Current weather and temperature + current_weather: > + {% if states(weather_sensor_id) is not none %} + {{ states(weather_sensor_id).state }} + {% else %} + unknown + {% endif %} + current_temperature: > + {% if states(temperature_sensor_id) is not none %} + {{ states(temperature_sensor_id).state }} {% else %} unknown {% endif %} - # Determine open windows/doors + # Detect open windows/doors open_entities: > {% set list = [] %} {% for ent_id in openings_list %} @@ -97,10 +105,26 @@ action: {% endfor %} {{ list }} - # Determine if weather matches + # Determine trigger info for message + trigger_info: > + {% if trigger.platform == 'state' and trigger.entity_id == weather_sensor_id %} + Weather: {{ current_weather }} + {% elif trigger.platform == 'numeric_state' and trigger.entity_id == temperature_sensor_id %} + Temperature: {{ current_temperature }}°C + {% else %} + Manual trigger + {% endif %} + + # Filter conditions weather_match: > - {% if trigger.entity_id == weather_sensor and states(weather_sensor) is not none %} - {{ states(weather_sensor).state in weather_states }} + {% if trigger.platform == 'state' and trigger.entity_id == weather_sensor_id %} + {{ current_weather in weather_states }} + {% else %} + true + {% endif %} + temperature_match: > + {% if trigger.platform == 'numeric_state' and trigger.entity_id == temperature_sensor_id %} + {{ (trigger.to_state.state | float >= temp_above_threshold) or (trigger.to_state.state | float <= temp_below_threshold) }} {% else %} true {% endif %} @@ -108,10 +132,12 @@ action: - choose: - conditions: - condition: template - value_template: "{{ open_entities | count > 0 and weather_match }}" + value_template: "{{ open_entities | count > 0 and weather_match and temperature_match }}" sequence: - - service: notify.all + - service: "{{ notify_service_name }}" data: message: > - {% set msg = custom_msg | replace('{{ entity_name }}', open_entities | join(', ')) | replace('{{ trigger_state }}', trigger_state) %} - {{ msg }} + {{ message_template + | replace('{{ entity_name }}', open_entities | join(', ')) + | replace('{{ trigger_info }}', trigger_info) + }}