Leveraged a handful of previous posts here on kids chore lists + HA Cast and ended up with a pretty flexible list of chores for each of my 2 kids that casts to our Lenovo 10" Google Display in the kitchen and requires them to complete their chores or their internet turns off (managed by Ubiquiti Integration).
End result:
The TRUE end result is that their chores are done each day without a big battle. If they want to use their internet, they need to do their chores. (Worth noting we use Disney Circle to further limit their screentime / filter their usage Disney Circle {Not a plug, but is a referral link}. Also worth noting, some of the other solutions I saw use points and graphs and such. I didn’t choose to track all of this, as internet on/off was enough motivation and I can pay their allowances with this solution alone.
Also worth noting that I also put some add’l time/date/weather info on the left column of the Google since casting to it removes it’s native clock/temperature display. Have a few conditional items at the bottom left based on doors being open, etc.
On to the quasi-how-to:
Started by setting up each chore as its own Input Boolean (Input Boolean - Home Assistant)
chore_kid1_mail:
name: Chore Kid1 Get Mail (All but Sunday)
icon: mdi:mail
chore_kid1_cans_out:
name: Chore Kid1 Cans Out (Tues/Fri AM)
icon: mdi:trash-can
chore_kid1_cans_in:
name: Chore Kid1Cans In (Tues/Fri PM)
icon: mdi:trash-can
Worth noting that some chores are morning, some afternoon and then need performed different day(s) of the week. Created 6 automations to control everything:
The ‘reset’ automations run at midnight and 2pm each day. These turn ON the input_booleans for the chores needing to be done. Example of the Reset at 2pm automation:
Chores that run EVERYday use the input_boolean.turn_on (top portion), where as chores only on some days each of these has its own script written to skip turning them on various days (bottom portion). Example, our trash comes on Tues/Fri, so here’s that script:
alias: Reset Kid1 Cans Out
sequence:
- condition: not
conditions:
- condition: state
entity_id: sensor.date_dayoftheweek
state: Monday
- condition: state
entity_id: sensor.date_dayoftheweek
state: Wednesday
- condition: state
entity_id: sensor.date_dayoftheweek
state: Thursday
- condition: state
entity_id: sensor.date_dayoftheweek
state: Saturday
- condition: state
entity_id: sensor.date_dayoftheweek
state: Sunday
- service: input_boolean.turn_on
data: {}
target:
entity_id:
- input_boolean.chore_kid1_cans_out
Groups (Group - Home Assistant) were setup to monitor/aggregate all of each kids chores and also for the devices that need to be controlled for internet on/off. Also setup an all chores group for knowing when to start/stop casting. Examples:
chores_kid2:
name: Kid2 Chores
entities:
- input_boolean.chore_kid2_dishes_sink_am
- input_boolean.chore_kid2_gracie_food
- input_boolean.chore_kid2_gracie_water
- input_boolean.chore_kid2_dishes_sink_pm
- input_boolean.chore_kid2_gracie_brush
- input_boolean.chore_kid2_gracie_walk
- input_boolean.chore_kid2_lunch_away
- input_boolean.chore_kid2_pickup_room
kid2_devices:
name: Kid2 Devices
entities:
- switch.laptop_pixelbook
- switch.tablet_samsung
chores_all:
name: All Chores
entities:
- group.chores_kid2
- group.chores_kid1
Worth noting the switches above are created from the Ubiquity/Unifi integration. Allows HA to turn on/off internet access for specific devices (UniFi Network - Home Assistant).
Two of the automations above (Internet Toggle ones) then turn on/off the kids internet based on their respective group of chores all being completed (input booleans all off):
- id: '1646072728795'
alias: Chores - Internet Toggle (Kid2)
description: ''
trigger:
- platform: state
entity_id: group.chores_kid2
condition: []
action:
- data:
entity_id: group.kid2_devices
service_template: "{% if is_state('group.chores_kid2', 'off') %}\n homeassistant.turn_on\n\
{% else %}\n homeassistant.turn_off\n{% endif %}\n"
mode: single
Now that we’ve defined the chores, groups and automations to turn on / off internet - last piece was find a user-friendly way to display this. I wanted the chores to be shown when there’s at least one to be done (hence the group.chores_all), but also wanted to hide the dashboard when they’re not home. The last two automations take care of that. Ensure the dashboard only displays when at least one child is home and they have a chore to do (Personally I used Google Maps Google Maps - Home Assistant) integration for our family.
Here are the two automations:
- id: '1646098490401'
alias: Chores - Start Cast (NOT Done)
description: ''
trigger:
- platform: time
at: 06:55:00
- platform: state
entity_id: binary_sensor.home_kid1
to: 'on'
- platform: state
entity_id: binary_sensor.home_kid2
to: 'on'
- platform: state
entity_id: group.chores_all
to: 'on'
condition:
- condition: state
entity_id: group.chores_all
state: 'on'
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.home_kid1
state: 'on'
- condition: state
entity_id: group.chores_kid1
state: 'on'
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.home_kid2
state: 'on'
- condition: state
entity_id: group.chores_kid2
state: 'on'
- condition: time
after: 06:54:00
action:
- service: frontend.set_theme
data:
name: slate
- service: script.cast_chores
data: {}
mode: single
- id: '1646098539796'
alias: Chores - Stop Cast (ALL Done)
description: ''
trigger:
- platform: state
entity_id: group.chores_all
to: 'off'
condition: []
action:
- service: script.cast_cancel_kitchen
data: {}
mode: single
These automations take advantage of the Google Cast integration (Google Cast - Home Assistant) using scripts to case a separate tab/view I setup in ui-lovelace.yaml. Scripts:
cast_chores:
alias: Google Cast Lovelace Chores to Kitchen Lenovo
sequence:
- service: media_player.turn_off
data: {}
target:
entity_id: media_player.kitchen_google
- delay: 00:00:02
- service: cast.show_lovelace_view
data:
entity_id: media_player.kitchen_google
dashboard_path: lovelace
view_path: chores
cast_cancel_kitchen:
alias: Stop Google Cast to Kitchen Lenovo
sequence:
- service: media_player.turn_off
data: {}
target:
entity_id: media_player.kitchen_google
Was certainly a fun, not overly complicated project to work thru - and the end result pays dividends every day. House is tidier and few confrontations with the kids to help out. New chores can be added in a minute or two (new boolean, update group, update turn_on automation and create script if necessary).