chore: initial baseline before refactoring

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.
This commit is contained in:
2026-05-02 14:24:53 +02:00
commit 5f01411780
149 changed files with 47886 additions and 0 deletions
@@ -0,0 +1,601 @@
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