Make the next reminder follow the work

For Home Assistant recurring chore reminders, use a saved due date and a “Done” button when the next interval should start from actual completion. If bookshelf dusting is due on September 24 but you do it on September 27, a 14-day interval should make the next due date October 11.

Start with one date helper, one button helper and two small automations. A helper is a value or control stored inside Home Assistant, without a physical device. An automation is a rule that reacts to an event. Here, pressing the button changes the date; a separate rule checks whether that date has arrived and shows a reminder.

This suits a few flexible chores, such as dusting shelves or cleaning a desk. It does not replace a shared task manager with assignments, completion history and dozens of checkboxes. For externally fixed dates, keep using a calendar: the trash collection reminder guide handles that different job.

By Tara Home. Researched from current Home Assistant documentation on September 24, 2026. The configuration and date examples below are an illustrative design, not a tested Tara household installation. The cover is an editorial illustration.

1. Choose what “repeat” means

Write the rule in an ordinary sentence before creating anything. These three requests need different behavior.

On a narrow screen, swipe the table sideways.

Your ruleUseWhat happens if you finish late?
“Put the recycling out before Tuesday’s collection.”A calendar with the actual collection dates.The next collection stays on its published date.
“Dust these shelves again 14 days after I finish.”The date helper and completion button below.The next due date moves to 14 days after completion.
“Keep a checklist of jobs I can tick off.”A Local to-do list, with separate recurrence logic if needed.A checkbox alone does not run the helper routine below.

The 14-day interval is an example household preference, not maintenance advice. Follow the manufacturer’s schedule for equipment servicing. Keep medication, alarms and other safety-critical checks outside this demonstration.

2. Create the date and completion controls

You need permission to manage Home Assistant helpers and automations. The example uses the Button pressed trigger available in the current documentation and Home Assistant Core 2026.9.3. An older installation may not recognize that syntax.

  1. Open Settings → Devices & services → Helpers → Create helper. Select Date and/or time, name it “Bookshelf dusting due,” and choose date only.
  2. Create a second helper of type Button, named “Bookshelf dusting done.” This is an on-screen control; no physical button is required.
  3. Open each helper’s settings and check its entity ID, the name used by automations. The examples use input_datetime.bookshelf_dusting_due and input_button.bookshelf_dusting_done. Replace those names everywhere below if yours differ.
  4. Set an explicit first due date. If you know the last completion date, use that date plus your chosen interval. Otherwise choose an honest first due date; do not press “Done” merely to hide overdue work.

The date helper restores its saved value when Home Assistant starts again. If you create it in YAML instead, do not set a fixed initial date that would overwrite the saved value at startup.

3. Move the date only when the chore is done

Go to Settings → Automations & scenes → Create automation, start an empty automation, and open Edit in YAML from its menu. Paste this as one complete automation and save it. These blocks belong in the editor for individual automations, not directly at the top of configuration.yaml.

alias: "Chore - bookshelf dusting completed"
triggers:
  - trigger: button.pressed
    target:
      entity_id: input_button.bookshelf_dusting_done
conditions: []
actions:
  - action: input_datetime.set_datetime
    target:
      entity_id: input_datetime.bookshelf_dusting_due
    data:
      date: "{{ (now().date() + timedelta(days=14)).isoformat() }}"
mode: single

The calculation uses the local calendar date when the button is pressed, then adds 14 days. Change days=14 for a different interval. Fourteen days means two calendar weeks; 30 days does not mean “the same date next month.” The date-setting action receives a date in year-month-day format.

4. Keep one reminder while the chore is overdue

Create a second empty automation and paste this block into its YAML editor. It checks at 9 a.m. in Home Assistant’s configured time zone, after startup, and whenever the saved date changes. On an ordinary due day the reminder therefore appears at 9 a.m.; a restart or date edit can make it appear earlier. There is no midnight trigger.

alias: "Chore - check bookshelf dusting due date"
triggers:
  - trigger: time
    at: "09:00:00"
  - trigger: homeassistant
    event: start
  - trigger: state
    entity_id: input_datetime.bookshelf_dusting_due
    to: null
conditions:
  - condition: template
    value_template: "{{ has_value('input_datetime.bookshelf_dusting_due') }}"
actions:
  - choose:
      - conditions:
          - condition: template
            value_template: >-
              {{ states('input_datetime.bookshelf_dusting_due')
                 <= now().date().isoformat() }}
        sequence:
          - action: persistent_notification.create
            data:
              notification_id: chore_bookshelf_dusting
              title: "Bookshelf dusting is due"
              message: >-
                Due since {{ states('input_datetime.bookshelf_dusting_due') }}.
                When you finish, press Bookshelf dusting done
                on your dashboard to set the next due date.
    default:
      - action: persistent_notification.dismiss
        data:
          notification_id: chore_bookshelf_dusting
mode: restart

