Ukraine Alarm
Home Assistant Blueprint

Ukraine Alarm

Creates custom app for AWTRIX device with Ukraine Alarm integration
A flow by Lufton

Import blueprint Download blueprint

Flow Details

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled. Firstly you need to setup Ukraine Alam integration on your Home Assistant instance. Then just select AWTRIX device topic sensor for the device you want to show notification on and list of binary sensors you want your automation to trigger on. All other parameters ar self-explanatory and have default values that you can use.

blueprint: name: AWTRIX Ukraine Alarm description: Creates custom app for AWTRIX device with Ukraine Alarm integration domain: automation author: Lufton source_url: https://github.com/lufton/ha-blueprints/blob/main/awtrix_ukraine_alarm.yaml input: awtrix_device: name: AWTRIX Device description: Select the AWTRIX device selector: device: integration: mqtt manufacturer: Blueforcer app_name: name: App name description: Enter app name or leave as is for default value default: UkraineAlarm alert_sensors: name: Alert status sensors description: Select sensor that indicates alert status presence selector: entity: filter: integration: ukraine_alarm domain: binary_sensor device_class: safety multiple: true alert_color: name: Alert status color description: Select color for alert status notification default: '#FF0000' selector: text: type: color alert_icon: name: Alert status icon description: Enter icon number/filename for alert status or leave empty if you don't need any default: alert_text: name: Alert status text description: Enter text for alert status default: Alert alert_rtttl: name: Alert rtttl sound description: Enter rtttl sound that will be played with alert status or leave empty if you don't need any default: AirAlarm:d=4,o=5,b=100:16d6,16e6,16f#6,16g6,16a6,16b6,16c7,16d7,16c7,16b6,16a6,16g6,16f#6,16e6,16d6,16c6,16d6,16e6,16f#6,16g6,16a6,16b6,16c7,16d7,16c7,16b6,16a6,16g6,16f#6,16e6,16d6,16c6,16d6,16e6,16f#6,16g6,16a6,16b6,16c7,16d7,16c7,16b6,16a6,16g6,16f#6,16e6,16d6,16c6 clear_color: name: Clear status color description: Select color for clear status notification default: '#00FF00' selector: text: type: color clear_icon: name: Clear status icon description: Enter icon number/filename for clear status or leave empty if you don't need any default: clear_text: name: Clear status text description: Enter text for clear status default: Clear clear_rtttl: name: Clear rtttl sound description: Enter rtttl sound that will be played with clear status or leave empty if you don't need any default: Relief:d=4,o=5,b=100:8g,8e,8c,8g,8e,8c,8g,8e clear_dismiss_timeout: name: Clear dismiss timeout description: Enter timeout for clear status dismission or set to 0 to keep status default: 5 selector: number: min: 0 max: 99999 mode: box variables: awtrix_device: !input awtrix_device alert_sensors: !input alert_sensors app_name: !input app_name device_topic: "{{ states((device_entities(awtrix_device) | select('search', 'device_topic') | list)[0]) }}" app_topic: "{{ device_topic }}/custom/{{ app_name }}" switch_topic: "{{ device_topic }}/switch" rtttl_topic: "{{ device_topic }}/rtttl" switch_payload: "{\"name\": \"{{ app_name }}\"}" alert_icon: !input alert_icon alert_text: !input alert_text alert_color: !input alert_color alert_rtttl: !input alert_rtttl alert_payload: |- { "icon": "{{ alert_icon }}", "text": "{{ alert_text }}", "color": "{{ alert_color }}", "wakeup": true } clear_icon: !input clear_icon clear_text: !input clear_text clear_color: !input clear_color clear_rtttl: !input clear_rtttl clear_dismiss_timeout: !input clear_dismiss_timeout clear_payload: |- { "icon": "{{ clear_icon }}", "text": "{{ clear_text }}", "color": "{{ clear_color }}", "wakeup": true } trigger: - alias: Alert raised platform: state id: sensor_change entity_id: !input alert_sensors action: - service: mqtt.publish data: retain: false topic: "{{ app_topic }}" payload: "{{ alert_payload }}" alias: Create alarm app (alert) - service: mqtt.publish data: retain: false topic: "{{ switch_topic }}" payload: "{{ switch_payload }}" alias: Switch to alarm app - service: mqtt.publish data: retain: false topic: "{{ rtttl_topic }}" payload: "{{ alert_rtttl }}" alias: Play alert rtttl sound - wait_template: |- {% set ns = namespace(alert=false) %} {% for alert_sensor in alert_sensors %} {% set ns.alert = ns.alert or is_state(alert_sensor, 'on') %} {% endfor %} {{ not ns.alert }} continue_on_timeout: true timeout: "00:00:03" alias: Wait for small delay - alias: Repeat updating app untill alert is gone repeat: sequence: - service: mqtt.publish data: retain: false topic: "{{ app_topic }}" payload: |- { "icon": "{{ alert_icon }}", "text": {% set ns = namespace(latest_change=timedelta(days=365)) %} {% for alert_sensor in alert_sensors | select('is_state', 'on') | list -%} {% set current_change = now() - states[alert_sensor].last_changed %} {% if current_change < ns.latest_change %} {% set ns.latest_change = current_change %} {% endif %} {% endfor -%} {% if ns.latest_change.seconds < 3600 %}"{{ ns.latest_change.seconds | timestamp_custom('%M:%S', False) }}" {% else %}"{{ ns.latest_change.seconds | timestamp_custom('%H:%M', False) }}" {% endif %}, "color": "{{ alert_color }}", "wakeup": true } alias: Update alarm app (alert) - delay: hours: 0 minutes: 0 seconds: 1 milliseconds: 0 alias: Delay 1 second before updating alarm app (alert) while: - alias: At least one of alert sensors is active condition: template value_template: |- {% set ns = namespace(alert=false) %} {% for alert_sensor in alert_sensors %} {% set ns.alert = ns.alert or is_state(alert_sensor, 'on') %} {% endfor %} {{ ns.alert }} - service: mqtt.publish data: retain: false topic: "{{ app_topic }}" payload: "{{ clear_payload }}" alias: Create alarm app (clear) - service: mqtt.publish data: retain: false topic: "{{ switch_topic }}" payload: "{{ switch_payload }}" alias: Switch to alarm app (clear) - service: mqtt.publish data: retain: false topic: "{{ rtttl_topic }}" payload: "{{ clear_rtttl }}" alias: Play clear rtttl sound - alias: If dismiss clear status timeout > 0 if: - condition: template value_template: "{{ clear_dismiss_timeout > 0 }}" alias: Dismiss clear status timeout > 0 then: - delay: seconds: "{{ clear_dismiss_timeout }}" alias: Delay dismissing alarm app (clear) - service: mqtt.publish data: retain: false topic: "{{ app_topic }}" alias: Dismiss alarm app (clear) mode: single
-- Flow first published on March 23, 2024, last updated on April 2, 2024 at 23:36.