Created a "Chore Tracker" with points system in Home Assistant

This is great. Will have a play for sure! I have 2 lazy kids :wink:

2 Likes

At the moment, if you toggle (undo) a chore it doesn’t reduce the counter. Then when you toggle (complete) it again it adds another counter. I made the automation reduce the counter when it’s turned off, but then the nightly reset removes all the counters.

Do you know a workaround for this?

I think I understand what you mean. Because you created an automation to reduce a point when toggled off, whenever the “nightly reset” automation runs, it reduces the counter by the # of chores you have toggled on. So if you have 5 chores toggled on, and it resets at 1am, then you lose 5 points.

Am I understanding that correctly?

That’s it, the initial implementation didn’t take kids toggling their chores (or false/accidental check offs) into consideration, so this isn’t an issue until you add the an automation for removing chores using script.minus_1_point.

Got it, I understand fully now. I think the easiest way to handle this would be to create a “Time” condition under the “Remove 1 Point” automation. It could remove points from 12:01am-11pm.

Then, your nightly reset automation would run sometime between 11-11:59pm. It would then toggle the input booleans off, but because the time condition doesn’t allow it to reset points, the automation wouldn’t run.

1 Like

Implemented and working well! Final piece of the puzzle.

I am using this chore tracker for the kid to gain screen time. So she accumulates her night chores, morning chores for screen time that afternoon. The tracker resets during the day when she’s at school. I have the script to send my phone a notification when it resets letting me know how many minutes she has that day.

How would I store the counter value before I reset it so I can build a history of how many minutes she accumulated in the past?

It looks like its storing the values … I just haven’t been using it properly while setting it up. Instead of the 5, 10, 15, 20 min accumulation I am using, can you WRITE a final value to a sensor?

Awesome! I’m glad to see it’s working well for you too.

The only way I know how to do this (I don’t have this setup yet) is if you configure things into a Grafana/influxdb database/dashboard. Then, you can could show previous stats using a Grafana historical sensor.

You might also be able to use a history_stats sensor: History Stats - Home Assistant

1 Like

Actually - this “history graph” card works. It doesn’t explicitly tell you the number, but it might point you in the right direction:

type: history-graph
entities:
  - counter.chore_counter
title: Chore History
hours_to_show: 48

Thanks Danny. This really is a great implementation :smiley:

You’re welcome. Sorry for so many replies, but now you got my wheels turning, I think I’d like to be able to see history as well.

Here’s another example I created using mini-graph-card:

entities:
  - counter.chore_counter
icon: hass:broom
hour24: false
hours_to_show: 36
name: Chore Counter History
show:
  extrema: true
  graph: bar
  icon: true
  name: true
  name_adaptive_color: true
  icon_adaptive_color: true
type: custom:mini-graph-card

image

1 Like

A bar graph looks much better

Perhaps the proposed new ‘task’ domain added to Home Assistant’s architecture could simplify this?

https://github.com/home-assistant/architecture/issues/149

Hi,

I loved the idea as soon as I saw this project. I have been doing this with my kid and has been working great.

I just took a slightly different approach to the idea. The points (Faros, which is like we were calling a currency) are cumulative and might be used/exchanged for goodies (TV time, toys, etc…).

My dash looks like this right now:

These are the automations that I built for:

Add Points when tasks were completed

alias: '[FAROS][MARTIM] Add Faros Once Tasks Completed'
trigger:
  - platform: state
    entity_id: input_boolean.faros_chore01
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore02
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore03
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore04
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore05
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore06
    to: 'on'
  - platform: state
    entity_id: input_boolean.faros_chore07
    to: 'on'
action:
  - service: script.faros_martim_add_1_point
mode: single

If tasks were marked as completed, but for some reason this needs to change

alias: '[FAROS][MARTIM] Remove Faros If Tasks Uncompleted'
trigger:
  - platform: state
    entity_id: input_boolean.faros_chore01
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore02
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore03
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore04
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore05
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore06
    to: 'off'
  - platform: state
    entity_id: input_boolean.faros_chore07
    to: 'off'
condition:
  - condition: time
    after: '07:00:00'
    before: '23:00:00'
action:
  - service: script.faros_martim_remove_1_point
mode: single

Reset Tasks at 1am

alias: '[FAROS][MARTIM] Reset Tasks'
trigger:
  - platform: time
    at: '01:00:00'
action:
  - service: input_boolean.turn_off
    target:
      entity_id:
        - input_boolean.faros_chore01
        - input_boolean.faros_chore02
        - input_boolean.faros_chore03
        - input_boolean.faros_chore04
        - input_boolean.faros_chore05
        - input_boolean.faros_chore06
        - input_boolean.faros_chore07
mode: single

For Scripts I used these ones:

Add 1 Point

alias: Faros - Martim - Add 1 Point
sequence:
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
mode: single
icon: mdi:plus-circle-outline

Add 5 Points

alias: Faros - Martim - Add 5 Points
sequence:
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.increment
    target:
      entity_id: counter.faros_counter_martim
mode: single
icon: mdi:plus-circle-multiple-outline

Remove 1 Point

alias: Faros - Martim - Remove 1 Point
sequence:
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
mode: single
icon: mdi:minus-circle-outline

Remove 5 Points

alias: Faros - Martim - Remove 5 Points
sequence:
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
  - service: counter.decrement
    target:
      entity_id: counter.faros_counter_martim
mode: single
icon: mdi:minus-circle-multiple-outline

Note: Maybe the 5 +/- code is not the best way to do it, but was the easiest that I had to make it work

Hope this also helps someone.

1 Like

A few weeks late seeing your comment, but great job! I’m glad my guide inspired you to create your own chore tracker for your kiddo. I really like your layout.

Quick update since my guide is popular on Reddit again - I recommend reading the guide from my blog for the most up-to-date changes I’ve made my to my chore tracker. I’ve taken feedback from the comments section here and updated my guide.

Everything will still 100% work by reading the text and comments above, I’ve just added some things such as chore history, restricting access, and creating a gauge card to view progress to it to save you some time.

3 Likes

This is an awesome write up, thank you for taking the time to write this all out for beginners, fyi the link to your blog page just loads a blank white page

Do you have other beginner friendly write ups? I’ve been trying to figure out how to have an icon that lists how many lights are on in my house, or something neat to do with a common area dashboard (kind of like DAK board but all in HA)

would you mind showing an example of how you added the restriction to the +/- 1 point cards please?

yeah me to or the restriction that the toggle gets locked in on state so they cannot mutiply the task :wink:

1 Like

The way i’ve handled that is by creating a 2nd toggle for each and having the automation only give points if the 2nd toggle is off. the automation then turns the 2nd toggle on when giving points. the 2nd toggles only get turned off by automation nightly.

I created a python script to create my toggles, automations, and scripts, and only built the front-end by hand.

looks like an interesting project can someone crate a simpler tutorial for lazy dads :slight_smile: