Files
Home-Assistant-Configs/packages/presence.yaml

347 lines
9.9 KiB
YAML

input_datetime:
last_time_home_tony:
name: Tony Last Seen
has_date: true
has_time: true
icon: mdi:binoculars
last_time_home_tina:
name: Tina Last Seen
has_date: true
has_time: true
icon: mdi:binoculars
last_time_home_kallen:
name: Kallen Last Seen
has_date: true
has_time: true
icon: mdi:binoculars
input_boolean:
kallen_awake:
name: Kallen Awake
icon: mdi:eye-check
proximity:
home_tony:
devices:
- device_tracker.tony_s_iphone
zone: home
tolerance: 5
unit_of_measurement: mi
home_tina:
devices:
- device_tracker.tinas_iphone
zone: home
tolerance: 5
unit_of_measurement: mi
home:
devices:
- device_tracker.tony_s_iphone
- device_tracker.tinas_iphone
zone: home
tolerance: 5
unit_of_measurement: mi
sensor:
- platform: template
sensors:
tony_location:
friendly_name: "Tony"
unit_of_measurement: ""
value_template: >-
{% set person = states.person.tony_stork.state %}
{% if person in ['Home','home'] %}
Home
{% elif person in ['WalMart','Kroger','Chief','Meijer','Dollar General - Clinton St','Aldi'] %}
Grocery Store
{% elif person in ['Rite Aid'] %}
Pharmacy
{% else %}
{% if person in ['not_home','Stationary'] %}
{{ state_attr('device_tracker.life360_tony_stork','address') }}
{% else %}
{{ states('person.tony_stork') }}
{%- endif %}
{%- endif %}
icon_template: >-
{% set person = states.person.tony_stork.state %}
{% if person in ['Home','home'] %}
mdi:home
{% else %}
mdi:car
{% endif %}
- platform: template
sensors:
tina_location:
friendly_name: "Tina"
unit_of_measurement: ""
value_template: >-
{% set person = states.person.christina_stork.state %}
{% if person in ['Home','home'] %}
Home
{% elif person in ['WalMart','Kroger','Chief','Meijer','Dollar General - Clinton St','Aldi'] %}
Grocery Store
{% elif person in ['Rite Aid'] %}
Pharmacy
{% elif person in ['Bob Evans','BobEvans'] and is_state('input_boolean.work_today','on') %}
Work
{% else %}
{% if person in ['not_home','Stationary'] %}
{{ state_attr('device_tracker.life360_christina_stork','address') }}
{% else %}
{{ states('person.christina_stork') }}
{%- endif %}
{%- endif %}
icon_template: >-
{% set person = states.person.christina_stork.state %}
{% if person in ['Home','home'] %}
mdi:home
{% else %}
mdi:car
{% endif %}
- platform: template
sensors:
kallen_location:
friendly_name: "Kallen"
unit_of_measurement: ""
value_template: >-
{% if is_state('input_boolean.kallen_school', 'on') %}
School
{% elif is_state('calendar.kallen_events', 'on') %}
{{ state_attr('calendar.kallen_events', 'message') }}
{%- elif is_state('person.tony_stork', 'home') and is_state('person.christina_stork', 'home') and is_state('input_boolean.kallen_school', 'off')%}
Home
{%- elif is_state('person.tony_stork', 'Hospital') and is_state('input_boolean.kallen_school', 'off')%}
{{ states('sensor.tina_location') }}
{%- elif is_state('person.christina_stork', 'Bob Evans') and is_state('input_boolean.kallen_school', 'off')%}
{{ states('sensor.tony_location') }}
{% else %}
Unknown
{%- endif %}
- platform: template
sensors:
tony_home:
icon_template: >-
{% if is_state('device_tracker.tony_s_iphone', 'home') or is_state('device_tracker.life360_tony_stork','home') %}
mdi:home
{% else %}
mdi:car
{% endif %}
value_template: >-
{{ is_state('device_tracker.tony_s_iphone', 'home') or is_state('device_tracker.life360_tony_stork','home') }}
- platform: template
sensors:
tina_home:
icon_template: >-
{% if is_state('device_tracker.tinas_iphone', 'home') or is_state('device_tracker.life360_christina_stork','home') %}
mdi:home
{% else %}
mdi:car
{% endif %}
value_template: >-
{{ is_state('device_tracker.tinas_iphone', 'home') or is_state('device_tracker.life360_christina_stork','home') }}
- platform: template
sensors:
people_home:
friendly_name: "People"
unit_of_measurement: 'home'
value_template: >-
{{ states['person'] | selectattr('state','eq','home') | list | count }}
- platform: template
sensors:
people_away:
friendly_name: "People"
unit_of_measurement: 'away'
value_template: >-
{% set adults = [
states.person.tony_stork,
states.person.christina_stork,
] %}
{{ adults | selectattr('state','ne','home') | list | count }}
mqtt:
sensor:
- name: "Family Status"
state_topic: "house/family/status"
payload_available: "online"
payload_not_available: "offline"
- name: "Family Arrived"
state_topic: "house/family/arrived"
payload_available: "online"
payload_not_available: "offline"
automation:
- id: kallen_at_school
alias: Kallen is at School
trigger:
- entity_id: person.tony_stork
event: leave
platform: zone
zone: zone.school
- entity_id: person.christina_stork
event: leave
platform: zone
zone: zone.school
- entity_id: person.kallen_stork
event: enter
platform: zone
zone: zone.school
condition:
- condition: time
before: "11:30:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: state
entity_id: input_boolean.kallen_school
state: "off"
action:
- service: input_boolean.turn_on
entity_id: input_boolean.kallen_school
- service: input_boolean.turn_on
entity_id: input_boolean.kallen_awake
- service: script.text_alert
data:
who: parents
message: "Kallen has been dropped off at school."
initial_state: true
- id: kallen_left_school
alias: Kallen left School
trigger:
- entity_id: person.tony_stork
event: leave
platform: zone
zone: zone.school
- entity_id: person.christina_stork
event: leave
platform: zone
zone: zone.school
- entity_id: person.kallen_stork
event: leave
platform: zone
zone: zone.school
condition:
- condition: time
after: "11:30:02"
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: state
entity_id: input_boolean.kallen_school
state: "on"
action:
- service: input_boolean.turn_off
entity_id: input_boolean.kallen_school
- service: script.text_alert
data:
who: parents
message: "Kallen has been picked up from school."
initial_state: true
- id: 94b57d79-efe0-4f34-b5e3-baeaa5eea9f4
alias: Kallen Asleep
trigger:
- platform: time
at: input_datetime.kallen_bedtime
action:
- service: input_boolean.turn_off
entity_id: input_boolean.kallen_awake
script:
family_is_away:
alias: Family Is Away
sequence:
- condition: state
entity_id: group.family
state: not_home
- service: light.turn_off
target:
area_id:
- basement_studio
- furnace_room
- kallen_bedroom
- living_room
- master_bedroom
- mud_room
- nursery
- upstairs_hallway
- dining_room
- downstairs_bathroom
- upstairs_bathroom
- service: fan.turn_off
target:
area_id:
- basement_studio
- kallen_bedroom
- master_bedroom
- nursery
- service: media_player.turn_off
target:
entity_id: media_player.living_room_tv
- service: script.security_arm_away
mode: single
icon: mdi:shield-lock
family_is_home:
alias: Family Is Home
sequence:
- service: switch.turn_off
target:
entity_id: switch.presence_simulation
- service: script.security_disarm
- service: switch.turn_off
target:
entity_id:
- switch.basement_echo_dot_do_not_disturb_switch
- switch.living_room_echo_dot_do_not_disturb_switch
- switch.master_bedroom_echo_dot_do_not_disturb_switch
- service: light.turn_off
target:
area_id:
- furnace_room
- kallen_bedroom
- nursery
- master_bedroom
- upstairs_hallway
- basement_studio
- downstairs_bathroom
- upstairs_bathroom
- dining_room
- living_room
- if:
- condition: sun
after: sunset
after_offset: -00:30
then:
- service: light.turn_on
target:
area_id:
- living_room
- dining_room
- mud_room
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: input_select.select_option
target:
entity_id:
- input_select.living_room_scenes
- input_select.tina_lamp_scenes
- input_select.mud_room_scenes
data:
option: Adaptive
- service: input_select.select_option
target:
entity_id: input_select.dining_room_lamp_scenes
data:
option: Full
- service: script.welcome_home
mode: single
icon: mdi:home-account