############################################################################### # @author : Jeffrey Stone # @date : 02/19/2019 # @package : Presence # @description : A Collection of Presence Related Trackers and Sensors ############################################################################### input_datetime: last_time_home_jeff: name: Jeff Last Seen has_date: true has_time: true last_time_home_kat: name: Kat Last Seen has_date: true has_time: true last_time_home_skylar: name: Skylar Last Seen has_date: true has_time: true # Testing Proximity Sensors proximity: home_jeff: devices: - device_tracker.life360_jeffrey_stone zone: home tolerance: 5 unit_of_measurement: mi home_kat: devices: - device_tracker.life360_kat_stone zone: home tolerance: 5 unit_of_measurement: mi home: devices: - device_tracker.life360_jeffrey_stone - device_tracker.life360_kat_stone zone: home tolerance: 5 unit_of_measurement: mi sensor: - platform: template sensors: jeff_location: friendly_name: "Jeff" unit_of_measurement: "" value_template: >- {% set person = states.person.jeffrey.state %} {%- if person in ['Sprouts','Kroger1','Kroger2'] %} Grocery Store {% elif person in ['HomeDepot','Lowes'] %} Home Improvement Store {% elif person in ['Walmart','Target'] %} Super Store {% else %} {% if person in ['not_home'] %} {{ state_attr('device_tracker.life360_jeffrey_stone','address') }} {% else %} {{ states('person.jeffrey') }} {%- endif %} {%- endif %} - platform: template sensors: skylar_location: friendly_name: "Skylar" unit_of_measurement: "" value_template: >- {% if is_state('input_boolean.skylar_school', 'on') %} school {% elif is_state('calendar.skylar_events', 'on') %} {{ state_attr('calendar.skylar_events', 'message') }} {%- elif is_state('person.jeffrey', 'home') and is_state('person.katherine', 'home') and is_state('input_boolean.skylar_school', 'off')%} home {%- elif is_state('person.jeffrey', 'Summit') and is_state('input_boolean.skylar_school', 'off')%} {{ states('sensor.kat_location') }} {%- elif is_state('person.katherine', 'ZooAtlanta') and is_state('input_boolean.skylar_school', 'off')%} {{ states('person.jeffrey') }} {% else %} Unknown {%- endif %} - platform: template sensors: kat_location: friendly_name: "Kat" unit_of_measurement: "" value_template: >- {% set person = states('person.katherine') %} {%- if person in ['Sprouts','Kroger1','Kroger2'] %} Grocery Store {% elif person in ['HomeDepot','Lowes'] %} Home Improvement Store {% elif person in ['Walmart','Target'] %} Super Store {% else %} {%- if person in ['ZooAtlanta'] %} Zoo Atlanta {% elif person in ['not_home'] %} {{ state_attr('device_tracker.life360_kat_stone', 'address') }} {% else %} {{ states('person.katherine') }} {%- endif %} {%- endif %} - platform: mqtt name: "Family Status" state_topic: "house/family/status" payload_available: "online" payload_not_available: "offline" - platform: mqtt name: "Family Arrived" state_topic: "house/family/arrived" payload_available: "online" payload_not_available: "offline" - platform: template sensors: jeff_home: value_template: >- {{ is_state('device_tracker.jeffrey_s_iphone_11', 'home') or is_state('device_tracker.jeffrey_s_iphone_11_app', 'home') or is_state('device_tracker.life360_jeffrey_stone', 'home') }} - platform: template sensors: kat_home: value_template: >- {{ is_state('device_tracker.iphone', 'home') or is_state('device_tracker.life360_kat_stone', 'home') or is_state('device_tracker.iphone', 'home') }} automation: - id: skylar_is_awake alias: Skylar is Awake initial_state: true trigger: - platform: state entity_id: binary_sensor.skylar_bedroom_motion_occupancy to: "on" from: "off" - platform: state entity_id: binary_sensor.skylar_room_occupancy to: "on" from: "off" condition: - condition: time after: "05:00:00" before: "08:30:00" - condition: state entity_id: input_boolean.skylar_awake state: "off" action: - service: input_datetime.set_datetime entity_id: input_datetime.skylar_awake_at data: time: "{{ now().strftime('%H:%M') }}" - service: input_boolean.turn_on entity_id: input_boolean.skylar_awake - service: switch.turn_off entity_id: switch.rainbow_light - id: skylar_early_morning_tv alias: Skylar Early Morning TV initial_state: true trigger: - platform: state entity_id: media_player.theater_tv to: "on" from: "off" - platform: state entity_id: media_player.croft_tv to: "playing" condition: - condition: time after: "05:00:00" before: "08:30:00" - condition: state entity_id: input_boolean.skylar_dressed_reminder state: "off" - condition: state entity_id: input_boolean.skylar_awake state: "on" action: - service: script.status_annc data: who: >- {% if is_state('media_player.theater_tv', 'on') %} theater {% else %} croft {% endif %} call_interuption: 1 call_skylar_dressed_reminder: 1 - service: input_boolean.turn_on entity_id: input_boolean.skylar_dressed_reminder - id: kat_arrives_zoo alias: Kat Arrives at Zoo initial_state: true trigger: - platform: zone event: enter zone: zone.zoo_atlanta entity_id: person.katherine action: - service: input_boolean.turn_off entity_id: input_boolean.kat_travel_monitor - service: script.status_annc data: who: "{{ states('sensor.room_audio') }}" speech_message: "Kat has arrived at work." - id: kat_leaves_zoo alias: Kat Leaves Zoo Notification initial_state: true trigger: - platform: zone event: leave zone: zone.zoo_atlanta entity_id: person.katherine action: - service: input_boolean.turn_on entity_id: input_boolean.kat_travel_monitor - service: script.status_annc data_template: who: "{{ states('sensor.room_audio') }}" call_interpruption: 1 call_kat_location: 1 - id: skylar_at_school alias: Skylar is at School trigger: - entity_id: person.jeffrey event: leave platform: zone zone: zone.starling - entity_id: person.katherine event: leave platform: zone zone: zone.starling - entity_id: person.skylar event: enter platform: zone zone: zone.starling condition: - condition: time before: "13:30:00" weekday: - mon - tue - wed - thu - fri - condition: state entity_id: input_boolean.skylar_school state: "off" action: - service: input_boolean.turn_on entity_id: input_boolean.skylar_school - service: script.text_alert data: who: parents message: "Skylar has been dropped off at school." initial_state: true - id: skylar_left_school alias: Skylar left School trigger: - entity_id: person.jeffrey event: leave platform: zone zone: zone.starling - entity_id: person.katherine event: leave platform: zone zone: zone.starling - entity_id: person.skylar event: leave platform: zone zone: zone.starling condition: - condition: time after: "11:30:00" weekday: - mon - tue - wed - thu - fri - condition: state entity_id: input_boolean.skylar_school state: "on" action: - service: input_boolean.turn_off entity_id: input_boolean.skylar_school - service: script.text_alert data: who: parents message: "Skylar has been picked up from school." initial_state: true - id: jeff_arrives_summit alias: Jeff Arrives At Summit trigger: - entity_id: person.jeffrey event: enter platform: zone zone: zone.summit action: - service: script.text_notify data: who: "kat" message: "Jeff has arrived at Summit" - service: script.jeff_destination_na initial_state: true - id: e1cb15b0-0423-11eb-adc1-0242ac120002 alias: Zone Debugger trigger: - platform: state entity_id: person.jeffrey condition: - condition: state entity_id: input_boolean.jeff_location_debug state: 'on' action: - service: script.jeff_location_debug - id: jeff_leaves_summit alias: Jeff Leaves Summit initial_state: true trigger: - entity_id: person.jeffrey event: leave platform: zone zone: zone.summit action: - service: input_boolean.turn_off entity_id: input_boolean.jeff_traffic_alert_home - id: welcome_home alias: Welcome Home mode: restart trigger: - platform: state entity_id: - person.jeffrey - person.katherine - person.uncle_matt - person.papa - person.skylar from: "not_home" to: "home" action: - choose: - conditions: - condition: state entity_id: input_boolean.welcome_home state: "on" sequence: - service: script.turn_on entity_id: script.welcome_briefing default: - service: group.set data: object_id: "arriving" add_entities: >- {{ trigger.to_state.entity_id }} - wait_template: "{{ is_state('binary_sensor.laundry_room_door', 'on') }}" timeout: "00:3:00" - service: script.status_annc data_template: who: "{{ states.sensor.room_presence.state }}" call_interuption: 1 speech_message: > {% set person = expand('group.arriving')|map(attribute='name')|join(' and ') %} {% set peoplecount = expand('group.arriving') | count %} {% if peoplecount == 1 %} {% set is_are = ' is ' %} {% set has_have = ' has ' %} {% else %} {% set is_are = ' are ' %} {% set has_have = ' have ' %} {% endif %} {%- macro greeting_sentence(person, is_are, has_have) -%} {{ [ person ~ has_have + " arrived.", "My sensors are picking up the presence of additional humans. " ~ person ~ has_have + " been identified as home.", "Guess who is home?" ~ person ~ is_are, "I am sensing a disturbance in the force. " ~ person +" must be home!", person ~ is_are + "now in the house.", person ~ is_are + " now here. Hash tag Welcome Home.", person ~ is_are + " now here. Hash tag Home.", "I know a secret! " ~ person ~ is_are +" home!", "Just a quick announcement. " ~ person ~ has_have +" arrived!", "Hey" ~ person + "! High Five! Glad you are finally home.", "Just a quick announcement. " ~ person ~ has_have + " arrived!", person ~ has_have + " finally made it home." ] | random }} {%- endmacro -%} {{greeting_sentence(person, is_are, has_have)}} - delay: 00:02:00 - service: group.set data: object_id: "arriving" entities: [] - id: guests_have_arrived alias: Guests have arrived trigger: - entity_id: person.papa event: enter platform: zone zone: zone.home - entity_id: person.uncle_matt event: enter platform: zone zone: zone.home action: - service: script.standby - service: script.family_is_home - service: input_boolean.turn_on entity_id: input_boolean.guest_mode initial_state: true - id: disable_bad_traffic_home_jeff alias: Disabling Jeff Bad Traffic Home initial_state: true trigger: - platform: numeric_state entity_id: sensor.jeff_ett_home below: 40 - platform: state entity_id: sensor.jeff_destination to: Home condition: - condition: state entity_id: input_boolean.jeff_traffic_alert_home state: "on" action: - service: input_boolean.turn_off entity_id: input_boolean.jeff_traffic_alert_home script: family_is_home: sequence: - condition: state entity_id: group.family state: "home" - service: script.standby family_is_away: sequence: - condition: state entity_id: group.family state: "not_home" - service: script.appliances_off - service: scene.turn_on entity_id: scene.lights_out - service: input_boolean.turn_on entity_id: input_boolean.sentry_mode - service: scene.turn_on entity_id: scene.all_fans_off - service: input_boolean.turn_on entity_id: input_boolean.welcome_home reset_skylar_sensors: sequence: - delay: 02:00:00 - service: input_datetime.set_datetime entity_id: input_datetime.skylar_awake_at data: time: "00:00:00" - service: input_boolean.turn_off entity_id: input_boolean.skylar_awake jeff_location_debug: sequence: - condition: state entity_id: input_boolean.jeff_location_debug state: 'on' - service: script.text_alert data: who: jeff message: "Jeff is at {{ states('person.jeffrey') }}"