-
-
Notifications
You must be signed in to change notification settings - Fork 1
Tips & Tricks: Critical Chore Overdue 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.
✅ 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.
A visual alert that can be placed on any of your home assistant dashboards and only shows when a task is overdue:

Reminders are sent at increasing intervals until the alert is acknowledged or the chore is completed:

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.
- 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 ChoreOps. 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.sarah_chore_status_feed_cat_am', 'overdue') or is_state('sensor.jack_chore_status_feed_cat_pm', 'overdue') }}
- name: "Cat Litter Cleaned Chore Alert Active"
state: >
{{ is_state('sensor.jack_chore_status_clean_litter_pm', 'overdue') or is_state('sensor.sarah_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.sarah_chore_status_feed_cat_am': 'Sarah needs to feed the cat.',
'sensor.jack_chore_status_feed_cat_pm': 'Jack needs to feed the cat.',
'sensor.sarah_chore_status_clean_litter_am': 'Sarah needs to clean the litter box.',
'sensor.jack_chore_status_clean_litter_pm': 'Jack 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:
- ASSIGNEE_WarningExample notify group to be place in configuration.yaml
notify:
- name: ASSIGNEE_Warning
platform: group
services:
- service: mobile_app_phone_1
- service: mobile_app_phone_2
🚀 Getting Started
- Home
- Installation
- Migration from KidsChores
- Quick Start
- Quick Start Scenarios
- Dashboard Generation
- Backup & Restore
⚙️ Configuration
- General Options
- Points
- Users
- Chores
- Rewards
- Badges - Overview
- Badges - Cumulative
- Badges - Periodic
- Achievements
- Challenges
- Notifications
🔧 Services
💡 Tips & Tricks
- Template Cookbook for Chores, Rewards, and Approvals
- Auto-Approve Chores
- Calendar Event Due Dates
- NFC Claim Workflow
- Overdue Penalty Automation
- Critical Overdue Alerts
📖 Advanced Topics
- Dashboard Integration
- Access Control
- Chores - Advanced
- Badge Cumulative - Advanced
- Badge Periodic - Advanced
📚 Technical Reference
- Points
- Users
- Entities & States
- Chores
- Badges
- Configuration Detail
- Dashboard Generation
- Notifications
- Weekly Activity Reports
👩🔧 Troubleshooting