############################################################################### # @author : Jeffrey Stone # @date : 02/19/2019 # @package : Presence # @description : A Collection of Presence Related Trackers and Sensors ############################################################################### # 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's Current Location" unit_of_measurement: '' value_template: >- {%- if is_state('person.jeffrey', 'not_home') %} {%- if states.device_tracker.life360_jeffrey_stone.attributes.moving == True %} Flue Network {%- elif states.device_tracker.life360_jeffrey_stone.attributes.driving == True %} Flue Network {% else %} Lost {%- endif %} {% elif is_state('person.jeffrey', 'Sprouts') %} Grocery Store {% elif is_state('person.jeffrey', 'Kroger1') %} Grocery Store {% elif is_state('person.jeffrey', 'Kroger2') %} Grocery Store {% elif is_state('person.jeffrey', 'Home Depot') %} Home Improvement Store {% elif is_state('person.jeffrey', 'Lowes') %} Home Improvement Store {% elif is_state('person.jeffrey', 'Walmart') %} Super Store {% elif is_state('person.jeffrey', 'Target') %} Super Store {% else %} {{ states.person.jeffrey.state }} {%- endif %} jeff_driving: friendly_name: "Jeff' Driving" unit_of_measurement: '' value_template: >- {%- if states.device_tracker.life360_jeffrey_stone.attributes.moving == True %} on {% elif states.device_tracker.life360_jeffrey_stone.attributes.driving == True %} on {% else %} off {% endif %} - platform: template sensors: skylar_location: friendly_name: "Skylar's Current Location" unit_of_measurement: '' value_template: >- {%- if is_state('input_boolean.skylar_school', 'on')%} school {%- elif is_state('sensor.jeff_location', 'home') and is_state('sensor.kat_location', 'home') and is_state('input_boolean.skylar_school', 'off')%} home {%- elif is_state('sensor.jeff_location', 'Summit') and is_state('input_boolean.skylar_school', 'off')%} {{ states.sensor.kat_location.state }} {%- elif is_state('sensor.kat_location', 'Zoo Atlanta') and is_state('input_boolean.skylar_school', 'off')%} {{ states.sensor.jeff_location.state }} {% else %} Mortal Peril {%- endif %} - platform: template sensors: kat_location: friendly_name: "Kat's Current Location" unit_of_measurement: '' value_template: >- {%- if is_state('person.katherine', 'not_home') %} {%- if states.device_tracker.life360_kat_stone.attributes.moving == True %} Flue Network {% elif states.device_tracker.life360_kat_stone.attributes.driving == True %} Flue Network {% else %} Lost {%- endif %} {% elif is_state('person.katherine', 'Sprouts') %} Grocery Store {% elif is_state('person.katherine', 'Kroger1') %} Grocery Store {% elif is_state('person.katherine', 'Kroger2') %} Grocery Store {% elif is_state('person.katherine', 'Home Depot') %} Home Improvement Store {% elif is_state('person.katherine', 'Lowes') %} Home Improvement Store {% elif is_state('person.katherine', 'Walmart') %} Super Store {% elif is_state('person.katherine', 'Target') %} Super Store {% else %} {{ states.person.katherine.state }} {%- endif %} - platform: template sensors: kat_driving: friendly_name: "Kat Driving" unit_of_measurement: '' value_template: >- {%- if states.device_tracker.life360_kat_stone.attributes.moving == True %} 'on' {% elif states.device_tracker.life360_kat_stone.attributes.driving == True %} 'on' {% else %} 'off' {% endif %} - platform: mqtt name: "Family Status" state_topic: "house/family/status" payload_available: "online" payload_not_available: "offline" - platform: template sensors: jeff_home: value_template: >- {{ is_state('device_tracker.jeffreys_iphone_8', 'home') or is_state('device_tracker.jeffreys_iphone_8_2', '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_2', 'home') }} - platform: template sensors: family_home: value_template: >- {{ is_state('device_tracker.jeffreys_iphone_8_2', 'home') or is_state('device_tracker.jeffreys_iphone_8_2', 'home') or is_state('device_tracker.life360_jeffrey_stone', 'home') or is_state('device_tracker.iphone', 'home') or is_state('device_tracker.iphone_2', 'home') or is_state('device_tracker.life360_kat_stone', 'home') or is_state('sensor.family_status', 'Home') }} automation: - 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.ah_report data: speech_message: 'Kat has arrived at work.' call_interuption: 1 - 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 condition: action: - service: input_boolean.turn_on entity_id: input_boolean.kat_travel_monitor - service: script.ah_report data: call_interuption: 1 call_kat_headed_home: 1 - id: '1550109528753' alias: Jeff Is Heading Home initial_state: true trigger: - platform: webhook webhook_id: jeff_heading_home condition: [] action: - service: script.jeff_destination_home - service: script.ah_report data: call_interurption: 1 call_jeff_headed_home: 1 - id: jeff_heading_to_work alias: Jeff Is Heading To Work initial_state: true trigger: - platform: webhook webhook_id: jeff_heading_work condition: [] action: - service: script.jeff_destination_summit - id: skylar_at_school alias: Skylar is at School trigger: - entity_id: device_tracker.life360_jeffrey_stone event: enter platform: zone zone: zone.starling - entity_id: device_tracker.life360_kat_stone event: enter platform: zone zone: zone.starling condition: condition: time after: '07:25:00' before: '08:30:00' weekday: - mon - tue - wed - thu - fri action: - service: input_boolean.turn_on entity_id: input_boolean.skylar_school initial_state: true - id: skylar_left_school alias: Skylar left School trigger: - entity_id: device_tracker.life360_jeffrey_stone event: leave platform: zone zone: zone.starling - entity_id: device_tracker.life360_kat_stone event: leave platform: zone zone: zone.starling condition: condition: time after: '14:45:00' before: '15:30:00' weekday: - mon - tue - wed - thu - fri action: - service: input_boolean.turn_off entity_id: input_boolean.skylar_school initial_state: true - id: test_family_has_arrived alias: Test Family Has arrived trigger: - entity_id: group.family from: not_home platform: state to: home action: - service: script.text_notify data_template: who: "jeff" title: "Family has arrived" message: "Someone in the Family has arrived" - id: test_family_has_left alias: Test Family Has left trigger: - entity_id: group.family from: home platform: state to: not_home action: - service: script.text_notify data_template: who: "jeff" title: "Family has left" message: "Everyone in the Family has left" - id: family_has_arrived alias: Family Has arrived trigger: - entity_id: sensor.family_status from: Away platform: state to: Home - entity_id: person.jeffrey event: enter platform: zone zone: zone.home - entity_id: person.katherine event: enter platform: zone zone: zone.home condition: - condition: state entity_id: sensor.family_status state: Away action: - service: script.vacation_canceled - service: script.appliances_on - service: script.standby - service: script.washer_finished_notification_audible - service: alarm_control_panel.aarlo_set_mode data: entity_id: alarm_control_panel.aarlo_ah_base_station mode: 'home' - service: script.family_is_home initial_state: true - id: family_has_left alias: Family Has Left initial_state: true trigger: - entity_id: sensor.family_status from: Home platform: state to: Away condition: - condition: state entity_id: input_boolean.guest_mode state: 'off' action: - service: script.appliances_off - service: scene.turn_on entity_id: scene.lights_out - service: script.security_check_garage - service: script.security_check_zones - service: script.lockdown - service: script.lockdown_issue - service: script.all_fans_off - service: alarm_control_panel.aarlo_set_mode data: entity_id: alarm_control_panel.aarlo_ah_base_station mode: 'Armed' - id: jeff_is_home alias: Jeff is Home initial_state: true trigger: - entity_id: person.jeffrey event: enter platform: zone zone: zone.home action: - service: script.family_is_home - service: script.jeff_destination_na - service: script.driveway_on - entity_id: input_boolean.jeff_travel_monitor service: input_boolean.turn_off - 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" initial_state: true - id: jeff_arrives_summit_notification alias: Notify Kat Jeff At Summit trigger: - entity_id: person.jeffrey event: enter platform: zone zone: zone.summit action: - service: script.jeff_destination_na initial_state: true - 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: kat_is_home alias: Kat is Home initial_state: true trigger: - entity_id: person.katherine event: enter platform: zone zone: zone.home action: - service: script.family_is_home - service: script.driveway_on - service: input_boolean.turn_off entity_id: input_boolean.kat_travel_monitor - id: welcome_home alias: Welcome Home trigger: - platform: state entity_id: - person.jeffrey - person.katherine - person.uncle_matt - person.papa from: 'not_home' to: 'home' condition: - condition: state entity_id: sensor.family_status state: Home action: - service: script.family_is_home - wait_template: >- {{ states.binary_sensor.laundry_room_door.state == 'on' }} - service: script.ah_report data_template: call_interuption: 1 welcome_home: > {% set person = trigger.to_state.attributes.friendly_name %} {%- macro greeting_sentence(person) -%} {{ [ person + " has arrived.", person + " is in the neighborhood.", person + " is arriving.", "My sensors are picking up the presence of additional humans. " ~ person +" has been identified as home.", "Welcome back home " ~ person, "Guess who is home?" ~ person +" is!", "I am sensing a disturbance in the force. " ~ person +" must be home!", person + " is now in the house.", person ~ "! You are home!", "I know a secret! " ~ person +" is home!", person + " has finally made it home." ] | random }} {%- endmacro -%} {{greeting_sentence(person)}} - 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 - id: '1550107919204' alias: Family Is Home Webhook trigger: - platform: webhook webhook_id: home_webhook condition: [] action: - service: script.family_is_home - id: '1550108034209' alias: Family Is Away Webhook trigger: - platform: webhook webhook_id: away_webhook condition: [] action: - service: script.family_is_away script: jeff_destination_zoo: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: Zoo retain: true jeff_destination_summit: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: Summit retain: true jeff_destination_none: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: none retain: true jeff_destination_na: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: na retain: true jeff_destination_home: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: Home retain: true jeff_destination_harbins: sequence: - service: mqtt.publish data: topic: jeff/driving/destination payload: Harbins retain: true kat_destination_na: sequence: - service: mqtt.publish data: topic: kat/driving/destination payload: na retain: true