blueprints/automation/wd-close-weather-notification.yaml aktualisiert

This commit is contained in:
2025-08-30 10:24:53 +00:00
parent f8220a02e0
commit ad430972fe

View File

@@ -1,59 +1,106 @@
blueprint:
name: Open Windows/Doors Monitor
description: Monitors selected windows/doors and lists the ones that are open.
name: Open Windows/Doors Notification
description: Notify when windows or doors are open based on weather state or temperature thresholds.
domain: automation
input:
opening_sensors:
name: Window/Door Sensors
description: Select the sensors to monitor
openings:
name: Windows & Doors
description: Select windows and doors to monitor
selector:
entity:
domain: binary_sensor
multiple: true
notify_services:
name: Notification Services
description: Enter notify services separated by commas, e.g. notify.mobile_app_phone,notify.telegram
default: notify.notify
weather_sensor:
name: Weather Sensor
description: Optional weather entity to trigger notification
selector:
entity:
domain: weather
weather_trigger_states:
name: Weather Trigger States
description: Select weather states that should trigger notification
default:
- storm
- rain
selector:
text:
multiline: true
temperature_sensor:
name: Temperature Sensor
description: Optional temperature entity to trigger notification
selector:
entity:
domain:
- sensor
- weather
device_class: temperature
temp_above:
name: Notify if Temperature Above
description: Optional threshold to trigger notification
default: 22
selector:
number:
min: -50
max: 50
unit_of_measurement: °C
temp_below:
name: Notify if Temperature Below
description: Optional threshold to trigger notification
default: 17
selector:
number:
min: -50
max: 50
unit_of_measurement: °C
notify_target:
name: Notification Target
selector:
target: {}
custom_message:
name: Custom Notification Message
default: "{{ entity_name }} is open! Trigger: {{ trigger_state }}"
selector:
text: {}
trigger:
- platform: state
entity_id: !input opening_sensors
entity_id: !input weather_sensor
to: "{{ !input weather_trigger_states.split(',') | map('trim') | list }}"
- platform: numeric_state
entity_id: !input temperature_sensor
above: !input temp_above
- platform: numeric_state
entity_id: !input temperature_sensor
below: !input temp_below
condition:
- condition: state
entity_id: !input openings
state: 'on'
action:
- variables:
open_sensors: >
{% set devices = [] %}
{% for sensor in opening_sensors %}
{% if is_state(sensor, 'on') or is_state(sensor, 'open') %}
{% set _ = devices.append(states[sensor].name) %}
selected_openings: !input openings
selected_temp_sensor: !input temperature_sensor
selected_weather: !input weather_sensor
selected_notify_target: !input notify_target
selected_custom_message: !input custom_message
open_entities: >
{{ states | selectattr('entity_id','in',selected_openings) | selectattr('state','eq','on') | map(attribute='attributes.friendly_name') | list }}
trigger_state: >
{% if trigger.platform in ['numeric_state','state'] %}
{{ trigger.to_state.state }}
{% else %}
unknown
{% endif %}
{% endfor %}
notify_list: >
{% set services = !input notify_services | replace(' ', '') | split(',') %}
{{ services }}
- choose:
- conditions: "{{ open_sensors | length > 0 }}"
sequence:
- repeat:
count: "{{ notify_list | length }}"
sequence:
- service: "{{ notify_list[repeat.index0] }}"
- service: notify.notify
data:
title: "Open Windows/Doors"
target: "{{ selected_notify_target }}"
message: >
The following windows/doors are open:
{% for d in open_sensors %}
- {{ d }}
{% for entity_name in open_entities %}
{{ selected_custom_message
| replace('{{ entity_name }}', entity_name)
| replace('{{ trigger_state }}', trigger_state)
}}
{% endfor %}
- conditions: "{{ open_sensors | length == 0 }}"
sequence:
- repeat:
count: "{{ notify_list | length }}"
sequence:
- service: "{{ notify_list[repeat.index0] }}"
data:
title: "Window/Door Status"
message: "All selected windows/doors are closed."