5f01411780
Initial snapshot of Home Assistant config (HAOS 2026.4.4)
prior to dashboard restructuring and helper YAML migration.
Pre-commit cleanup applied:
- Removed blueprints/switch_manager/ (9.4 MB stale, component already gone)
- Removed .storage/switch_manager
- Removed home-assistant.log.{1,old,fault}
- Removed zigbee2mqtt/configuration_backup_v{1..4}.yaml
- Removed zigbee2mqtt/database.db.tmp.2024-09-27 (1.5y old)
- Created empty themes/ to satisfy configuration.yaml include
.gitignore uses allowlist strategy for .storage/ to keep
all tokens, keys, and PINs out of version control.
602 lines
21 KiB
YAML
602 lines
21 KiB
YAML
blueprint:
|
|
name: Notifications & Announcements
|
|
description: "# \U0001F4E2 Notifications & Announcements\n**Version: 1.2**\n\nState
|
|
your trigger and spread the word \U0001F4AC\U0001F509\n\n**If you like my blueprints,
|
|
and would like to show your support or just say thank you?** [Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8)
|
|
\U0001F642\n<details> <summary><b>The Automation Process:</b> - Click here to
|
|
expand</summary>\n\n\n - **Trigger Options:**\n\n - Specify the state change
|
|
of one or more entities that will initiate the automation from a dropdown list.
|
|
You can also specify your own custom state if it is not available from the dropdown
|
|
list.\n - State Change Options: The available state changes include:\n -
|
|
**General States:** Button or any state, ON, OFF, Unavailable or Unknown\n -
|
|
**Location-Based States:** Home or Not Home\n - **Numeric States:** Numeric
|
|
state above, Numeric state below or Numeric state above & below\n\n - **Notification
|
|
Options:**\n\n - Opt to send messages to one or multiple devices. Compatible
|
|
with Apple iOS and Android devices.\n - Opt to display your notifications directly
|
|
within the Home Assistant user interface (UI).\n - Opt to send Text-to-Speech
|
|
Announcement to your selected media players.\n\n - **Time-Based Automation:**\n\n
|
|
\ - Specify precise start and end times along with weekday selections to define
|
|
when the automation can run.\n\n - **Custom Conditions:**\n\n - Enter any
|
|
custom conditions to further customize the automation process.\n\n</details>\n\nNeed
|
|
help? See our FAQ: [Click Here](https://community.home-assistant.io/t/notifications-announcements/728100/2?u=blacky)\nLet
|
|
us know what you think of this blueprint and for community support including updates:
|
|
[Click Here](https://community.home-assistant.io/t/notifications-announcements/728100?u=blacky)\n\nRequired
|
|
= *\n"
|
|
domain: automation
|
|
input:
|
|
trigger_settings:
|
|
name: Triggers *
|
|
icon: mdi:cog-outline
|
|
collapsed: true
|
|
input:
|
|
trigger_state:
|
|
name: Trigger - State *
|
|
description: 'Please select what state you would like for your trigger.
|
|
You can choose from ten options available in the dropdown menu. If your
|
|
option is not in the dropdown menu then just type the state you would
|
|
like to use in and click the save button.
|
|
|
|
|
|
1 - Button Or Any State
|
|
|
|
2 - ON
|
|
|
|
3 - OFF
|
|
|
|
4 - Unavailable
|
|
|
|
5 - Unknown
|
|
|
|
6 - Home
|
|
|
|
7 - Not Home
|
|
|
|
8 - Numeric State - Above
|
|
|
|
9 - Numeric State - Below
|
|
|
|
10 - Numeric State - Above & Below
|
|
|
|
|
|
A numbering system has been implemented to facilitate navigation within
|
|
the dropdown selections. Each number corresponds to a specific configuration,
|
|
aiding users in identifying and adjusting the settings used within each
|
|
selection. For instance, when selecting "8 - Numeric State - Above" as
|
|
a dropdown option, settings marked "Used in options 8, 9 or 10" are required
|
|
for that respective selection because number 8 is included in those options.
|
|
|
|
'
|
|
default: button_any_state
|
|
selector:
|
|
select:
|
|
custom_value: true
|
|
mode: dropdown
|
|
options:
|
|
- label: 1 - Button Or Any State
|
|
value: button_any_state
|
|
- label: 2 - ON
|
|
value: 'on'
|
|
- label: 3 - OFF
|
|
value: 'off'
|
|
- label: 4 - Unavailable
|
|
value: unavailable
|
|
- label: 5 - Unknown
|
|
value: unknown
|
|
- label: 6 - Home
|
|
value: home
|
|
- label: 7 - Not Home
|
|
value: not_home
|
|
- label: 8 - Numeric State - Above
|
|
value: numeric_state_above
|
|
- label: 9 - Numeric State - Below
|
|
value: numeric_state_below
|
|
- label: 10 - Numeric State - Above & Below
|
|
value: numeric_state_above_below
|
|
sort: false
|
|
multiple: false
|
|
trigger_state_entity:
|
|
name: State Entities
|
|
description: '**Used in options 1, 2, 3, 4, 5, 6 or 7**. Enter the entities
|
|
that will trigger the automation on state change.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
entity:
|
|
multiple: true
|
|
trigger_numeric_entity:
|
|
name: Numeric State Entities
|
|
description: '**Used in options 8, 9 or 10**. Enter the entities that will
|
|
trigger the automation numeric state change.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
entity:
|
|
multiple: true
|
|
above_state:
|
|
name: Numeric State Above Option
|
|
description: '**Used in options 8, or 10**. Set the above value. The numeric
|
|
state trigger will be when the value crosses over to above the set value.
|
|
|
|
'
|
|
default: 0
|
|
selector:
|
|
number:
|
|
min: -20.0
|
|
max: 100.0
|
|
step: 1.0
|
|
unit_of_measurement: value
|
|
mode: slider
|
|
below_state:
|
|
name: Numeric State Below Option
|
|
description: '**Used in options 9 or 10**. Set the below value. The numeric
|
|
state trigger will be when the value crosses over to below the set value.
|
|
|
|
'
|
|
default: 0
|
|
selector:
|
|
number:
|
|
min: -20.0
|
|
max: 100.0
|
|
step: 1.0
|
|
unit_of_measurement: value
|
|
mode: slider
|
|
time_delay_state:
|
|
name: Time Delay
|
|
description: '**Used in options 1, 2, 3, 4, 5, 6, 7, 8, 9 or 10** Specifies
|
|
the duration that the trigger must maintain its state before the automation
|
|
is executed. The automation will only proceed if the trigger condition
|
|
is met continuously for this entire time delay.
|
|
|
|
'
|
|
default:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 0
|
|
selector:
|
|
duration: {}
|
|
device_notify_settings:
|
|
name: Mobile App Notify
|
|
icon: mdi:devices
|
|
collapsed: true
|
|
input:
|
|
include_notify:
|
|
name: Use The Mobile App Notify Option (Optional)
|
|
description: "Enabling this option will send notifications to the selected
|
|
devices below. \n"
|
|
default: disable_mobile_app_notify
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable Mobile App Notify Options
|
|
value: enable_mobile_app_notify
|
|
- label: Disable Mobile App Notify Options
|
|
value: disable_mobile_app_notify
|
|
custom_value: false
|
|
sort: false
|
|
multiple: false
|
|
notify_device:
|
|
name: Devices Notified
|
|
description: 'Select the devices to be notified when the automation is triggered.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
device:
|
|
filter:
|
|
- integration: mobile_app
|
|
multiple: true
|
|
notify_title:
|
|
name: Title
|
|
description: 'Enter in the title of your notification.
|
|
|
|
'
|
|
default: "\U0001F4E2 Enter Notify Title Here"
|
|
selector:
|
|
text: {}
|
|
notify_message:
|
|
name: Message
|
|
description: 'Enter in the message of your notification.
|
|
|
|
'
|
|
default: "Enter Notify Message Here \U0001F642"
|
|
selector:
|
|
text: {}
|
|
notify_interruption_level:
|
|
name: Interruption Level - iOS Only
|
|
description: 'On devices running iOS 15 and later, you can configure the
|
|
interruption level for your notifications to ensure they are delivered
|
|
according to your preferences. Choose the desired interruption level from
|
|
the dropdown list. Critical and time-sensitive notifications must be turned
|
|
ON within the Home Assistant App, and time-sensitive notifications must
|
|
be allowed in your Focus settings.
|
|
|
|
|
|
For more information on interruption levels [Click Here](https://community.home-assistant.io/t/728100/13)
|
|
|
|
'
|
|
default: active
|
|
selector:
|
|
select:
|
|
mode: dropdown
|
|
options:
|
|
- label: Default
|
|
value: active
|
|
- label: Critical Notifications
|
|
value: critical
|
|
- label: Time Sensitive Notifications
|
|
value: time-sensitive
|
|
- label: Quiet Notifications Without Waking Screen
|
|
value: passive
|
|
custom_value: false
|
|
sort: false
|
|
multiple: false
|
|
notify_data:
|
|
name: Android Only Options (Optional)
|
|
description: '**High Priority** notifications ensure that you receive important
|
|
alerts immediately. These notifications bypass normal delivery delays
|
|
and are delivered instantly to your device.
|
|
|
|
|
|
**Sticky Notification** ensure that important alerts are not dismissed
|
|
when selected. They remain on your notification screen until you actively
|
|
clear or swipe them away, ensuring that critical information stays visible
|
|
until addressed.
|
|
|
|
|
|
**Notification Channel** allow you to easily organize different notification
|
|
settings, including notification sounds, vibrations, and other device-specific
|
|
features. If you choose this option, please enter your desired channel
|
|
name below.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
select:
|
|
multiple: true
|
|
options:
|
|
- label: High Priority
|
|
value: high_priority
|
|
- label: Sticky Notification
|
|
value: sticky
|
|
- label: Notification Channel
|
|
value: channel
|
|
custom_value: false
|
|
sort: false
|
|
notify_channel:
|
|
name: Notification Channel - Android Only
|
|
description: 'If you have chosen to use a notification channel, simply enter
|
|
the name of an existing channel to apply its pre-configured settings.
|
|
If you don''t have a channel yet, you can create a new one by entering
|
|
a name here. When your automation sends the first notification, it will
|
|
create the channel on your device. After the channel is created, you can
|
|
customize its notification settings to your preference directly on your
|
|
device.
|
|
|
|
|
|
For more information on notification channels [Click Here](https://community.home-assistant.io/t/728100/13)
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
text: {}
|
|
persistent_notify_settings:
|
|
name: Notifications
|
|
icon: mdi:bell-outline
|
|
collapsed: true
|
|
input:
|
|
include_persistent_notification:
|
|
name: Use The UI Notification Option (Optional)
|
|
description: "Enabling this option will display notifications directly within
|
|
the Home Assistant user interface (UI). \n"
|
|
default: disabled_persistent_notification
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable UI Notifications
|
|
value: enable_persistent_notification
|
|
- label: Disable UI Notifications
|
|
value: disabled_persistent_notification
|
|
custom_value: false
|
|
sort: false
|
|
multiple: false
|
|
persistent_title:
|
|
name: Title
|
|
description: 'Enter in the title of your UI notification.
|
|
|
|
'
|
|
default: "\U0001F4E2 Enter UI Title Here"
|
|
selector:
|
|
text: {}
|
|
persistent_message:
|
|
name: Message
|
|
description: 'Enter in the message of your UI notification.
|
|
|
|
'
|
|
default: "Enter UI Message Here \U0001F642"
|
|
selector:
|
|
text: {}
|
|
tts_notify_settings:
|
|
name: Text-to-Speech Announcement
|
|
icon: mdi:bullhorn-outline
|
|
collapsed: true
|
|
input:
|
|
include_tts_announcement:
|
|
name: Use The Text-to-Speech Announcement Option (Optional)
|
|
description: 'Enabling this option will send a Text-to-Speech notification
|
|
to the selected Media Players below.
|
|
|
|
'
|
|
default: disable_tts_announcement
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable Text-to-Speech Announcements
|
|
value: enable_tts_announcement
|
|
- label: Disable Text-to-Speech Announcements
|
|
value: disable_tts_announcement
|
|
custom_value: false
|
|
sort: false
|
|
multiple: false
|
|
text_to_speech_engine:
|
|
name: Text-to-Speech Service Provider
|
|
description: 'Select the Text-to-Speech service provider.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
entity:
|
|
domain:
|
|
- tts
|
|
multiple: false
|
|
media_player:
|
|
name: Media Player
|
|
description: 'Select the Media Player/s that will play your Text-to-Speech
|
|
announcement message.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
entity:
|
|
domain:
|
|
- media_player
|
|
multiple: true
|
|
notify_tts_message:
|
|
name: Announcement Message
|
|
description: 'Enter in the message of your Text-to-Speech announcement.
|
|
|
|
'
|
|
default: Enter TTS Message Here
|
|
selector:
|
|
text:
|
|
multiline: true
|
|
multiple: false
|
|
time_settings:
|
|
name: Time
|
|
icon: mdi:clock-outline
|
|
collapsed: true
|
|
input:
|
|
include_time:
|
|
name: Use The Time Options (Optional)
|
|
description: 'Use the "Start Time", **End Time** and the **Weekdays** values
|
|
to only run the automation between the time periods. This option allows
|
|
you to disable the automation during sleeping hours to avoid disturbing
|
|
anyone. Another example is setting the time between 5pm and 9pm for the
|
|
''Dinner is Ready'' call. This way, if you accidentally activate the trigger
|
|
outside these hours, the automation will not run.
|
|
|
|
'
|
|
default: time_disabled
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable the time options
|
|
value: time_enabled
|
|
- label: Disable the time options
|
|
value: time_disabled
|
|
custom_value: false
|
|
sort: false
|
|
multiple: false
|
|
after_time:
|
|
name: Start Time
|
|
description: 'Set the start time.
|
|
|
|
'
|
|
default: 00:00:00
|
|
selector:
|
|
time: {}
|
|
before_time:
|
|
name: End Time
|
|
description: 'Set the end time.
|
|
|
|
'
|
|
default: 00:00:00
|
|
selector:
|
|
time: {}
|
|
weekday_options:
|
|
name: Weekdays
|
|
description: 'Select the days of the week you would like the automation
|
|
to run. You must select "Enable the time options" above for the weekdays
|
|
selections to work.
|
|
|
|
'
|
|
default:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- fri
|
|
- sat
|
|
- sun
|
|
selector:
|
|
select:
|
|
multiple: true
|
|
mode: list
|
|
options:
|
|
- label: Monday
|
|
value: mon
|
|
- label: Tuesday
|
|
value: tue
|
|
- label: Wednesday
|
|
value: wed
|
|
- label: Thursday
|
|
value: thu
|
|
- label: Friday
|
|
value: fri
|
|
- label: Saturday
|
|
value: sat
|
|
- label: Sunday
|
|
value: sun
|
|
custom_value: false
|
|
sort: false
|
|
global_conditions_settings:
|
|
name: Global Conditions
|
|
icon: mdi:earth
|
|
collapsed: true
|
|
input:
|
|
global_conditions:
|
|
name: Global Conditions
|
|
description: 'Enter any global conditions you would like to apply to the
|
|
automation.
|
|
|
|
'
|
|
default: []
|
|
selector:
|
|
condition: {}
|
|
source_url: https://gist.github.com/Blackshome/180ca4a24af81cd5d843acfc039039bc
|
|
mode: single
|
|
max_exceeded: silent
|
|
variables:
|
|
trigger_state: !input trigger_state
|
|
trigger_state_entity: !input trigger_state_entity
|
|
trigger_numeric_entity: !input trigger_numeric_entity
|
|
above_state: !input above_state
|
|
below_state: !input below_state
|
|
time_delay_state: !input time_delay_state
|
|
include_notify: !input include_notify
|
|
notify_device: !input notify_device
|
|
notify_title: !input notify_title
|
|
notify_message: !input notify_message
|
|
notify_interruption_level: !input notify_interruption_level
|
|
notify_data: !input notify_data
|
|
notify_channel: !input notify_channel
|
|
include_persistent_notification: !input include_persistent_notification
|
|
persistent_title: !input persistent_title
|
|
persistent_message: !input persistent_message
|
|
include_tts_announcement: !input include_tts_announcement
|
|
text_to_speech_engine: !input text_to_speech_engine
|
|
media_player: !input media_player
|
|
notify_tts_message: !input notify_tts_message
|
|
include_time: !input include_time
|
|
after_time: !input after_time
|
|
before_time: !input before_time
|
|
weekday_options: !input weekday_options
|
|
global_conditions: !input global_conditions
|
|
device_message_data: "{% set message = namespace(data={}) %} {% if notify_interruption_level
|
|
in ['active', 'critical', 'time-sensitive', 'passive'] %}\n {% set message.data
|
|
= dict(message.data, **{ 'push': {'interruption-level': notify_interruption_level
|
|
}}) %}\n{% endif %} {% if 'high_priority' in notify_data %}\n {% set message.data
|
|
= dict(message.data, **{ 'ttl': 0, 'priority': 'high' }) %}\n{% endif %} {% if
|
|
'channel' in notify_data %}\n {% set message.data = dict(message.data, **{ 'channel':
|
|
notify_channel }) %}\n{% endif %} {% if 'sticky' in notify_data %}\n {% set message.data
|
|
= dict(message.data, **{ 'sticky': \"true\" }) %}\n{% endif %} {{ message.data
|
|
}}"
|
|
trigger:
|
|
- platform: state
|
|
id: t0
|
|
entity_id: !input trigger_state_entity
|
|
for: !input time_delay_state
|
|
- platform: state
|
|
id: t1
|
|
entity_id: !input trigger_state_entity
|
|
to: !input trigger_state
|
|
for: !input time_delay_state
|
|
- platform: numeric_state
|
|
id: t2
|
|
entity_id: !input trigger_numeric_entity
|
|
above: !input above_state
|
|
for: !input time_delay_state
|
|
- platform: numeric_state
|
|
id: t3
|
|
entity_id: !input trigger_numeric_entity
|
|
below: !input below_state
|
|
for: !input time_delay_state
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t0
|
|
- '{{ trigger_state == ''button_any_state'' }}'
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t1
|
|
- '{{ (trigger_state != ''button_any_state'') or (trigger_state != ''numeric_state_above'')
|
|
or (trigger_state != ''numeric_state_below'') or (trigger_state != ''numeric_state_above_below'')
|
|
}}'
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t2
|
|
- '{{ (trigger_state == ''numeric_state_above'') or (trigger_state == ''numeric_state_above_below'')
|
|
}}'
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t3
|
|
- '{{ (trigger_state == ''numeric_state_below'') or (trigger_state == ''numeric_state_above_below'')
|
|
}}'
|
|
- condition: or
|
|
conditions:
|
|
- '{{ include_time == ''time_disabled'' }}'
|
|
- condition: and
|
|
conditions:
|
|
- condition: time
|
|
after: !input after_time
|
|
before: !input before_time
|
|
weekday: !input weekday_options
|
|
- '{{ include_time == ''time_enabled'' }}'
|
|
- condition: and
|
|
conditions: !input global_conditions
|
|
action:
|
|
- choose:
|
|
- alias: Check if notification is enabled
|
|
conditions:
|
|
- '{{ include_notify == ''enable_mobile_app_notify'' }}'
|
|
sequence:
|
|
- alias: Send a notification to each device
|
|
repeat:
|
|
for_each: !input notify_device
|
|
sequence:
|
|
- service: notify.mobile_app_{{ device_attr(repeat.item, 'name') | slugify
|
|
}}
|
|
data:
|
|
title: !input notify_title
|
|
message: !input notify_message
|
|
data: '{{ device_message_data }}'
|
|
- choose:
|
|
- alias: Use the persistent notification is enabled
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ include_persistent_notification == ''enable_persistent_notification''
|
|
}}'
|
|
sequence:
|
|
- service: persistent_notification.create
|
|
data:
|
|
title: !input persistent_title
|
|
message: !input persistent_message
|
|
- choose:
|
|
- alias: Check if tts announcement is enabled
|
|
conditions:
|
|
- '{{ include_tts_announcement == ''enable_tts_announcement'' }}'
|
|
sequence:
|
|
- service: tts.speak
|
|
target:
|
|
entity_id: !input text_to_speech_engine
|
|
data:
|
|
media_player_entity_id: !input media_player
|
|
message: !input notify_tts_message
|