Tips & Tricks: Critical Chore Overdue Alerts - ad-ha/kidschores-ha GitHub Wiki
π¨ Critical Chore Overdue Alerts: Ensuring Essential Tasks Are Completed
β οΈ Note: This is NOT a built-in feature of KidsChores but a manual configuration that has been tested and confirmed to work with the system. This setup requires advanced configuration using YAML and Jinja templating, but there is good reference documentation available to guide you.
π Why Use Critical Chore Alerts?
Most chores can be flexible, but some tasks must not be overdueβlike feeding pets, taking medication, or locking doors at night. If a chore is time-sensitive and must be completed on schedule, setting up an alerting system ensures it gets done.
This guide walks through a real-world example of tracking feeding the cat with persistent visual alerts and notifications until the task is completed.
πΉ Features of This Setup
β
One-Tap Enable/Disable Button β Quickly turn alerts on or off.
β
Dashboard Alert Widget β Shows a visual warning when a critical task is overdue.
β
Escalating Notifications β Sends reminders at 15 minutes, 30 minutes, and then every 30 minutes until resolved.
β
Customizable for Multiple Chores β Expand this logic to any critical task in your home.
πΊ Dashboard Alert Example
A visual alert that can be placed on any of your home assistant dashboards and only shows when a task is overdue:
π± Dashboard Alert Acknowledgement Example
Reminders are sent at increasing intervals until the alert is acknowledged or the chore is completed:
π οΈ How to Implement This
1οΈβ£ Start with the Basics β Learn how to implement Home Assistant's Alerts effectively with this guide:
π Simple and Effective Alerting
2οΈβ£ Apply Advanced Logic β Once familiar with the basics, try a simple example from that guide. You can come back here to reference the chore sensor names and get a feel for how it fits together. Once you have that down, you can work your way up to more advanced multi-chore configuration with custom messages if your situation requires it.
3οΈβ£ Customize for Your Needs β Use the examples below to modify the sensors, notifications, and dashboard alerts to fit your household.
π What Youβll Need
- Basic YAML knowledge for creating automations.
- Jinja templating skills to adjust logic dynamically.
- Home Assistant sensors that track critical chore completion.
πΉ The following examples show which sensors to monitor and demonstrate whatβs possible with this setup specific to KidsChores. It does not include the dashboard widget setup and all the other detail that can be found in the Simple and Effective alerting link above.π
Place in your configuration.yaml file or packages yaml file depending on how you configure your instance
input_boolean:
cat_fed_chore_notify:
name: Cat Fed Chore Notify
icon: mdi:alert
cat_litter_cleaned_chore_notify:
name: Cat Litter Cleaned Chore Notify
icon: mdi:alert
template:
- binary_sensor:
- name: "Cat Fed Chore Alert Active"
state: >
{{ is_state('sensor.kc_kidname1_chore_status_feed_cat_am', 'overdue') or is_state('sensor.kc_kidname2_chore_status_feed_cat_pm', 'overdue') }}
- name: "Cat Litter Cleaned Chore Alert Active"
state: >
{{ is_state('sensor.kc_kidname1_chore_status_clean_litter_pm', 'overdue') or is_state('sensor.kc_kidname2_chore_status_clean_litter_am', 'overdue') }}
- name: "Cat Chore Alert Active"
state: >
{{
(is_state('input_boolean.cat_fed_chore_notify', 'on') and is_state('binary_sensor.cat_fed_chore_alert_active', 'on')) or
(is_state('input_boolean.cat_litter_cleaned_chore_notify', 'on') and is_state('binary_sensor.cat_litter_cleaned_chore_alert_active', 'on'))
}}
alert:
cat_chore_warn_alert_active:
name: Cat Chore Alert Active
entity_id: binary_sensor.cat_chore_alert_active
state: "on"
repeat:
- 15
- 30
can_acknowledge: true
skip_first: false
title: "Warning - Cat Chores Not Completed"
message: >
{% set chore_sensors = {
'sensor.kc_kidname1_chore_status_feed_cat_am': 'Kidname1 needs to feed the cat.',
'sensor.kc_kidname2_chore_status_feed_cat_pm': 'Kidname2 needs to feed the cat.',
'sensor.kc_kidname2_chore_status_clean_litter_am': 'Kidname2 needs to clean the litter box.',
'sensor.kc_kidname1_chore_status_clean_litter_pm': 'Kidname1 needs to clean the litter box.'
} %}
{% set ns = namespace(overdue_messages=[]) %}
{% for entity_id, message in chore_sensors.items() %}
{% if states(entity_id) == 'overdue' %}
{% set ns.overdue_messages = ns.overdue_messages + [message] %}
{% endif %}
{% endfor %}
{% if ns.overdue_messages %}
Willow is not feeling loved. / {{ ns.overdue_messages | join(' / ') }}
Triggered: {{ as_timestamp(states.binary_sensor.cat_chore_alert_active.last_changed) | timestamp_custom('%A %I:%M%p (%d-%b-%Y)') }}
{% endif %}
done_message: "Willow is feeling loved again as of {{ as_timestamp(states.binary_sensor.cat_chore_alert_active.last_changed) | timestamp_custom('%A %I:%M%p (%d-%b-%Y)') }}"
notifiers:
- KIDS_Warning
Example notify group to be place in configuration.yaml
notify:
- name: KIDS_Warning
platform: group
services:
- service: mobile_app_paytons_phone
- service: mobile_app_kadens_phone