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

452 lines
13 KiB
YAML

# This file is for entities/automations that are specific to Kallen
input_boolean:
kallen_sleeping:
name: Kallen Sleeping
icon: mdi:sleep
kallen_computer_updates:
name: Kallen Computer Updates
icon: mdi:update
kallen_overnight:
name: Kallen Overnight
icon: mdi:weather-night
kallen_awake:
name: Kallen Awake
icon: mdi:eye-check
kallen_late_bedtime:
name: Kallen Late Bedtime
icon: mdi:weather-night
kallen_morning_meds_taken:
name: Kallen Morning Meds Taken
icon: mdi:medical-bag
kallen_night_meds_taken:
name: Kallen Night Meds Taken
icon: mdi:medical-bag
kallen_alarm_clock:
name: Kallen Alarm Clock
icon: mdi:alarm
input_datetime:
kallen_bedtime:
name: Kallen Bedtime
has_date: false
has_time: true
icon: mdi:weather-night
kallen_wakeup_time:
name: Kallen Wake-up Time
has_date: false
has_time: true
icon: mdi:bell-alert
kallen_asleep_at:
name: Kallen Asleep At
has_date: false
has_time: true
icon: mdi:weather-night
kallen_awake_at:
name: Kallen Awake At
has_date: false
has_time: true
icon: mdi:weather-sunset-up
kallen_fan:
name: Kallen Fan
has_date: false
has_time: true
icon: mdi:fan-auto
kallen_morning_meds_taken:
name: Kallen Morning Meds Taken
has_date: true
has_time: true
icon: mdi:medical-bag
kallen_night_meds_taken:
name: Kallen Night Meds Taken
has_date: true
has_time: true
icon: mdi:medical-bag
kallen_morning_meds_notify:
name: Kallen Morning Meds Notify
has_date: false
has_time: true
icon: mdi:medical-bag
kallen_night_meds_notify:
name: Kallen Night Meds Notify
has_date: false
has_time: true
icon: mdi:medical-bag
kallen_alarm_clock:
name: Kallen Alarm Clock
has_date: false
has_time: true
icon: mdi:alarm
sensor:
- platform: rest
name: Kallen Tasks
method: GET
resource: 'https://api.todoist.com/sync/v9/projects/get_data'
params:
project_id: 2285969005
headers:
Authorization: !secret todoist_api_token
value_template: '{{value_json[''project''][''id'']}}'
json_attributes:
- project
- items
scan_interval: 30
automation:
- id: 67fbdb66-b94b-4351-86de-a388d601e93c
alias: Kallen Meds Handler
description: Make sure Kallen has taken his meds in the morning and at night
mode: parallel
max: 4
trigger:
- platform: time
at: input_datetime.kallen_morning_meds_notify
id: wakeup
- platform: time
at: input_datetime.kallen_night_meds_notify
id: sleep
- platform: state
entity_id: input_boolean.kallen_morning_meds_taken
to: 'on'
id: boolean-morning
- platform: state
entity_id: input_boolean.kallen_night_meds_taken
to: 'on'
id: boolean-night
action:
- choose:
- conditions:
- condition: and
conditions:
- condition: trigger
id: wakeup
- condition: state
entity_id: input_boolean.kallen_morning_meds_taken
state: 'off'
sequence:
- service: script.turn_on
target:
entity_id: script.kallen_morning_meds
- conditions:
- condition: and
conditions:
- condition: trigger
id: sleep
- condition: state
entity_id: input_boolean.kallen_night_meds_taken
state: 'off'
sequence:
- service: script.turn_on
target:
entity_id: script.kallen_night_meds
- conditions:
- condition: trigger
id: boolean-morning
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_morning_meds_taken
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0) }}
- service: logbook.log
data:
name: Kallen Morning Meds
message: Taken
entity_id: input_boolean.kallen_morning_meds_taken
domain: input_boolean
- conditions:
- condition: trigger
id: boolean-night
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_night_meds_taken
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0) }}
- service: logbook.log
data:
name: Kallen Night Meds
message: have been taken
entity_id: input_boolean.kallen_night_meds_taken
domain: input_boolean
- id: 1d552b1f-c0ed-4d80-b8ba-3c085d2c3d3a
alias: "Kallen Late Bedtime"
description: "For those nights we want to let Kallen stay up later for whatever reason"
mode: restart
trigger:
- platform: state
entity_id: input_boolean.kallen_late_bedtime
from: 'off'
to: 'on'
id: late-on
- platform: state
entity_id: input_boolean.kallen_late_bedtime
from: 'on'
to: 'off'
id: late-off
condition:
- condition: time
after: input_datetime.kallen_wakeup_time
before: input_datetime.kallen_bedtime
action:
- if:
- condition: state
entity_id: input_boolean.kallen_scheduling_evening_ran
state: 'on'
then:
- service: script.kallen_scheduling_evening
- service: script.house_scheduling_evening
- 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:
kallen_morning_meds:
alias: 'Kallen Morning Meds'
icon: mdi:medical-bag
mode: restart
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.kallen_morning_meds_taken
- service: script.text_notify
data:
who: kallen
type: alert
title: Morning Meds
message: You need to take your morning meds. Go to mom or dad to confirm.
tag: kallen-morning-meds-self
- service: script.text_notify
data:
who: parents
type: alert
title: Morning Meds
message: Kallen needs to take his morning meds
tag: kallen-morning-meds-parents
actions:
- action: "KALLEN_MORNING_MEDS_TAKEN"
title: Taken
- action: "KALLEN_MORNING_MEDS_SKIPPED"
title: Skip
- action: "KALLEN_MORNING_MEDS_ASK_LATER"
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_MORNING_MEDS_TAKEN"
id: taken
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_MORNING_MEDS_SKIPPED"
id: skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_MORNING_MEDS_ASK_LATER"
id: ask-later
- platform: state
entity_id: person.kallen_stork
from: 'home'
id: left
- platform: state
entity_id: input_boolean.kallen_morning_meds_taken
to: 'on'
id: manual
timeout: "00:10:00"
continue_on_timeout: true
- choose:
- conditions: "{{ wait.trigger.id in ['taken','manual'] }}"
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.kallen_morning_meds_taken
- conditions: "{{ wait.trigger.id == 'skipped' }}"
sequence:
- service: logbook.log
data:
name: Kallen Morning Meds
message: Skipped
entity_id: input_boolean.kallen_morning_meds_taken
domain: input_boolean
- conditions: "{{ wait.trigger.id == 'ask-later' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_morning_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,5) }}
- service: logbook.log
data:
name: Kallen Morning Meds
message: Delayed for 5 minutes
entity_id: input_boolean.kallen_morning_meds_taken
domain: input_boolean
- conditions: "{{ wait.trigger.id == 'left' or wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- if:
- condition: state
entity_id: person.kallen_stork
state: 'home'
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_morning_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,1) }}
- service: logbook.log
data:
name: Kallen Morning Meds
message: No response, delayed for 1 minute
entity_id: input_boolean.kallen_morning_meds_taken
domain: input_boolean
else:
- service: logbook.log
data:
name: Kallen Morning Meds
message: No response, Kallen has left home, cancelled.
entity_id: input_boolean.kallen_morning_meds_taken
domain: input_boolean
- service: script.text_notify
data:
type: alert
who: kallen
message: clear_notification
tag: kallen-morning-meds-parents
- service: script.text_notify
data:
type: alert
who: kallen
message: clear_notification
tag: kallen-morning-meds-self
kallen_night_meds:
alias: 'Kallen Night Meds'
icon: mdi:medical-bag
mode: restart
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.kallen_night_meds_taken
- service: script.text_notify
data:
who: kallen
type: alert
title: Night Meds
message: You need to take your night meds (melatonin)
tag: kallen-night-meds
actions:
- action: "KALLEN_NIGHT_MEDS_TAKEN"
title: Taken
- action: "KALLEN_NIGHT_MEDS_SKIPPED"
title: Skip
- action: "KALLEN_NIGHT_MEDS_ASK_LATER"
title: Ask Later
- service: script.text_notify
data:
who: >
{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}
tony
{% else %}
parents
{% endif %}
type: alert
title: Night Meds
message: Kallen needs to take his night meds (melatonin)
tag: kallen-night-meds
actions:
- action: "KALLEN_NIGHT_MEDS_TAKEN"
title: Taken
- action: "KALLEN_NIGHT_MEDS_SKIPPED"
title: Skip
- action: "KALLEN_NIGHT_MEDS_ASK_LATER"
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_NIGHT_MEDS_TAKEN"
id: taken
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_NIGHT_MEDS_SKIPPED"
id: skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "KALLEN_NIGHT_MEDS_ASK_LATER"
id: ask-later
- platform: state
entity_id: input_boolean.kallen_night_meds_taken
to: 'on'
id: manual
timeout: "00:05:00"
continue_on_timeout: true
- choose:
- conditions: "{{ wait.trigger.id in ['taken','manual'] }}"
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.kallen_night_meds_taken
- conditions: "{{ wait.trigger.id == 'skipped' }}"
sequence:
- service: logbook.log
data:
name: Kallen Night Meds
message: have been skipped
entity_id: input_boolean.kallen_night_meds_taken
domain: input_boolean
- conditions: "{{ wait.trigger.id == 'ask-later' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_night_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,15) }}
- service: logbook.log
data:
name: Kallen Night Meds
message: Delayed for 15 minutes
entity_id: input_boolean.kallen_night_meds_taken
domain: input_boolean
- conditions: "{{ wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_night_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,1) }}
- service: logbook.log
data:
name: Kallen Night Meds
message: No response, delayed for 1 minute
entity_id: input_boolean.kallen_night_meds_taken
domain: input_boolean
- service: script.text_notify
data:
type: alert
who: all
message: clear_notification
tag: kallen-night-meds