New local todo addon for recurring household, garden and maintenance chores

Hi all :slight_smile:

I’ve created a new (yet another!) addon and custom integration for tracking recuring tasks - Home Upkeep. It’s specifically intended for my household and gardening chores, and home maintenance tasks. Tasks are organized into lists and can be managed as standard Home Assistant Todo entities as well as though a the custom UI.

https://github.com/tonyroberts/home-upkeep-addon/blob/a95173608b48ec0ef339a241ffcb3895b72ddf08/home-upkeep/README.md

It is not a replacement for a calendar and is not intended to alert you if a task needs doing on a specific day or time (i.e. it is not a bin day reminder!). Instead, it is useful for tracking tasks that need doing when you have time.

I spent some time looking at other todo apps/integrations and found that for recurring tasks most reschedule tasks on a fixed schedule - e.g. schedule cleaning X on day Y. What I wanted was reminders for things that need doing regularly, but where it’s tracking the interval between things that is more important than doing it on a specific day. I also wanted it to use Home Assistant’s Todo entities for easier automation (e.g. I have an automation that adds a task to refill the salt in the water softener once it goes below a certain level).

An example use case is doing some sort of deeper clean every N weeks (like cleaning the oven). If it’s missed then that’s fine, but once it’s done I want it rescheduled for N weeks after the completion date, not the due date (tasks can also be rescheduled from their due date, but by default the completion date is used).

Another of my main use cases is for tracking tasks that need to be done in the garden. These are often seasonal task and so I added tagging which months a task can be completed in. For example, in the UK hedge trimming can only be done during certain months and so I want to see that as a task, but with a note that it has to be done before a certain month. When the task is completed, it shouldn’t be rescheduled during a month when it’s not allowed. I also added free-form text constraints, which are just notes that you see on the task.

To use it you need to install the “Home Upkeep” addon (add GitHub - tonyroberts/home-upkeep-addon: Home Upkeep - Home Assistant addon to your addon repositories), and add it to your sidebar. You can also optionally install a custom integration (via HACS, Link to HACS: Repository – My Home Assistant, or manually GitHub - tonyroberts/home-upkeep-component: Local to-do list for recurring and non-recurring household tasks) which will give you the Todo integration so you can manage your tasks through the standard Todo list UI and automations etc.

This was just a quick hobby project to solve some specific use cases for me, but maybe someone else will also find it useful.

2 Likes

Hey! This looks nice :+1:t2: how does it tie in with automations? Could i trigger on task completion or modify a tasks next completionvia automations?

Eg taking out the trash based on another HA integration

Or modifying gaming parental controls based on task completion

Hi @afiwube,

the lists get exposed as standard Home Assistant ‘todo’ entities (To-do list - Home Assistant) and so can be used in automations.

You can trigger an automation to run when a list changes, and then query the list as part of your automation, but I don’t think it’s possible to use a specific task within a list as a trigger.

Here’s one of my automations. It’s not triggered from a to-do list, its triggered by a sensor. When then sensor reaches a specific level it checks to see if a task is already on the list, and if it’s not it adds it (it adds a task to refill the salt in the water softener once the level goes below a certain point)

alias: Water Softener Needs Filling
description: ""
triggers:
  - type: value
    device_id: 21bb53bd6c39c28a296b7e1303357227
    entity_id: da62dfcf7204e92dc31609f6133c2a51
    domain: sensor
    trigger: device
    below: 0
conditions: []
actions:
  - action: todo.get_items
    metadata: {}
    data:
      status: needs_action
    target:
      entity_id: todo.weekend_jobs
    response_variable: todo
  - condition: template
    value_template: |2-
          {{
          todo['todo.weekend_jobs']['items']|selectattr('summary','search','Fill salt in water softener')|list|count
          == 0 }}
  - action: todo.add_item
    metadata: {}
    data:
      item: Fill salt in water softener
      due_date: "{{ now().strftime('%Y-%m-%d') }}"
    target:
      entity_id: todo.weekend_jobs
    enabled: true
mode: single

This actually is useful, as my wife would like me to plan chores on specific days but my philosophy was more like ‘as long as it’s done when I decide to do chores’. This matches that philosophy perfectly :slight_smile:

I’ve added two suggestions on your github page, to allow for user tagging and to see if we can work around the limitation of HA not allowing non-admin users access to the dashboard.

1 Like