1024 lines
50 KiB
YAML
1024 lines
50 KiB
YAML
blueprint:
|
|
name: Low Battery Notifications & Actions
|
|
description:
|
|
"# \U0001FAAB Low Battery Notifications & Actions\n**Version: 2.5**\n\n\U0001F680
|
|
Stay Charged, Stay Smart! Let's automate and take charge of your battery maintenance!\U0001F50B⚡\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\n<details> <summary><b>The Automation Process:</b> \U0001F448</summary>\n\n
|
|
\ - **Trigger Options:**\n - **Button Helper:** Press a button in the user
|
|
interface (UI) to check battery levels.\n - **Time & Day:** Automatically periodically
|
|
checks battery levels on any given time and day.\n\n - **Battery Sensors:**\n
|
|
\ - Automatically detects all battery sensors used in Home Assistant.\n -
|
|
Set a battery low warning percentage to identify all batteries below this level.\n
|
|
\ - Detects 'Low' and unavailable batteries.\n - Excludes specific battery
|
|
sensors from notifications.\n - Create a custom group of battery sensors with
|
|
its own independent low battery warning percentage.\n\n - **Notification Options:**\n
|
|
\ - Opt to send messages to one or multiple devices.\n - Opt to display your
|
|
notifications directly within the Home Assistant user interface (UI).\n - Choose
|
|
which battery sensors to use, and then select their states from one of three preset
|
|
messages:\n - Low battery sensors + Battery level % + Unavailable sensors.\n
|
|
\ - Low battery sensors + Battery level %.\n - Unavailable sensors.\n
|
|
\ - Opt to receive a confirmation message if all batteries are okay.\n -
|
|
Opt to use action buttons in your device notification that allows you to add your
|
|
low batteries to a To-Do list.\n - Compatible with Apple iOS and Android devices.\n\n
|
|
\ - **Custom Actions:**\n - Customize actions to suit your preferences and
|
|
needs, enhancing the automations functionality.\n - Utilize 10 custom predetermined
|
|
battery sensors within the blueprint for more tailored and precise actions.\n
|
|
\ - Configure custom actions to include features like customizing notifications
|
|
or playing announcements on platforms like The Voice (HA), Google, Alexa, TTS,
|
|
etc.\n\n - **Custom Conditions:**\n - Enter any custom conditions to further
|
|
customize the automation process.\n</details>\n\nNeed help? \n- FAQ: [Click Here](https://community.home-assistant.io/t/653754/2?u=blacky)\n-
|
|
Community Support Including Updates: [Click Here](https://community.home-assistant.io/t/653754)\n\nRequired
|
|
= *\n"
|
|
domain: automation
|
|
input:
|
|
trigger_settings:
|
|
name: Triggers *
|
|
icon: mdi:cog-outline
|
|
description: You must select at least one trigger *
|
|
collapsed: true
|
|
input:
|
|
include_button:
|
|
name: Use The Button Helper Trigger (Optional)
|
|
description:
|
|
"Select if you would like a button helper to trigger the automation.
|
|
This is useful if you would like to check the battery levels by pressing
|
|
a button in the UI.
|
|
|
|
|
|
For more information on how to create a button helper [Click Here](https://community.home-assistant.io/t/653754/4)"
|
|
default: disable_button_trigger
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Use a button trigger
|
|
value: enable_button_trigger
|
|
- label: Dont use a button trigger
|
|
value: disable_button_trigger
|
|
custom_value: false
|
|
# # sort: false
|
|
multiple: false
|
|
button_entity:
|
|
name: Button Helper
|
|
description: Input your button helper.
|
|
default: []
|
|
selector:
|
|
entity:
|
|
filter:
|
|
- domain:
|
|
- input_button
|
|
multiple: false
|
|
include_time:
|
|
name: Use The Time Trigger (Optional)
|
|
description:
|
|
Select if you would like to use the time trigger. This is useful
|
|
if you would like to periodically check the battery levels on any given
|
|
time and day.
|
|
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
|
|
time:
|
|
name: Time
|
|
description: Set the time you would like to run the automation.
|
|
default: 00:00:00
|
|
selector:
|
|
time: {}
|
|
weekday_options:
|
|
name: Weekdays
|
|
description:
|
|
Select the days of the week you would like the automation to
|
|
run.
|
|
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
|
|
battery_settings:
|
|
name: Battery Settings
|
|
icon: mdi:battery-alert-variant-outline
|
|
collapsed: true
|
|
input:
|
|
battery_level:
|
|
name: Battery Low Warning Level
|
|
description:
|
|
Set the battery low warning percentage to identify all batteries
|
|
below this level.
|
|
default: 20
|
|
selector:
|
|
number:
|
|
min: 1.0
|
|
max: 100.0
|
|
step: 1.0
|
|
unit_of_measurement: "%"
|
|
mode: slider
|
|
exclude_sensors:
|
|
name: Excluded Battery Sensors (Optional)
|
|
description:
|
|
"Choose the battery sensors to be excluded when the automation
|
|
runs. The automation will attempt to detect all battery sensors used in
|
|
Home Assistant, including those of your phones, tablets, etc. However,
|
|
it may not always be necessary or desirable to monitor these batteries.
|
|
Selecting these batteries here will exclude them from your notifications.
|
|
|
|
|
|
**NOTE** - You can only use entities. Areas, devices and labels are not
|
|
supported."
|
|
default:
|
|
entity_id: []
|
|
selector:
|
|
target:
|
|
entity:
|
|
- device_class:
|
|
- battery
|
|
custom_group:
|
|
name: Battery Sensors - Custom Group (Optional)
|
|
description:
|
|
"You can select a custom group of battery sensors to be included
|
|
in your notifications. This custom group has its own independent 'Battery
|
|
Low Warning Level' setting below. When using all batteries along with
|
|
the custom group in a single automation, it is recommended to exclude
|
|
the custom group of batteries specified above in the 'Excluded Battery
|
|
Sensors' section.
|
|
|
|
|
|
Excluded battery sensors are not linked to this custom group.
|
|
|
|
|
|
**NOTE** - You can only use entities. Areas, devices and labels are not
|
|
supported."
|
|
default:
|
|
entity_id: []
|
|
selector:
|
|
target:
|
|
entity:
|
|
- device_class:
|
|
- battery
|
|
custom_group_battery_level:
|
|
name: Custom Group - Battery Low Warning Level
|
|
description:
|
|
Set the battery low warning percentage to identify all batteries
|
|
below this level.
|
|
default: 20
|
|
selector:
|
|
number:
|
|
min: 1.0
|
|
max: 100.0
|
|
step: 1.0
|
|
unit_of_measurement: "%"
|
|
mode: slider
|
|
easy_notify_settings:
|
|
name: Easy Notify
|
|
icon: mdi:bell-check-outline
|
|
collapsed: true
|
|
input:
|
|
include_easy_notify:
|
|
name: Use The Easy Notify - Device Notification Options (Optional)
|
|
description:
|
|
Enabling this option will send notifications to the selected
|
|
devices below. It allows you to choose which battery sensors to use, and
|
|
then select their states from one of three preset messages. You can also
|
|
opt to receive a confirmation message if all batteries are okay. For further
|
|
customization or to integrate with voice assistants like HA, Google, Alexa,
|
|
TTS, etc., please explore the custom action options below.
|
|
default: disabled_easy_notify
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable Device Notification
|
|
value: enable_easy_notify
|
|
- label: Enable Device Notification + Okay Confirmation Message
|
|
value: enable_easy_okay_notify
|
|
- label: Disable Device Notification
|
|
value: disabled_easy_notify
|
|
custom_value: false
|
|
# # sort: false
|
|
multiple: false
|
|
include_persistent_notification:
|
|
name: Use The Easy Notify - UI Notification Options (Optional)
|
|
description:
|
|
Enabling this option will display notifications directly within
|
|
the Home Assistant user interface (UI). It allows you to choose which
|
|
battery sensors to use, and then select their states from one of three
|
|
preset messages. You can also opt to receive a confirmation message in
|
|
the UI if all batteries are okay. For further customization or to integrate
|
|
with voice assistants like HA, Google, Alexa, TTS, etc., please explore
|
|
the custom action options below.
|
|
default: disabled_persistent_notification
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable UI Notification
|
|
value: enable_persistent_notification
|
|
- label: Enable UI Notification + Okay Confirmation Message
|
|
value: enable_persistent_okay_notification
|
|
- label: Disable UI Notification
|
|
value: disabled_persistent_notification
|
|
custom_value: false
|
|
# sort: false
|
|
multiple: false
|
|
sensor_selection:
|
|
name: Sensor Selection
|
|
description:
|
|
Please select which sensors you would like to include in your
|
|
notifications.
|
|
default: enable_all_sensors
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Use Battery Sensors - Custom Group
|
|
value: enable_battery_sensors_custom_group
|
|
- label: Use All Battery Sensors Minus Excluded Battery Sensors
|
|
value: enable_all_sensors
|
|
- label:
|
|
Use All Battery Sensors Minus Excluded Battery Sensors + Custom
|
|
Group
|
|
value: enable_all_and_custom_group_sensors
|
|
custom_value: false
|
|
# # sort: false
|
|
multiple: false
|
|
notify_device:
|
|
name: Devices Notified (Optional)
|
|
description:
|
|
If you've enabled device notifications above, please select
|
|
the devices to receive the notifications.
|
|
default: []
|
|
selector:
|
|
device:
|
|
filter:
|
|
- integration: mobile_app
|
|
multiple: true
|
|
notify_title:
|
|
name: Title
|
|
description: Enter in the notification title of your message.
|
|
default: Low Battery Notification
|
|
selector:
|
|
text: {}
|
|
notify_message:
|
|
name: Message
|
|
description:
|
|
"Choose one of the three preset messages from the dropdown
|
|
menu.
|
|
|
|
|
|
1 - Low battery sensors + Battery level % + Unavailable sensors.
|
|
|
|
2 - Low battery sensors + Battery level %.
|
|
|
|
3 - Unavailable sensors."
|
|
default: all_sensors
|
|
selector:
|
|
select:
|
|
mode: dropdown
|
|
options:
|
|
- label: Low battery sensors + Battery level % + Unavailable sensors
|
|
value: all_sensors
|
|
- label: Low battery sensors + Battery level %
|
|
value: sensors
|
|
- label: Unavailable sensors
|
|
value: unavailable_sensors
|
|
custom_value: false
|
|
# # sort: false
|
|
multiple: false
|
|
notify_okay_message:
|
|
name: Okay Confirmation Message
|
|
description:
|
|
Enter in the notification message you would like to receive
|
|
when all your batteries are okay.
|
|
default: YES! All batteries are okay :)
|
|
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/653754/192?u=blacky)"
|
|
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/653754/192?u=blacky)"
|
|
default: []
|
|
selector:
|
|
text: {}
|
|
action_buttons_settings:
|
|
name: Action Buttons
|
|
icon: mdi:gesture-tap-button
|
|
collapsed: true
|
|
input:
|
|
notify_action_buttons:
|
|
name: Easy Notify - Action Buttons (Optional)
|
|
description:
|
|
Enhance your device notifications with an actionable To-Do
|
|
list button feature. With just a hold, release and tap, effortlessly add
|
|
selected items from your low battery notification to any of your chosen
|
|
To-Do lists. Plus, for added assurance, you can opt to receive a confirmation
|
|
message confirming the action.
|
|
default: disabled_notify_action_buttons
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Add To-Do List Action Buttons
|
|
value: enable_to_do_list_button
|
|
- label: Add To-Do List Action Buttons + Confirmation Message
|
|
value: enable_to_do_list_button_and_confirmation
|
|
- label: Disable Action Buttons
|
|
value: disabled_notify_action_buttons
|
|
custom_value: false
|
|
# # sort: false
|
|
multiple: false
|
|
to_do_list:
|
|
name: Easy Notify Action Buttons - To-Do List Selection
|
|
description: "Choose the To-Do list where you'd like to add your task.
|
|
|
|
|
|
**Note** - The default shopping list isn't compatible due to its lack
|
|
of description capability. However, all other To-Do lists are fully supported."
|
|
default: []
|
|
selector:
|
|
entity:
|
|
domain:
|
|
# - todo
|
|
multiple: false
|
|
to_do_task_title:
|
|
name: Easy Notify Action Buttons - Task Title
|
|
description:
|
|
When the action button is pressed, it will add a task to your
|
|
chosen To-Do list. Please enter the title you would like for your To-Do
|
|
task
|
|
default: Batteries To Be Replaced
|
|
selector:
|
|
text: {}
|
|
action_button_to_do:
|
|
name: Easy Notify Action Buttons - Action Button
|
|
description:
|
|
Please specify the name for the action button to be displayed
|
|
in the notification. When pressed this button effortlessly adds a task
|
|
to your chosen To-Do list.
|
|
default: Add To To-Do List!
|
|
selector:
|
|
text: {}
|
|
action_button_cancel:
|
|
name: Easy Notify Action Buttons - Cancel Button
|
|
description:
|
|
Please specify the name for the cancel button to be displayed
|
|
in the notification. This button allows you to cancel the task addition
|
|
process.
|
|
default: Cancel
|
|
selector:
|
|
text: {}
|
|
action_button_confirmation_title:
|
|
name: Easy Notify Action Buttons - Action & Cancel Button Confirmation Title
|
|
description:
|
|
Please enter in a title for the confirmation notification message
|
|
when an action button or a cancel button is pressed.
|
|
default: Low Battery Confirmation
|
|
selector:
|
|
text: {}
|
|
action_button_confirmation_message:
|
|
name: Easy Notify Action Buttons - Action Button Confirmation Message
|
|
description:
|
|
Please enter in the message for the confirmation notification
|
|
message when the action button is pressed.
|
|
default: Your low batteries have been added to your To-Do list
|
|
selector:
|
|
text: {}
|
|
cancel_action_button_confirmation_message:
|
|
name: Easy Notify Action Buttons - Cancel Button Confirmation Message
|
|
description:
|
|
Please enter in the message for the confirmation notification
|
|
message when the cancel button is pressed.
|
|
default: Cancelled - Nothing was added to your To-Do list
|
|
selector:
|
|
text: {}
|
|
custom_actions_settings:
|
|
name: Custom Actions
|
|
icon: mdi:code-tags
|
|
collapsed: true
|
|
input:
|
|
include_custom_actions:
|
|
name: Use The Custom Action Options (Optional)
|
|
description:
|
|
You can add any custom actions you'd like to run when the automation
|
|
is triggered. This can include customizing notifications or playing announcements
|
|
on platforms like The Voice (HA), Google, Alexa, TTS, etc.
|
|
default: disabled_custom_actions
|
|
selector:
|
|
select:
|
|
options:
|
|
- label: Enable Custom Actions
|
|
value: enable_custom_actions
|
|
- label: Disable Custom Actions
|
|
value: disabled_custom_actions
|
|
custom_value: false
|
|
# sort: false
|
|
multiple: false
|
|
custom_actions:
|
|
name: Custom Actions
|
|
description:
|
|
'Add your custom actions that you''d like to run when the automation
|
|
is triggered. Below are 10 sensors you can include in your actions, depending
|
|
on your preferences.
|
|
|
|
|
|
**All Battery Sensors Minus Excluded**
|
|
|
|
1 - Use "{{all_sensors}}" for - Low battery sensors + Battery level %
|
|
+ Unavailable sensors.
|
|
|
|
2 - Use "{{sensors}}" for - Low battery sensors + Battery level %.
|
|
|
|
3 - Use "{{unavailable_sensors}}" for - Unavailable sensors.
|
|
|
|
4 - Use "{{sensors_names}}" for - Low battery sensors - Sensor name only.
|
|
|
|
5 - Use "{{unavailable_sensors_names}}" for - Unavailable sensors - Sensor
|
|
name only.
|
|
|
|
|
|
**Battery Sensors - Custom Group**
|
|
|
|
1 - Use "{{all_sensors_custom_group}}" for - Low battery sensors + Battery
|
|
level % + Unavailable sensors.
|
|
|
|
2 - Use "{{sensors_custom_group}}" for - Low battery sensors + Battery
|
|
level %.
|
|
|
|
3 - Use "{{unavailable_sensors_custom_group}}" for - Unavailable sensors.
|
|
|
|
4 - Use "{{sensors_names_custom_group}}" for - Low battery sensors - Sensor
|
|
name only.
|
|
|
|
5 - Use "{{unavailable_sensors_names_custom_group}}" for - Unavailable
|
|
sensors - Sensor name only.
|
|
|
|
|
|
For more information on how to use these sensors in your actions [Click
|
|
Here](https://community.home-assistant.io/t/653754/21)'
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
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/4010fb83bb8c19b5fa1425526c6ff0e2
|
|
mode: restart
|
|
max_exceeded: silent
|
|
variables:
|
|
include_button: !input include_button
|
|
button_entity: !input button_entity
|
|
include_time: !input include_time
|
|
time: !input time
|
|
weekday_options: !input weekday_options
|
|
battery_level: !input battery_level
|
|
exclude_sensors: !input exclude_sensors
|
|
custom_group: !input custom_group
|
|
custom_group_battery_level: !input custom_group_battery_level
|
|
include_easy_notify: !input include_easy_notify
|
|
include_persistent_notification: !input include_persistent_notification
|
|
sensor_selection: !input sensor_selection
|
|
notify_device: !input notify_device
|
|
notify_title: !input notify_title
|
|
notify_message: !input notify_message
|
|
notify_okay_message: !input notify_okay_message
|
|
notify_interruption_level: !input notify_interruption_level
|
|
notify_data: !input notify_data
|
|
notify_channel: !input notify_channel
|
|
notify_action_buttons: !input notify_action_buttons
|
|
to_do_list: !input to_do_list
|
|
to_do_task_title: !input to_do_task_title
|
|
action_button_to_do: !input action_button_to_do
|
|
action_button_cancel: !input action_button_cancel
|
|
action_button_confirmation_title: !input action_button_confirmation_title
|
|
action_button_confirmation_message: !input action_button_confirmation_message
|
|
cancel_action_button_confirmation_message: !input cancel_action_button_confirmation_message
|
|
include_custom_actions: !input include_custom_actions
|
|
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
|
|
}}"
|
|
device_message_data_action_button:
|
|
"{% 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 %} {% set actions = [\n {'action': action_button_to_do, 'title':
|
|
action_button_to_do},\n {'action': action_button_cancel, 'title': action_button_cancel}\n]
|
|
%}\n {% set message.data = dict(message.data, **{ 'actions': actions }) %}\n{{
|
|
message.data }}"
|
|
device_confirmation_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 %}\n {% set message.data = dict(message.data, **{ 'url': \"/todo?entity_id=\"
|
|
~ to_do_list, 'clickAction': \"/todo?entity_id=\" ~ to_do_list }) %}\n{{ message.data
|
|
}}"
|
|
all_sensors:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor
|
|
| rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int
|
|
and not state.entity_id in exclude_sensors.entity_id %}\n {% set low_battery.sensors
|
|
= low_battery.sensors + [state.name ~ ' @ ' ~ state.state ~ '%'] %}\n {% endif
|
|
%}\n{% endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', ['on', 'low']) %}\n {% if not state.entity_id in exclude_sensors.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is
|
|
low' ~ '!'] %}\n {% endif %}\n{% endfor %} {% for state in states.sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') %}\n {%
|
|
if \"unavailable\" in state | string and not state.entity_id in exclude_sensors.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is
|
|
' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor
|
|
| rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') | selectattr('state', 'in', 'unavailable') %}\n {% if not state.entity_id
|
|
in exclude_sensors.entity_id %}\n {% set low_battery.sensors = low_battery.sensors
|
|
+ [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors
|
|
| # sort(attribute='battery_level') | join(', ')}}"
|
|
sensors:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor
|
|
| rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int
|
|
and not state.entity_id in exclude_sensors.entity_id %}\n {% set low_battery.sensors
|
|
= low_battery.sensors + [state.name ~ ' @ ' ~ state.state ~ '%'] %}\n {% endif
|
|
%}\n{% endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', ['on', 'low']) %}\n {% if not state.entity_id in exclude_sensors.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is
|
|
low' ~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors |# sort(attribute='battery_level')
|
|
| join(', ')}}"
|
|
unavailable_sensors:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for state
|
|
in states.sensor | rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if \"unavailable\" in state | string and not state.entity_id
|
|
in exclude_sensors.entity_id %}\n {% set low_battery.sensors = low_battery.sensors
|
|
+ [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {%
|
|
for state in states.binary_sensor | rejectattr('attributes.device_class', 'undefined')
|
|
| selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', 'unavailable') %}\n {% if not state.entity_id in exclude_sensors.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is
|
|
' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors |# sort(attribute='battery_level')
|
|
| join(', ')}}"
|
|
sensors_names:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor
|
|
| rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int
|
|
and not state.entity_id in exclude_sensors.entity_id %}\n {% set low_battery.sensors
|
|
= low_battery.sensors + [state.name] %}\n {% endif %}\n{% endfor %} {% for state
|
|
in states.binary_sensor | rejectattr('attributes.device_class', 'undefined') |
|
|
selectattr('attributes.device_class', '==', 'battery') | selectattr('state', 'in',
|
|
['on', 'low']) %}\n {% if not state.entity_id in exclude_sensors.entity_id %}\n
|
|
\ {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif
|
|
%}\n{% endfor %} {{low_battery.sensors | # sort(attribute='battery_level') | join(',
|
|
')}}"
|
|
unavailable_sensors_names:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for
|
|
state in states.sensor | rejectattr('attributes.device_class', 'undefined') |
|
|
selectattr('attributes.device_class', '==', 'battery') %}\n {% if \"unavailable\"
|
|
in state | string and not state.entity_id in exclude_sensors.entity_id %}\n {%
|
|
set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif %}\n{%
|
|
endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', 'unavailable') %}\n {% if not state.entity_id in exclude_sensors.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {%
|
|
endif %}\n{% endfor %} {{low_battery.sensors |# sort(attribute='battery_level')
|
|
| join(', ')}}"
|
|
all_sensors_custom_group:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for
|
|
state in states.sensor | rejectattr('attributes.device_class', 'undefined') |
|
|
selectattr('attributes.device_class', '==', 'battery') %}\n {% if 0 <= state.state
|
|
| int(-1) <= custom_group_battery_level | int and state.entity_id in custom_group.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' @ '
|
|
~ state.state ~ '%'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor
|
|
| rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') | selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id
|
|
in custom_group.entity_id %}\n {% set low_battery.sensors = low_battery.sensors
|
|
+ [state.name ~ ' is low' ~ '!'] %}\n {% endif %}\n{% endfor %} {% for state
|
|
in states.sensor | rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if \"unavailable\" in state | string and state.entity_id
|
|
in custom_group.entity_id %}\n {% set low_battery.sensors = low_battery.sensors
|
|
+ [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {%
|
|
for state in states.binary_sensor | rejectattr('attributes.device_class', 'undefined')
|
|
| selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', 'unavailable') %}\n {% if state.entity_id in custom_group.entity_id %}\n
|
|
\ {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is ' ~
|
|
state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors | # sort(attribute='custom_group_battery_level')
|
|
| join(', ')}}"
|
|
sensors_custom_group:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for state
|
|
in states.sensor | rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= custom_group_battery_level
|
|
| int and state.entity_id in custom_group.entity_id %}\n {% set low_battery.sensors
|
|
= low_battery.sensors + [state.name ~ ' @ ' ~ state.state ~ '%'] %}\n {% endif
|
|
%}\n{% endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', ['on', 'low']) %}\n {% if state.entity_id in custom_group.entity_id %}\n
|
|
\ {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is low'
|
|
~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors |# sort(attribute='custom_group_battery_level')
|
|
| join(', ')}}"
|
|
unavailable_sensors_custom_group:
|
|
"{% set low_battery = namespace(sensors=[]) %}
|
|
{% for state in states.sensor | rejectattr('attributes.device_class', 'undefined')
|
|
| selectattr('attributes.device_class', '==', 'battery') %}\n {% if \"unavailable\"
|
|
in state | string and state.entity_id in custom_group.entity_id %}\n {% set
|
|
low_battery.sensors = low_battery.sensors + [state.name ~ ' is ' ~ state.state
|
|
~ '!'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor |
|
|
rejectattr('attributes.device_class', 'undefined') | selectattr('attributes.device_class',
|
|
'==', 'battery') | selectattr('state', 'in', 'unavailable') %}\n {% if state.entity_id
|
|
in custom_group.entity_id %}\n {% set low_battery.sensors = low_battery.sensors
|
|
+ [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors
|
|
|# sort(attribute='custom_group_battery_level') | join(', ')}}"
|
|
sensors_names_custom_group:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% for
|
|
state in states.sensor | rejectattr('attributes.device_class', 'undefined') |
|
|
selectattr('attributes.device_class', '==', 'battery') %}\n {% if 0 <= state.state
|
|
| int(-1) <= custom_group_battery_level | int and state.entity_id in custom_group.entity_id
|
|
%}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {%
|
|
endif %}\n{% endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', ['on', 'low']) %}\n {% if state.entity_id in custom_group.entity_id %}\n
|
|
\ {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif
|
|
%}\n{% endfor %} {{low_battery.sensors | # sort(attribute='custom_group_battery_level')
|
|
| join(', ')}}"
|
|
unavailable_sensors_names_custom_group:
|
|
"{% set low_battery = namespace(sensors=[])
|
|
%} {% for state in states.sensor | rejectattr('attributes.device_class', 'undefined')
|
|
| selectattr('attributes.device_class', '==', 'battery') %}\n {% if \"unavailable\"
|
|
in state | string and state.entity_id in custom_group.entity_id %}\n {% set
|
|
low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif %}\n{%
|
|
endfor %} {% for state in states.binary_sensor | rejectattr('attributes.device_class',
|
|
'undefined') | selectattr('attributes.device_class', '==', 'battery') | selectattr('state',
|
|
'in', 'unavailable') %}\n {% if state.entity_id in custom_group.entity_id %}\n
|
|
\ {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif
|
|
%}\n{% endfor %} {{low_battery.sensors |# sort(attribute='custom_group_battery_level')
|
|
| join(', ')}}"
|
|
easy_notify_message:
|
|
"{% set low_battery = namespace(sensors=[]) %} {% if sensor_selection
|
|
== 'enable_battery_sensors_custom_group' and notify_message == 'all_sensors' %}\n
|
|
\ {{all_sensors_custom_group|replace(', ', '\\n')}}\n{% elif sensor_selection
|
|
== 'enable_battery_sensors_custom_group' and notify_message == 'sensors'%}\n {{sensors_custom_group|replace(',
|
|
', '\\n')}}\n{% elif sensor_selection == 'enable_battery_sensors_custom_group'
|
|
and notify_message == 'unavailable_sensors'%}\n {{unavailable_sensors_custom_group|replace(',
|
|
', '\\n')}}\n{% elif sensor_selection == 'enable_all_sensors' and notify_message
|
|
== 'all_sensors' %}\n {{all_sensors|replace(', ', '\\n')}}\n{% elif sensor_selection
|
|
== 'enable_all_sensors' and notify_message == 'sensors'%}\n {{sensors|replace(',
|
|
', '\\n')}}\n{% elif sensor_selection == 'enable_all_sensors' and notify_message
|
|
== 'unavailable_sensors'%}\n {{unavailable_sensors|replace(', ', '\\n')}}\n{%
|
|
elif sensor_selection == 'enable_all_and_custom_group_sensors' and notify_message
|
|
== 'all_sensors' %}\n {{all_sensors|replace(', ', '\\n')}}{{'\\n'}}{{all_sensors_custom_group|replace(',
|
|
', '\\n')}}\n{% elif sensor_selection == 'enable_all_and_custom_group_sensors'
|
|
and notify_message == 'sensors'%}\n {{sensors|replace(', ', '\\n')}}{{'\\n'}}{{sensors_custom_group|replace(',
|
|
', '\\n')}}\n{% elif sensor_selection == 'enable_all_and_custom_group_sensors'
|
|
and notify_message == 'unavailable_sensors'%}\n {{unavailable_sensors|replace(',
|
|
', '\\n')}}{{'\\n'}}{{unavailable_sensors_custom_group|replace(', ', '\\n')}}\n{%
|
|
else %}\n []\n{% endif %}"
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: !input button_entity
|
|
id: t0
|
|
- trigger: time
|
|
at: !input time
|
|
id: t1
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t0
|
|
- "{{ include_button == 'enable_button_trigger' }}"
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id: t1
|
|
- "{{ include_time == 'time_enabled' }}"
|
|
- condition: or
|
|
conditions:
|
|
- "{{ include_time == 'time_disabled' }}"
|
|
- condition: and
|
|
conditions:
|
|
- condition: time
|
|
weekday: !input weekday_options
|
|
- "{{ include_time == 'time_enabled' }}"
|
|
- condition: trigger
|
|
id: t0
|
|
- condition: and
|
|
conditions: !input global_conditions
|
|
actions:
|
|
- choose:
|
|
- alias: Perform the custom actions
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ include_custom_actions == 'enable_custom_actions' }}"
|
|
sequence: !input custom_actions
|
|
- choose:
|
|
- alias: Use the easy notify options
|
|
conditions:
|
|
- condition: template
|
|
value_template:
|
|
"{{ (include_easy_notify == 'enable_easy_notify') or (include_easy_notify
|
|
== 'enable_easy_okay_notify') }}"
|
|
- condition: template
|
|
value_template: "{{ notify_device | length > 0 }}"
|
|
sequence:
|
|
- alias: Send a notification to each device
|
|
repeat:
|
|
for_each: !input notify_device
|
|
sequence:
|
|
- choose:
|
|
- alias: Sensors have been found
|
|
conditions:
|
|
- "{{ easy_notify_message != '' }}"
|
|
sequence:
|
|
- choose:
|
|
- alias: Easy notify with no action button
|
|
conditions:
|
|
- "{{ notify_action_buttons == 'disabled_notify_action_buttons'
|
|
}}"
|
|
sequence:
|
|
- action:
|
|
notify.mobile_app_{{ device_attr(repeat.item, 'name') |
|
|
slugify }}
|
|
data:
|
|
title: !input notify_title
|
|
message: "{{easy_notify_message}}"
|
|
data: "{{ device_message_data }}"
|
|
- alias: Easy notify with action button
|
|
conditions:
|
|
- "{{ notify_action_buttons != 'disabled_notify_action_buttons'
|
|
}}"
|
|
sequence:
|
|
- action:
|
|
notify.mobile_app_{{ device_attr(repeat.item, 'name') |
|
|
slugify }}
|
|
data:
|
|
title: !input notify_title
|
|
message: "{{easy_notify_message}}"
|
|
data: "{{ device_message_data_action_button }}"
|
|
- alias: No sensors have been found
|
|
conditions:
|
|
- "{{ easy_notify_message == '' }}"
|
|
- "{{ include_easy_notify == 'enable_easy_okay_notify' }}"
|
|
sequence:
|
|
- action:
|
|
notify.mobile_app_{{ device_attr(repeat.item, 'name') | slugify
|
|
}}
|
|
data:
|
|
title: !input notify_title
|
|
message: !input notify_okay_message
|
|
data: "{{ device_message_data }}"
|
|
- choose:
|
|
- alias: Use the easy notify persistent notification options
|
|
conditions:
|
|
- condition: template
|
|
value_template:
|
|
"{{ (include_persistent_notification == 'enable_persistent_notification')
|
|
or (include_persistent_notification == 'enable_persistent_okay_notification')
|
|
}}"
|
|
sequence:
|
|
- choose:
|
|
- alias: Sensors have been found
|
|
conditions:
|
|
- "{{ easy_notify_message != '' }}"
|
|
sequence:
|
|
- action: persistent_notification.create
|
|
data:
|
|
title: "\U0001FAAB {{notify_title}}"
|
|
message: "{{easy_notify_message}}"
|
|
- alias: No sensors have been found
|
|
conditions:
|
|
- "{{ easy_notify_message == '' }}"
|
|
- "{{ include_persistent_notification == 'enable_persistent_okay_notification'
|
|
}}"
|
|
sequence:
|
|
- action: persistent_notification.create
|
|
data:
|
|
title: "\U0001FAAB {{notify_title}}"
|
|
message: !input notify_okay_message
|
|
- choose:
|
|
- alias: Check if the To-Do action button is enabled
|
|
conditions:
|
|
- condition: template
|
|
value_template:
|
|
"{{ (include_easy_notify == 'enable_easy_notify') or (include_easy_notify
|
|
== 'enable_easy_okay_notify') }}"
|
|
- condition: template
|
|
value_template:
|
|
"{{(notify_action_buttons == 'enable_to_do_list_button') or
|
|
(notify_action_buttons == 'enable_to_do_list_button_and_confirmation')}}"
|
|
- condition: template
|
|
value_template: "{{ notify_device | length > 0 }}"
|
|
sequence:
|
|
- alias: Wait for a response from the action buttons
|
|
wait_for_trigger:
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: "{{ action_button_to_do }}"
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: "{{ action_button_cancel }}"
|
|
- choose:
|
|
- alias: Check if confirmation message is disabled
|
|
conditions:
|
|
- condition: template
|
|
value_template:
|
|
"{{ notify_action_buttons == 'enable_to_do_list_button'
|
|
}}"
|
|
sequence:
|
|
- if:
|
|
- alias: Confirmation from the action buttons
|
|
condition: template
|
|
value_template: "{{ wait.trigger.idx is defined }}"
|
|
then:
|
|
- alias: Perform the chosen actions
|
|
choose:
|
|
- conditions:
|
|
"{{ wait.trigger.event.data.action == action_button_to_do
|
|
}}"
|
|
sequence:
|
|
- alias: Add task to To-Do list
|
|
action: todo.add_item
|
|
metadata: {}
|
|
data:
|
|
item: !input to_do_task_title
|
|
description: "{{easy_notify_message}}"
|
|
target:
|
|
entity_id: !input to_do_list
|
|
- conditions:
|
|
"{{ wait.trigger.event.data.action == action_button_cancel
|
|
}}"
|
|
sequence:
|
|
- stop: Stop the automation
|
|
- alias: Check if confirmation message is enabled
|
|
conditions:
|
|
- condition: template
|
|
value_template:
|
|
"{{ notify_action_buttons == 'enable_to_do_list_button_and_confirmation'
|
|
}}"
|
|
sequence:
|
|
- if:
|
|
- alias: Confirmation from the action buttons
|
|
condition: template
|
|
value_template: "{{ wait.trigger.idx is defined }}"
|
|
then:
|
|
- alias: Perform the chosen actions
|
|
choose:
|
|
- conditions:
|
|
"{{ wait.trigger.event.data.action == action_button_to_do
|
|
}}"
|
|
sequence:
|
|
- alias: Add task to To-Do list
|
|
action: todo.add_item
|
|
metadata: {}
|
|
data:
|
|
item: !input to_do_task_title
|
|
description: "{{easy_notify_message}}"
|
|
target:
|
|
entity_id: !input to_do_list
|
|
- alias: Send a notification to each device
|
|
repeat:
|
|
for_each: !input notify_device
|
|
sequence:
|
|
- action:
|
|
notify.mobile_app_{{ device_attr(repeat.item, 'name')
|
|
| slugify }}
|
|
data:
|
|
title: !input action_button_confirmation_title
|
|
message: !input action_button_confirmation_message
|
|
data: "{{ device_confirmation_message_data }}"
|
|
- conditions:
|
|
"{{ wait.trigger.event.data.action == action_button_cancel
|
|
}}"
|
|
sequence:
|
|
- alias: Send a notification to each device
|
|
repeat:
|
|
for_each: !input notify_device
|
|
sequence:
|
|
- action:
|
|
notify.mobile_app_{{ device_attr(repeat.item, 'name')
|
|
| slugify }}
|
|
data:
|
|
title: !input action_button_confirmation_title
|
|
message: !input cancel_action_button_confirmation_message
|
|
data: "{{ device_message_data }}"
|