###################################################################### # @CCOSTAN - Follow Me on X # For more info visit https://www.vcloudinfo.com/click-here # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # ------------------------------------------------------------------- # People Greeting Announcement - family and Life360 arrival greetings # Announces covered home arrivals after entry sensor confirmation. # ------------------------------------------------------------------- # Notes: `group.arriving` batches simultaneous arrivals; Life360 triggers # only include tracked people not already covered by `group.family`. ###################################################################### - alias: 'People Greeting' id: 29c5c9dd-550a-4761-a224-78cdc3dd9f43 mode: restart trigger: - platform: state entity_id: - person.carlo - person.stacey - person.paige - person.justin from: 'not_home' to: 'home' - platform: state entity_id: - device_tracker.life360_adriano_costanzo - device_tracker.life360_amanda_desantis - device_tracker.life360_gabriella_desantis - device_tracker.life360_jessica_desantis - device_tracker.life360_joseph_desantis - device_tracker.life360_joyce_ruskin - device_tracker.life360_yolanda_costanzo to: 'home' condition: - condition: template value_template: >- {{ trigger.from_state is not none and trigger.from_state.state not in ['home', 'unknown', 'unavailable'] }} action: # This Group is defined in the groups directory. - service: group.set data: object_id: "arriving" add_entities: >- {{ trigger.to_state.entity_id }} - wait_template: "{{ states.binary_sensor.mcu1_gpio12.state == 'on' }}" timeout: '00:05:00' # - wait_template: "{{ states.binary_sensor.kitchen_door.state == 'on' }}" # timeout: '00:1:00' - delay: '00:01:00' - service: script.speech_engine data: personarriving: > {% set ns = namespace(names=[]) %} {% for arrival in expand('group.arriving') %} {% set clean_name = arrival.name | replace('Life360 ', '') | trim %} {% set ns.names = ns.names + [clean_name.split(' ')[0]] %} {% endfor %} {% set person = ns.names | join(' and ') if ns.names else 'someone' %} {%- macro greeting_sentence(person) -%} {{"[Welcome " + person + " home]" }} {%- endmacro -%} {{greeting_sentence(person)}} call_garbage_day: 1 call_no_announcement: 1 call_garage_check: 1 call_window_check: 1 - service: group.set data: object_id: "arriving" entities: []