This is great. Will have a play for sure! I have 2 lazy kids
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.
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
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
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
A bar graph looks much better
Perhaps the proposed new ‘task’ domain added to Home Assistant’s architecture could simplify this?
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.
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.
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
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