blueprint: name: Open Windows/Doors Notification description: Notify when windows or doors are open based on weather state or temperature thresholds. domain: automation input: openings: name: Windows & Doors description: Select windows and doors to monitor selector: entity: domain: binary_sensor multiple: true weather_sensor: name: Weather Sensor description: Optional weather entity to trigger notification default: [] selector: entity: domain: weather multiple: false weather_trigger_state: name: Weather Trigger State description: Notify when weather entity is in this state (e.g. "rain") default: rain selector: text: {} temperature_sensor: name: Temperature Sensor description: Optional temperature entity to trigger notification default: [] selector: entity: domain: sensor device_class: temperature temp_above: name: Notify if Temperature Above default: 22 selector: number: min: -50 max: 50 unit_of_measurement: °C temp_below: name: Notify if Temperature Below default: 17 selector: number: min: -50 max: 50 unit_of_measurement: °C notify_service: name: Notification Service description: Enter the notify service (e.g. notify.mobile_app_myphone, notify.alexa_media_livingroom, notify.telegram) default: notify.notify selector: text: {} custom_message: name: Custom Notification Message default: "{{ entity_name }} is open! Trigger: {{ trigger_state }}" selector: text: {} emergency: name: Emergency Notification default: false selector: boolean: {} trigger: - platform: state entity_id: !input weather_sensor to: !input weather_trigger_state - 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: selected_openings: !input openings selected_temp_sensor: !input temperature_sensor selected_weather: !input weather_sensor selected_notify_service: !input notify_service selected_custom_message: !input custom_message emergency_mode: !input emergency 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 %} - service: "{{ selected_notify_service }}" data: message: > {% for entity_name in open_entities %} {{ selected_custom_message | replace('{{ entity_name }}', entity_name) | replace('{{ trigger_state }}', trigger_state) }} {% endfor %} {% if emergency_mode %} push: interruption-level: critical {% endif %}