###################################################################### # @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) }}"