3d0b82b77a
Mirror existing message/title to notify.notify_events for all litter level, wastebin-full, cat medication, and litter box monitor alerts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
139 lines
5.1 KiB
YAML
139 lines
5.1 KiB
YAML
################################################################################
|
|
# cat_medication_tracker_ha.yaml
|
|
#
|
|
# Home Assistant companion automations for the ESPHome cat medication tracker.
|
|
# The device itself resets at midnight; this package adds HA-side controls,
|
|
# status sensors, and reminder notifications.
|
|
################################################################################
|
|
|
|
input_button:
|
|
reset_cat_medications:
|
|
name: "Reset Cat Medications"
|
|
icon: mdi:pill-off
|
|
|
|
template:
|
|
- sensor:
|
|
- name: "Cats Medicated Today"
|
|
unique_id: cats_medicated_today
|
|
icon: mdi:cat
|
|
state: >
|
|
{% set meds = [
|
|
states('switch.cat_medication_tracker_penelope_medicated'),
|
|
states('switch.cat_medication_tracker_tess_medicated')
|
|
] %}
|
|
{{ meds | select('equalto', 'on') | list | count }}
|
|
|
|
- name: "Cats Still Needing Medication"
|
|
unique_id: cats_still_needing_medication
|
|
icon: mdi:pill-off
|
|
state: >
|
|
{{ 2 - (states('sensor.cats_medicated_today') | int(0)) }}
|
|
|
|
automation:
|
|
- id: cat_medication_tracker_reset_from_ha
|
|
alias: "Cat Medication Tracker - Reset from HA"
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_button.reset_cat_medications
|
|
action:
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.cat_medication_tracker_penelope_medicated
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.cat_medication_tracker_tess_medicated
|
|
|
|
- id: cat_medication_tracker_all_done_notify
|
|
alias: "Cat Medication Tracker - All cats medicated"
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.cat_medication_tracker_all_cats_medicated
|
|
to: "on"
|
|
action:
|
|
- service: notify.notify
|
|
data:
|
|
title: "Cat meds done"
|
|
message: "Penelope and Tess have both been marked medicated today."
|
|
- service: notify.notify_events
|
|
data:
|
|
title: "Cat meds done"
|
|
message: "Penelope and Tess have both been marked medicated today."
|
|
|
|
- id: cat_medication_tracker_cat_medicated_notify
|
|
alias: "Cat Medication Tracker - Cat medicated notification"
|
|
trigger:
|
|
- platform: state
|
|
entity_id: switch.cat_medication_tracker_penelope_medicated
|
|
from: "off"
|
|
to: "on"
|
|
id: penelope
|
|
- platform: state
|
|
entity_id: switch.cat_medication_tracker_tess_medicated
|
|
from: "off"
|
|
to: "on"
|
|
id: tess
|
|
action:
|
|
- variables:
|
|
cat_name: >
|
|
{% if trigger.id == 'penelope' %}Penelope
|
|
{% else %}Tess{% endif %}
|
|
- service: notify.mobile_app_joshuas_iphone_of_pain
|
|
data:
|
|
title: "Cat medication given"
|
|
message: "{{ cat_name }} has been marked medicated."
|
|
- service: notify.mobile_app_pollys_iphone
|
|
data:
|
|
title: "Cat medication given"
|
|
message: "{{ cat_name }} has been marked medicated."
|
|
- service: notify.notify_events
|
|
data:
|
|
title: "Cat medication given"
|
|
message: "{{ cat_name }} has been marked medicated."
|
|
|
|
- id: cat_medication_tracker_evening_reminder
|
|
alias: "Cat Medication Tracker - 6PM medication reminder"
|
|
trigger:
|
|
- platform: time
|
|
at: "18:00:00"
|
|
condition:
|
|
- condition: state
|
|
entity_id: binary_sensor.cat_medication_tracker_all_cats_medicated
|
|
state: "off"
|
|
action:
|
|
- service: notify.mobile_app_joshuas_iphone_of_pain
|
|
data:
|
|
title: "Cat meds still needed"
|
|
message: >
|
|
{% set ns = namespace(cats=[]) %}
|
|
{% if is_state('switch.cat_medication_tracker_penelope_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Penelope'] %}
|
|
{% endif %}
|
|
{% if is_state('switch.cat_medication_tracker_tess_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Tess'] %}
|
|
{% endif %}
|
|
{{ ns.cats | join(' and ') }} still need medication.
|
|
- service: notify.mobile_app_pollys_iphone
|
|
data:
|
|
title: "Cat meds still needed"
|
|
message: >
|
|
{% set ns = namespace(cats=[]) %}
|
|
{% if is_state('switch.cat_medication_tracker_penelope_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Penelope'] %}
|
|
{% endif %}
|
|
{% if is_state('switch.cat_medication_tracker_tess_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Tess'] %}
|
|
{% endif %}
|
|
{{ ns.cats | join(' and ') }} still need medication.
|
|
- service: notify.notify_events
|
|
data:
|
|
title: "Cat meds still needed"
|
|
message: >
|
|
{% set ns = namespace(cats=[]) %}
|
|
{% if is_state('switch.cat_medication_tracker_penelope_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Penelope'] %}
|
|
{% endif %}
|
|
{% if is_state('switch.cat_medication_tracker_tess_medicated', 'off') %}
|
|
{% set ns.cats = ns.cats + ['Tess'] %}
|
|
{% endif %}
|
|
{{ ns.cats | join(' and ') }} still need medication.
|