The date comparison includes today and every earlier date. It compares matching year-month-day strings from a date-only helper; do not substitute a time-only helper or a differently formatted text field. If Home Assistant is off at 9 a.m., the startup check can still find overdue work later. If the helper is temporarily unknown or unavailable, the usable-state check stops the run; a later valid date change or daily check gives it another chance.

The notification appears inside Home Assistant. Reusing one notification ID updates the existing reminder. It does not create a stack of reminders. When the completion button sets a future date, the date-change trigger makes this rule dismiss that reminder.

Closing the notification yourself does not finish the chore. It can reappear at the next check while the due date remains in the past. This is deliberate: “I saw the message” and “I did the work” mean different things.

5. Put both controls together

On a dashboard you can edit, add an Entities card containing the two helpers. You can select them visually, or paste this into the card’s code editor:

type: entities
title: Bookshelf dusting
show_header_toggle: false
entities:
  - entity: input_datetime.bookshelf_dusting_due
    name: Next due date
  - entity: input_button.bookshelf_dusting_done
    name: Bookshelf dusting done

This displays the next due date beside the completion control. The Entities card documentation explains the card settings. Choose a dashboard your household already uses, so the completion control is easy to find.

Worked example: early, late and missed completion

Suppose the last dusting was September 10, 2026, and the saved due date is September 24. These are calculated examples of the rules above.

What happensNext due dateWhy
You press Done on September 24.October 8Fourteen days from completion.
You finish late, on September 27.October 11The old overdue date does not shorten the new interval.
You finish early, on September 22.October 6Early completion also starts a fresh interval.
You close the reminder without doing the work.Still September 24Dismissal does not press the completion button.
Home Assistant starts on September 27 after missing the due day.Still September 24The startup check shows overdue work; it does not claim completion.

Pressing Done twice on the same day calculates the same next date. Pressing it again tomorrow moves the date again. If you tapped it by mistake, edit the date back to the previous due date. This small setup does not provide a full undo history.

6. Test without waiting two weeks

Use only the new bookshelf helpers for this check. Nothing in the example operates household equipment.

  1. Confirm both automations are enabled. Note the real due date so you can put it back afterward.
  2. Change the due date to yesterday. If it already says yesterday, first set tomorrow, then yesterday. Expected: one “Bookshelf dusting is due” notification appears inside Home Assistant.
  3. Change the due date to another past day. Expected: the same notification is updated, with no extra copy.
  4. Press “Bookshelf dusting done.” Expected: the date becomes today plus 14 days and the notification disappears.
  5. Restore the real due date using the date control. Expected: a future date leaves no reminder; a due or overdue date shows one.

To check the scheduled trigger too, temporarily change 09:00:00 to a few minutes ahead, set the helper to yesterday, dismiss its notification, and wait. It should reappear at that time. Restore both the schedule and real due date afterward. The automation editor’s Run actions command does not prove that a trigger works; use the real button and date changes, then inspect the automation’s trace if the result differs.

If the result is different

SymptomCheck firstExpected correction
Pressing Done does not move the date.The completion automation is enabled, its button entity matches, and the editor accepts button.pressed.A real button press produces a trace and sets a future date. On older versions, consult the trigger syntax supported by that release.
The date moved but the reminder stayed.The second automation watches the same date helper and uses the same notification ID in create and dismiss.A future date selects the dismiss action.
There is no phone alert.Open Home Assistant’s notification panel.This example creates an in-app reminder, not a phone push.
The reminder returns after you dismiss it.Check whether the date is still due.Complete the chore, or deliberately edit the date to postpone it.
The date resets after every restart.Check for a YAML initial value or another automation writing the date.Keep the saved date instead of overwriting it at startup.

For a second chore, duplicate the helpers and both automations, then change both entity IDs, the interval, the wording and every occurrence of the notification ID. Two chores sharing an ID would overwrite or dismiss each other’s reminders. If copying this several times becomes awkward, that is a good point to choose a dedicated chore manager with completion-relative recurrence.

Once the button works reliably, a label near the shelf can make completion easier. Our Home Assistant NFC tag guide covers phone and tag setup. An NFC routine would need to press this same helper explicitly; attaching a sticker alone does not connect it.

Frequently asked questions

Will closing the reminder mark the chore done?

No. Dismissing the notification does not change the due date. If the chore is still due, the next scheduled check, restart or date change can show the reminder again. Use the completion button only after doing the task.

Does this require a cloud service or paid subscription?

The helpers, automations and notification shown here run inside Home Assistant. They need a running server and a way to open its interface. This example does not send a phone push notification; adding remote access or another notification channel has its own requirements.

Can I use a to-do checkbox instead of the Done button?

Not with this example as written. A Local to-do checklist is a separate feature, and checking one of its items does not press this button. Keep one completion control, or build and test an explicit connection before using both.

Can this track who did the chore?

The example keeps a next due date and a button-press timestamp, not an assignment system or a reliable completion history. For many tasks, household rotation or an audit trail, use a task manager that explicitly supports those features.

If you want help making everyday controls and routines understandable for the household, see Tara’s home automation kit for local routines.