120 lines
4.4 KiB
YAML
120 lines
4.4 KiB
YAML
###############################################################################
|
|
# @author : Mahasri Kalavala
|
|
# @date : 03/05/2020
|
|
# @package : Pill Reminder Package
|
|
# @description : A package to help you remind pills you need to take
|
|
###############################################################################
|
|
|
|
###############################################################################
|
|
# _____ _ _ _ _____ _ _
|
|
# | __ (_) | | | __ \ (_) | |
|
|
# | |__) || | | | |__) |___ _ __ ___ _ _ __ __| | ___ _ __
|
|
# | ___/ | | | | _ // _ \ '_ ` _ \| | '_ \ / _` |/ _ \ '__|
|
|
# | | | | | | | | \ \ __/ | | | | | | | | | (_| | __/ |
|
|
# |_| |_|_|_| |_| \_\___|_| |_| |_|_|_| |_|\__,_|\___|_|
|
|
#
|
|
###############################################################################
|
|
|
|
homeassistant:
|
|
|
|
input_label:
|
|
pill_taken_at:
|
|
name: Last Pills Taken At
|
|
icon: mdi:pill
|
|
|
|
input_boolean:
|
|
pill_taken:
|
|
name: Pill Taken
|
|
icon: mdi:pill
|
|
|
|
pill_voice_notification:
|
|
name: Pill Voice Notification
|
|
icon: mdi:speaker
|
|
|
|
timer:
|
|
timer_pill_reminder:
|
|
duration: "00:30:00"
|
|
|
|
input_datetime:
|
|
pill_reminder_time:
|
|
name: Pill Reminder Time
|
|
has_date: false
|
|
has_time: true
|
|
initial: "09:00"
|
|
|
|
###############################################################################
|
|
# _ _ _
|
|
# /\ | | | | (_)
|
|
# / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___
|
|
# / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __|
|
|
# / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \
|
|
# /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/
|
|
###############################################################################
|
|
automation:
|
|
###############################################################################
|
|
# Turn On "Pill Taken" Input Boolean when the Pill Box is Opened
|
|
# Opening the Pills Box signifies that the pills are taken!
|
|
# Make sure the pill box is not accessible to children and only you use it daily
|
|
###############################################################################
|
|
- alias: Pill Box is Opened
|
|
initial_state: true
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.door_window_sensor_158d00040ad8ec
|
|
to: "on"
|
|
from: "off"
|
|
action:
|
|
- service: input_label.set_value
|
|
data_template:
|
|
entity_id: input_label.pill_taken_at
|
|
value: "{{ as_timestamp(now()) | timestamp_custom('%m/%d/%Y %I:%M %p') }}"
|
|
- delay:
|
|
seconds: 15
|
|
- service: script.pill_taken
|
|
|
|
###############################################################################
|
|
# Reset at mid night every day.
|
|
# When you get up in the morning, you will get a fresh reminder
|
|
###############################################################################
|
|
- alias: Reset Pill Taken
|
|
initial_state: true
|
|
trigger:
|
|
platform: time
|
|
at: "00:00:00"
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
entity_id: input_boolean.pill_taken
|
|
|
|
###############################################################################
|
|
# Checks if the pills were taken - trigger on the pill reminder time
|
|
# Also, only remind if not on vacation or away from home
|
|
# Right after the notification, start the timer, and keep reminders going
|
|
# until acknowledged
|
|
###############################################################################
|
|
- alias: Check if pills were taken
|
|
initial_state: true
|
|
trigger:
|
|
platform: template
|
|
value_template: "{{ states('sensor.time') ==
|
|
states('input_datetime.pill_reminder_time')[:-3] }}"
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{ states('input_boolean.pill_taken') == 'off' }}"
|
|
- condition: template
|
|
value_template: "{{ states('input_boolean.home_mode_away') == 'off' }}"
|
|
action:
|
|
- service: script.remind_pill
|
|
|
|
###############################################################################
|
|
# Timer Elapsed - Time for a reminder if the pill is not taken yet
|
|
###############################################################################
|
|
- alias: Pill Reminder Timer Elapsed
|
|
initial_state: true
|
|
trigger:
|
|
- platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.timer_pill_reminder
|
|
action:
|
|
- service_template: script.remind_pill
|