You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
5.6 KiB
119 lines
5.6 KiB
######################################################################
|
|
# @CCOSTAN - Follow Me on X
|
|
# For more info visit https://www.vcloudinfo.com/click-here
|
|
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
|
# -------------------------------------------------------------------
|
|
# Notification Engine Scripts - Flexible push helpers for family devices.
|
|
# Compose messages from value1/value2/value3 with optional actions.
|
|
# -------------------------------------------------------------------
|
|
# Video Tutorial: https://youtu.be/mK1wdpxhLbM
|
|
######################################################################
|
|
### Script for Sending Notifications to Mobile Phones
|
|
# This script (`notify_engine`) and its variant (`notify_engine_two_button`) are designed to send
|
|
# customized notifications to specified recipients in Home Assistant.
|
|
# - The script dynamically chooses the notification service based on the 'who' parameter,
|
|
# allowing targeting individuals like Stacey, Carlo, or groups like family or parents.
|
|
# - Notifications include a title and a composite message from 'value1', 'value2', and 'value3'.
|
|
# - The script can optionally attach camera snapshots, specify notification groups, and set interruption levels.
|
|
|
|
# Usage:
|
|
# To call this script, specify the action as `script.notify_engine` or `script.notify_engine_two_button`
|
|
# and provide the necessary data parameters:
|
|
# - 'title': The notification title.
|
|
# - 'value1', 'value2', 'value3': Components of the message.
|
|
# - 'who': Recipient identifier (e.g., 'stacey', 'carlo', 'paige', 'family', 'parents').
|
|
# - 'camera_entity': Camera entity ID for snapshots (optional).
|
|
# - 'group': Notification group (optional, defaults to 'information').
|
|
# - 'level': Interruption level for the notification (optional, defaults to 'active').
|
|
|
|
# The 'notify_engine_two_button' variant includes additional parameters for two interactive buttons:
|
|
# - 'title1', 'title2': Titles for the action buttons.
|
|
# - 'action1', 'action2': Actions to be performed when buttons are pressed.
|
|
# - 'icon1', 'icon2': Icons for the buttons (optional).
|
|
# - 'destructive1', 'destructive2': Boolean flags to mark buttons as destructive (optional).
|
|
|
|
|
|
notify_engine:
|
|
alias: Notify Engine
|
|
mode: parallel
|
|
max: 20
|
|
sequence:
|
|
- condition: state
|
|
entity_id: input_boolean.text_notifications
|
|
state: 'on'
|
|
- variables:
|
|
notify_service: >-
|
|
{% if who | default('family', true) == 'stacey' %}
|
|
notify.mobile_app_stacey_iphone11
|
|
{% elif who | default('family', true) == 'carlo' %}
|
|
notify.mobile_app_carlo_maxpro
|
|
{% elif who | default('family', true) == 'parents' %}
|
|
notify.ios_parents
|
|
{% else %}
|
|
notify.ios_family
|
|
{% endif %}
|
|
notify_message: >-
|
|
{{ ' '.join([
|
|
value1 | default('', true),
|
|
value2 | default('', true),
|
|
value3 | default('', true)
|
|
]) | trim }}
|
|
has_actions: >-
|
|
{{ action1 | default('', true) | length > 0
|
|
or action2 | default('', true) | length > 0 }}
|
|
- choose:
|
|
- conditions: "{{ has_actions }}"
|
|
sequence:
|
|
- service: "{{ notify_service }}"
|
|
data:
|
|
title: "{{ title | default('', true) }}"
|
|
message: "{{ notify_message }}"
|
|
data:
|
|
actions:
|
|
- title: "{{ title1 | default('', true) }}"
|
|
action: "{{ action1 | default('', true) }}"
|
|
icon: "{{ icon1 | default('sfsymbols:house.circle', true) }}"
|
|
destructive: "{{ destructive1 | default(false, true) }}"
|
|
- title: "{{ title2 | default('', true) }}"
|
|
action: "{{ action2 | default('', true) }}"
|
|
icon: "{{ icon2 | default('sfsymbols:house.circle', true) }}"
|
|
destructive: "{{ destructive2 | default(false, true) }}"
|
|
group: "{{ group | default('information', true) }}"
|
|
entity_id: "{{ camera_entity | default('', true) }}"
|
|
push:
|
|
interruption-level: "{{ level | default('active', true) }}"
|
|
default:
|
|
- service: "{{ notify_service }}"
|
|
data:
|
|
title: "{{ title | default('', true) }}"
|
|
message: "{{ notify_message }}"
|
|
data:
|
|
group: "{{ group | default('information', true) }}"
|
|
entity_id: "{{ camera_entity | default('', true) }}"
|
|
push:
|
|
interruption-level: "{{ level | default('active', true) }}"
|
|
|
|
notify_engine_two_button:
|
|
alias: Notify Engine Two Button
|
|
mode: parallel
|
|
max: 20
|
|
sequence:
|
|
- service: script.notify_engine
|
|
data:
|
|
title: "{{ title | default('', true) }}"
|
|
value1: "{{ value1 | default('', true) }}"
|
|
value2: "{{ value2 | default('', true) }}"
|
|
value3: "{{ value3 | default('', true) }}"
|
|
who: "{{ who | default('family', true) }}"
|
|
group: "{{ group | default('information', true) }}"
|
|
level: "{{ level | default('active', true) }}"
|
|
camera_entity: "{{ camera_entity | default('', true) }}"
|
|
title1: "{{ title1 | default('', true) }}"
|
|
action1: "{{ action1 | default('', true) }}"
|
|
icon1: "{{ icon1 | default('sfsymbols:house.circle', true) }}"
|
|
destructive1: "{{ destructive1 | default(false, true) }}"
|
|
title2: "{{ title2 | default('', true) }}"
|
|
action2: "{{ action2 | default('', true) }}"
|
|
icon2: "{{ icon2 | default('sfsymbols:house.circle', true) }}"
|
|
destructive2: "{{ destructive2 | default(false, true) }}"
|