mirror of
https://github.com/thejeffreystone/home-assistant-configuration.git
synced 2025-02-09 17:13:24 +00:00
Lots of updates here. Updated my Readme - Added Affiliate Links, added some more information, better organized devices Updated gitignore with paths realtive to my hassio config Combined my switches and lights into single yaml files instead of the directory structure previously Added zigbee2mqtt.yaml to packages - contains automations and such for zigbee2mqtt Archived my previous version in the V4-config branch.
449 lines
13 KiB
YAML
Executable File
449 lines
13 KiB
YAML
Executable File
###############################################################################
|
|
# @author : Jeffrey Stone
|
|
# @date : 02/19/2019
|
|
# @package : Presence
|
|
# @description : A Collection of Presence Related Trackers and Sensors
|
|
###############################################################################
|
|
|
|
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.jeffreystonesiphone', 'home')
|
|
or is_state('device_tracker.hass_jeffsiphone', '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') }}
|
|
- platform: template
|
|
sensors:
|
|
family_home:
|
|
value_template: >-
|
|
{{ is_state('device_tracker.jeffreystonesiphone', 'home')
|
|
or is_state('device_tracker.hass_jeffsiphone', 'home')
|
|
or is_state('device_tracker.life360_jeffrey_stone', 'home')
|
|
or is_state('device_tracker.iphone', '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 worked.'
|
|
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: 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.alarm_arm_home
|
|
entity_id: alarm_control_panel.ah_base_station
|
|
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: script.inside_all_off
|
|
- 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.alarm_arm_away
|
|
entity_id: alarm_control_panel.ah_base_station
|
|
|
|
- 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
|
|
from: 'not_home'
|
|
to: 'home'
|
|
condition:
|
|
- condition: state
|
|
entity_id: sensor.family_status
|
|
state: Home
|
|
action:
|
|
- service: script.ah_report
|
|
data_template:
|
|
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.",
|
|
person + " has finally made it home."
|
|
] | random }}
|
|
{%- endmacro -%}
|
|
{{greeting_sentence(person)}}
|
|
call_interuption: 1
|
|
|
|
|
|
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
|