Flow Details
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.