From 689b173f3034571f3ada9df32c61a74d7557d41a Mon Sep 17 00:00:00 2001 From: Joshua King Date: Sat, 28 Feb 2026 11:52:51 -0500 Subject: [PATCH] Refactor chore tracker configuration and update chore counts - Updated chore counts for Jordyn, Declan, and Chloe in the dashboard and configuration files. - Modified chore names and icons for Jordyn, Declan, and Chloe to reflect new tasks. - Adjusted automation scripts to align with the updated chore structure and counts. - Ensured notifications reflect the correct number of completed chores for each child. --- esphome/chore-tracker-esphome.yaml | 770 ++++-------------- .../chore-tracker-dashboard.yaml | 60 +- esphome/chore-tracker/chores_config.yaml | 44 +- packages/chore-tracker-ha.yaml | 92 +-- 4 files changed, 243 insertions(+), 723 deletions(-) diff --git a/esphome/chore-tracker-esphome.yaml b/esphome/chore-tracker-esphome.yaml index d5f7b0b..ac3d607 100644 --- a/esphome/chore-tracker-esphome.yaml +++ b/esphome/chore-tracker-esphome.yaml @@ -137,12 +137,12 @@ font: id: font_mdi_large size: 48 bpp: 4 - glyphs: 󰂨󰄛󰈙󰉥󰋣󰏧󰖸󰦩󰾞󱑷󱚠󱬥 + glyphs: 󰄛󰆫󰇷󰊩󰋣󰐂󰦩󱑷󱚣󱜜 - file: "fonts/materialdesignicons-webfont.ttf" id: font_mdi_small size: 32 bpp: 4 - glyphs: 󰂨󰄛󰈙󰉥󰋣󰏧󰖸󰦩󰾞󱑷󱚠󱬥 + glyphs: 󰄛󰆫󰇷󰊩󰋣󰐂󰦩󱑷󱚣󱜜 # ── Switches — backlight raw + one per chore per kid ───────────────────────── switch: @@ -158,8 +158,8 @@ switch: # ── Jordyn's chores ────────────────────────── - platform: template - name: "Jordyn - Make Bed" - id: jordyn_make_bed + name: "Jordyn - Put on underwear" + id: jordyn_put_on_underwear icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -169,14 +169,14 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_jordyn_make_bed + entity_id: switch.chore_tracker_jordyn_put_on_underwear on_turn_off: then: - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_jordyn_make_bed + entity_id: switch.chore_tracker_jordyn_put_on_underwear - platform: template name: "Jordyn - Brush Teeth" id: jordyn_brush_teeth @@ -198,8 +198,8 @@ switch: data: entity_id: switch.chore_tracker_jordyn_brush_teeth - platform: template - name: "Jordyn - Tidy Room" - id: jordyn_tidy_room + name: "Jordyn - Check & fill water bowls" + id: jordyn_check_&_fill_water_bowls icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -209,17 +209,17 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_jordyn_tidy_room + entity_id: switch.chore_tracker_jordyn_check_&_fill_water_bowls on_turn_off: then: - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_jordyn_tidy_room + entity_id: switch.chore_tracker_jordyn_check_&_fill_water_bowls - platform: template - name: "Jordyn - Homework" - id: jordyn_homework + name: "Jordyn - Restock Cat Food Cans" + id: jordyn_restock_cat_food_cans icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -229,39 +229,19 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_jordyn_homework + entity_id: switch.chore_tracker_jordyn_restock_cat_food_cans on_turn_off: then: - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_jordyn_homework - - platform: template - name: "Jordyn - Feed Dog" - id: jordyn_feed_dog - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_jordyn_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_jordyn_feed_dog - on_turn_off: - then: - - script.execute: update_jordyn_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_jordyn_feed_dog + entity_id: switch.chore_tracker_jordyn_restock_cat_food_cans # ── Declan's chores ────────────────────────── - platform: template - name: "Declan - Make Bed" - id: declan_make_bed + name: "Declan - Take morning pill" + id: declan_take_morning_pill icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -271,17 +251,17 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_declan_make_bed + entity_id: switch.chore_tracker_declan_take_morning_pill on_turn_off: then: - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_declan_make_bed + entity_id: switch.chore_tracker_declan_take_morning_pill - platform: template - name: "Declan - Brush Teeth" - id: declan_brush_teeth + name: "Declan - Scoop Dog Poop" + id: declan_scoop_dog_poop icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -291,59 +271,19 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_declan_brush_teeth + entity_id: switch.chore_tracker_declan_scoop_dog_poop on_turn_off: then: - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_declan_brush_teeth - - platform: template - name: "Declan - Set Table" - id: declan_set_table - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_declan_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_declan_set_table - on_turn_off: - then: - - script.execute: update_declan_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_declan_set_table - - platform: template - name: "Declan - Take Out Trash" - id: declan_take_out_trash - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_declan_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_declan_take_out_trash - on_turn_off: - then: - - script.execute: update_declan_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_declan_take_out_trash + entity_id: switch.chore_tracker_declan_scoop_dog_poop # ── Chloe's chores ────────────────────────── - platform: template - name: "Chloe - Make Bed" - id: chloe_make_bed + name: "Chloe - Check & fill kitty feeders" + id: chloe_check_&_fill_kitty_feeders icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -353,17 +293,17 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_chloe_make_bed + entity_id: switch.chore_tracker_chloe_check_&_fill_kitty_feeders on_turn_off: then: - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_chloe_make_bed + entity_id: switch.chore_tracker_chloe_check_&_fill_kitty_feeders - platform: template - name: "Chloe - Brush Teeth" - id: chloe_brush_teeth + name: "Chloe - Scoop Kitty Litter" + id: chloe_scoop_kitty_litter icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -373,17 +313,17 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_chloe_brush_teeth + entity_id: switch.chore_tracker_chloe_scoop_kitty_litter on_turn_off: then: - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_chloe_brush_teeth + entity_id: switch.chore_tracker_chloe_scoop_kitty_litter - platform: template - name: "Chloe - Water Plants" - id: chloe_water_plants + name: "Chloe - Replace Kitty Litter Bags" + id: chloe_replace_kitty_litter_bags icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF @@ -393,74 +333,14 @@ switch: - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_chloe_water_plants + entity_id: switch.chore_tracker_chloe_replace_kitty_litter_bags on_turn_off: then: - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_chloe_water_plants - - platform: template - name: "Chloe - Homework" - id: chloe_homework - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_chloe_homework - on_turn_off: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_chloe_homework - - platform: template - name: "Chloe - Tidy Room" - id: chloe_tidy_room - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_chloe_tidy_room - on_turn_off: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_chloe_tidy_room - - platform: template - name: "Chloe - Practice Piano" - id: chloe_practice_piano - icon: mdi:checkbox-marked-circle - optimistic: true - restore_mode: RESTORE_DEFAULT_OFF - on_turn_on: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_on - data: - entity_id: switch.chore_tracker_chloe_practice_piano - on_turn_off: - then: - - script.execute: update_chloe_ui - - homeassistant.service: - service: switch.turn_off - data: - entity_id: switch.chore_tracker_chloe_practice_piano + entity_id: switch.chore_tracker_chloe_replace_kitty_litter_bags # ── Sensors — reported to HA ───────────────────────────────────────────────── @@ -472,11 +352,10 @@ sensor: update_interval: 2s lambda: |- int done = 0; - if (id(jordyn_make_bed).state) done++; + if (id(jordyn_put_on_underwear).state) done++; if (id(jordyn_brush_teeth).state) done++; - if (id(jordyn_tidy_room).state) done++; - if (id(jordyn_homework).state) done++; - if (id(jordyn_feed_dog).state) done++; + if (id(jordyn_check_&_fill_water_bowls).state) done++; + if (id(jordyn_restock_cat_food_cans).state) done++; return done; - platform: template @@ -486,10 +365,8 @@ sensor: update_interval: 2s lambda: |- int done = 0; - if (id(declan_make_bed).state) done++; - if (id(declan_brush_teeth).state) done++; - if (id(declan_set_table).state) done++; - if (id(declan_take_out_trash).state) done++; + if (id(declan_take_morning_pill).state) done++; + if (id(declan_scoop_dog_poop).state) done++; return done; - platform: template @@ -499,12 +376,9 @@ sensor: update_interval: 2s lambda: |- int done = 0; - if (id(chloe_make_bed).state) done++; - if (id(chloe_brush_teeth).state) done++; - if (id(chloe_water_plants).state) done++; - if (id(chloe_homework).state) done++; - if (id(chloe_tidy_room).state) done++; - if (id(chloe_practice_piano).state) done++; + if (id(chloe_check_&_fill_kitty_feeders).state) done++; + if (id(chloe_scoop_kitty_litter).state) done++; + if (id(chloe_replace_kitty_litter_bags).state) done++; return done; @@ -515,11 +389,10 @@ script: mode: single then: - lambda: |- - id(jordyn_make_bed).turn_off(); + id(jordyn_put_on_underwear).turn_off(); id(jordyn_brush_teeth).turn_off(); - id(jordyn_tidy_room).turn_off(); - id(jordyn_homework).turn_off(); - id(jordyn_feed_dog).turn_off(); + id(jordyn_check_&_fill_water_bowls).turn_off(); + id(jordyn_restock_cat_food_cans).turn_off(); - script.execute: update_jordyn_ui @@ -527,13 +400,13 @@ script: mode: single then: - lambda: |- - int done = (id(jordyn_make_bed).state ? 1 : 0) + (id(jordyn_brush_teeth).state ? 1 : 0) + (id(jordyn_tidy_room).state ? 1 : 0) + (id(jordyn_homework).state ? 1 : 0) + (id(jordyn_feed_dog).state ? 1 : 0); - int total = 5; + int done = (id(jordyn_put_on_underwear).state ? 1 : 0) + (id(jordyn_brush_teeth).state ? 1 : 0) + (id(jordyn_check_&_fill_water_bowls).state ? 1 : 0) + (id(jordyn_restock_cat_food_cans).state ? 1 : 0); + int total = 4; char buf[24]; // Progress bar + label lv_bar_set_value(id(progress_bar_jordyn), done, LV_ANIM_ON); - snprintf(buf, sizeof(buf), "%d / 5", done); + snprintf(buf, sizeof(buf), "%d / 4", done); lv_label_set_text(id(progress_label_jordyn), buf); // All-done message in sidebar @@ -556,16 +429,16 @@ script: } // Card colours - if (id(jordyn_make_bed).state) { - lv_obj_set_style_bg_color(id(card_jordyn_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_make_bed), "\u2705"); + if (id(jordyn_put_on_underwear).state) { + lv_obj_set_style_bg_color(id(card_jordyn_put_on_underwear), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_put_on_underwear), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_put_on_underwear), 3, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_put_on_underwear), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_jordyn_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_make_bed), ""); + lv_obj_set_style_bg_color(id(card_jordyn_put_on_underwear), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_put_on_underwear), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_put_on_underwear), 2, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_put_on_underwear), ""); } if (id(jordyn_brush_teeth).state) { lv_obj_set_style_bg_color(id(card_jordyn_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); @@ -578,38 +451,27 @@ script: lv_obj_set_style_border_width(id(card_jordyn_brush_teeth), 2, LV_PART_MAIN); lv_label_set_text(id(check_jordyn_brush_teeth), ""); } - if (id(jordyn_tidy_room).state) { - lv_obj_set_style_bg_color(id(card_jordyn_tidy_room), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_tidy_room), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_tidy_room), 3, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_tidy_room), "\u2705"); + if (id(jordyn_check_&_fill_water_bowls).state) { + lv_obj_set_style_bg_color(id(card_jordyn_check_&_fill_water_bowls), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_check_&_fill_water_bowls), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_check_&_fill_water_bowls), 3, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_check_&_fill_water_bowls), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_jordyn_tidy_room), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_tidy_room), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_tidy_room), 2, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_tidy_room), ""); + lv_obj_set_style_bg_color(id(card_jordyn_check_&_fill_water_bowls), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_check_&_fill_water_bowls), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_check_&_fill_water_bowls), 2, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_check_&_fill_water_bowls), ""); } - if (id(jordyn_homework).state) { - lv_obj_set_style_bg_color(id(card_jordyn_homework), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_homework), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_homework), 3, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_homework), "\u2705"); + if (id(jordyn_restock_cat_food_cans).state) { + lv_obj_set_style_bg_color(id(card_jordyn_restock_cat_food_cans), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_restock_cat_food_cans), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_restock_cat_food_cans), 3, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_restock_cat_food_cans), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_jordyn_homework), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_homework), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_homework), 2, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_homework), ""); - } - if (id(jordyn_feed_dog).state) { - lv_obj_set_style_bg_color(id(card_jordyn_feed_dog), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_feed_dog), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_feed_dog), 3, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_feed_dog), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_jordyn_feed_dog), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_jordyn_feed_dog), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_jordyn_feed_dog), 2, LV_PART_MAIN); - lv_label_set_text(id(check_jordyn_feed_dog), ""); + lv_obj_set_style_bg_color(id(card_jordyn_restock_cat_food_cans), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_restock_cat_food_cans), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_restock_cat_food_cans), 2, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_restock_cat_food_cans), ""); } @@ -617,10 +479,8 @@ script: mode: single then: - lambda: |- - id(declan_make_bed).turn_off(); - id(declan_brush_teeth).turn_off(); - id(declan_set_table).turn_off(); - id(declan_take_out_trash).turn_off(); + id(declan_take_morning_pill).turn_off(); + id(declan_scoop_dog_poop).turn_off(); - script.execute: update_declan_ui @@ -628,13 +488,13 @@ script: mode: single then: - lambda: |- - int done = (id(declan_make_bed).state ? 1 : 0) + (id(declan_brush_teeth).state ? 1 : 0) + (id(declan_set_table).state ? 1 : 0) + (id(declan_take_out_trash).state ? 1 : 0); - int total = 4; + int done = (id(declan_take_morning_pill).state ? 1 : 0) + (id(declan_scoop_dog_poop).state ? 1 : 0); + int total = 2; char buf[24]; // Progress bar + label lv_bar_set_value(id(progress_bar_declan), done, LV_ANIM_ON); - snprintf(buf, sizeof(buf), "%d / 4", done); + snprintf(buf, sizeof(buf), "%d / 2", done); lv_label_set_text(id(progress_label_declan), buf); // All-done message in sidebar @@ -657,49 +517,27 @@ script: } // Card colours - if (id(declan_make_bed).state) { - lv_obj_set_style_bg_color(id(card_declan_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_declan_make_bed), "\u2705"); + if (id(declan_take_morning_pill).state) { + lv_obj_set_style_bg_color(id(card_declan_take_morning_pill), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_declan_take_morning_pill), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_declan_take_morning_pill), 3, LV_PART_MAIN); + lv_label_set_text(id(check_declan_take_morning_pill), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_declan_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_declan_make_bed), ""); + lv_obj_set_style_bg_color(id(card_declan_take_morning_pill), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_declan_take_morning_pill), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_declan_take_morning_pill), 2, LV_PART_MAIN); + lv_label_set_text(id(check_declan_take_morning_pill), ""); } - if (id(declan_brush_teeth).state) { - lv_obj_set_style_bg_color(id(card_declan_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_brush_teeth), 3, LV_PART_MAIN); - lv_label_set_text(id(check_declan_brush_teeth), "\u2705"); + if (id(declan_scoop_dog_poop).state) { + lv_obj_set_style_bg_color(id(card_declan_scoop_dog_poop), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_declan_scoop_dog_poop), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_declan_scoop_dog_poop), 3, LV_PART_MAIN); + lv_label_set_text(id(check_declan_scoop_dog_poop), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_declan_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_brush_teeth), 2, LV_PART_MAIN); - lv_label_set_text(id(check_declan_brush_teeth), ""); - } - if (id(declan_set_table).state) { - lv_obj_set_style_bg_color(id(card_declan_set_table), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_set_table), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_set_table), 3, LV_PART_MAIN); - lv_label_set_text(id(check_declan_set_table), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_declan_set_table), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_set_table), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_set_table), 2, LV_PART_MAIN); - lv_label_set_text(id(check_declan_set_table), ""); - } - if (id(declan_take_out_trash).state) { - lv_obj_set_style_bg_color(id(card_declan_take_out_trash), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_take_out_trash), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_take_out_trash), 3, LV_PART_MAIN); - lv_label_set_text(id(check_declan_take_out_trash), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_declan_take_out_trash), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_declan_take_out_trash), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_declan_take_out_trash), 2, LV_PART_MAIN); - lv_label_set_text(id(check_declan_take_out_trash), ""); + lv_obj_set_style_bg_color(id(card_declan_scoop_dog_poop), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_declan_scoop_dog_poop), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_declan_scoop_dog_poop), 2, LV_PART_MAIN); + lv_label_set_text(id(check_declan_scoop_dog_poop), ""); } @@ -707,12 +545,9 @@ script: mode: single then: - lambda: |- - id(chloe_make_bed).turn_off(); - id(chloe_brush_teeth).turn_off(); - id(chloe_water_plants).turn_off(); - id(chloe_homework).turn_off(); - id(chloe_tidy_room).turn_off(); - id(chloe_practice_piano).turn_off(); + id(chloe_check_&_fill_kitty_feeders).turn_off(); + id(chloe_scoop_kitty_litter).turn_off(); + id(chloe_replace_kitty_litter_bags).turn_off(); - script.execute: update_chloe_ui @@ -720,13 +555,13 @@ script: mode: single then: - lambda: |- - int done = (id(chloe_make_bed).state ? 1 : 0) + (id(chloe_brush_teeth).state ? 1 : 0) + (id(chloe_water_plants).state ? 1 : 0) + (id(chloe_homework).state ? 1 : 0) + (id(chloe_tidy_room).state ? 1 : 0) + (id(chloe_practice_piano).state ? 1 : 0); - int total = 6; + int done = (id(chloe_check_&_fill_kitty_feeders).state ? 1 : 0) + (id(chloe_scoop_kitty_litter).state ? 1 : 0) + (id(chloe_replace_kitty_litter_bags).state ? 1 : 0); + int total = 3; char buf[24]; // Progress bar + label lv_bar_set_value(id(progress_bar_chloe), done, LV_ANIM_ON); - snprintf(buf, sizeof(buf), "%d / 6", done); + snprintf(buf, sizeof(buf), "%d / 3", done); lv_label_set_text(id(progress_label_chloe), buf); // All-done message in sidebar @@ -749,71 +584,38 @@ script: } // Card colours - if (id(chloe_make_bed).state) { - lv_obj_set_style_bg_color(id(card_chloe_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_make_bed), "\u2705"); + if (id(chloe_check_&_fill_kitty_feeders).state) { + lv_obj_set_style_bg_color(id(card_chloe_check_&_fill_kitty_feeders), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_check_&_fill_kitty_feeders), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_check_&_fill_kitty_feeders), 3, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_check_&_fill_kitty_feeders), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_chloe_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_make_bed), ""); + lv_obj_set_style_bg_color(id(card_chloe_check_&_fill_kitty_feeders), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_check_&_fill_kitty_feeders), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_check_&_fill_kitty_feeders), 2, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_check_&_fill_kitty_feeders), ""); } - if (id(chloe_brush_teeth).state) { - lv_obj_set_style_bg_color(id(card_chloe_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_brush_teeth), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_brush_teeth), "\u2705"); + if (id(chloe_scoop_kitty_litter).state) { + lv_obj_set_style_bg_color(id(card_chloe_scoop_kitty_litter), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_scoop_kitty_litter), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_scoop_kitty_litter), 3, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_scoop_kitty_litter), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_chloe_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_brush_teeth), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_brush_teeth), ""); + lv_obj_set_style_bg_color(id(card_chloe_scoop_kitty_litter), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_scoop_kitty_litter), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_scoop_kitty_litter), 2, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_scoop_kitty_litter), ""); } - if (id(chloe_water_plants).state) { - lv_obj_set_style_bg_color(id(card_chloe_water_plants), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_water_plants), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_water_plants), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_water_plants), "\u2705"); + if (id(chloe_replace_kitty_litter_bags).state) { + lv_obj_set_style_bg_color(id(card_chloe_replace_kitty_litter_bags), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_replace_kitty_litter_bags), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_replace_kitty_litter_bags), 3, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_replace_kitty_litter_bags), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_chloe_water_plants), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_water_plants), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_water_plants), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_water_plants), ""); - } - if (id(chloe_homework).state) { - lv_obj_set_style_bg_color(id(card_chloe_homework), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_homework), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_homework), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_homework), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_chloe_homework), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_homework), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_homework), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_homework), ""); - } - if (id(chloe_tidy_room).state) { - lv_obj_set_style_bg_color(id(card_chloe_tidy_room), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_tidy_room), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_tidy_room), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_tidy_room), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_chloe_tidy_room), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_tidy_room), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_tidy_room), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_tidy_room), ""); - } - if (id(chloe_practice_piano).state) { - lv_obj_set_style_bg_color(id(card_chloe_practice_piano), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_practice_piano), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_practice_piano), 3, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_practice_piano), "\u2705"); - } else { - lv_obj_set_style_bg_color(id(card_chloe_practice_piano), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_chloe_practice_piano), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_chloe_practice_piano), 2, LV_PART_MAIN); - lv_label_set_text(id(check_chloe_practice_piano), ""); + lv_obj_set_style_bg_color(id(card_chloe_replace_kitty_litter_bags), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_chloe_replace_kitty_litter_bags), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_chloe_replace_kitty_litter_bags), 2, LV_PART_MAIN); + lv_label_set_text(id(check_chloe_replace_kitty_litter_bags), ""); } @@ -949,7 +751,7 @@ lvgl: - label: align: CENTER y: -45 - text: "󱚠" + text: "󱚣" text_font: font_mdi_large - label: align: CENTER @@ -1007,14 +809,14 @@ lvgl: bg_color: 0xFFFFFF value: 0 min_value: 0 - max_value: 5 + max_value: 4 - label: id: progress_label_jordyn x: 0 y: 156 width: 172 align: TOP_MID - text: "0 / 5" + text: "0 / 4" text_font: font_small text_color: 0xDDEEFF - label: @@ -1061,7 +863,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_jordyn_make_bed + id: card_jordyn_put_on_underwear x: 182 y: 10 width: 196 @@ -1075,10 +877,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: jordyn_make_bed + - switch.toggle: jordyn_put_on_underwear widgets: - label: - id: check_jordyn_make_bed + id: check_jordyn_put_on_underwear align: TOP_RIGHT x: -10 y: 8 @@ -1092,7 +894,7 @@ lvgl: - label: align: CENTER y: 17 - text: "Make Bed" + text: "Put on underwear" text_font: font_small text_color: 0x2D3436 @@ -1133,7 +935,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_jordyn_tidy_room + id: card_jordyn_check_&_fill_water_bowls x: 594 y: 10 width: 196 @@ -1147,10 +949,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: jordyn_tidy_room + - switch.toggle: jordyn_check_&_fill_water_bowls widgets: - label: - id: check_jordyn_tidy_room + id: check_jordyn_check_&_fill_water_bowls align: TOP_RIGHT x: -10 y: 8 @@ -1159,17 +961,17 @@ lvgl: - label: align: CENTER y: -34 - text: "󰂨" + text: "󰆫" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Tidy Room" + text: "Check & fill water bowls" text_font: font_small text_color: 0x2D3436 - button: - id: card_jordyn_homework + id: card_jordyn_restock_cat_food_cans x: 182 y: 158 width: 196 @@ -1183,10 +985,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: jordyn_homework + - switch.toggle: jordyn_restock_cat_food_cans widgets: - label: - id: check_jordyn_homework + id: check_jordyn_restock_cat_food_cans align: TOP_RIGHT x: -10 y: 8 @@ -1195,48 +997,12 @@ lvgl: - label: align: CENTER y: -34 - text: "󰈙" + text: "󱜜" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Homework" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_jordyn_feed_dog - x: 388 - y: 158 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: jordyn_feed_dog - widgets: - - label: - id: check_jordyn_feed_dog - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰉥" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Feed Dog" + text: "Restock Cat Food Cans" text_font: font_small text_color: 0x2D3436 @@ -1282,14 +1048,14 @@ lvgl: bg_color: 0xFFFFFF value: 0 min_value: 0 - max_value: 4 + max_value: 2 - label: id: progress_label_declan x: 0 y: 156 width: 172 align: TOP_MID - text: "0 / 4" + text: "0 / 2" text_font: font_small text_color: 0xDDEEFF - label: @@ -1336,7 +1102,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_declan_make_bed + id: card_declan_take_morning_pill x: 182 y: 10 width: 196 @@ -1350,10 +1116,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: declan_make_bed + - switch.toggle: declan_take_morning_pill widgets: - label: - id: check_declan_make_bed + id: check_declan_take_morning_pill align: TOP_RIGHT x: -10 y: 8 @@ -1362,17 +1128,17 @@ lvgl: - label: align: CENTER y: -34 - text: "󰋣" + text: "󰐂" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Make Bed" + text: "Take morning pill" text_font: font_small text_color: 0x2D3436 - button: - id: card_declan_brush_teeth + id: card_declan_scoop_dog_poop x: 388 y: 10 width: 196 @@ -1386,10 +1152,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: declan_brush_teeth + - switch.toggle: declan_scoop_dog_poop widgets: - label: - id: check_declan_brush_teeth + id: check_declan_scoop_dog_poop align: TOP_RIGHT x: -10 y: 8 @@ -1398,84 +1164,12 @@ lvgl: - label: align: CENTER y: -34 - text: "󰦩" + text: "󰇷" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Brush Teeth" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_declan_set_table - x: 594 - y: 10 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: declan_set_table - widgets: - - label: - id: check_declan_set_table - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰏧" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Set Table" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_declan_take_out_trash - x: 182 - y: 158 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: declan_take_out_trash - widgets: - - label: - id: check_declan_take_out_trash - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰖸" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Take Out Trash" + text: "Scoop Dog Poop" text_font: font_small text_color: 0x2D3436 @@ -1500,7 +1194,7 @@ lvgl: y: 22 width: 172 align: TOP_MID - text: "󱚠" + text: "󱚣" text_font: font_mdi_large - label: x: 0 @@ -1521,14 +1215,14 @@ lvgl: bg_color: 0xFFFFFF value: 0 min_value: 0 - max_value: 6 + max_value: 3 - label: id: progress_label_chloe x: 0 y: 156 width: 172 align: TOP_MID - text: "0 / 6" + text: "0 / 3" text_font: font_small text_color: 0xDDEEFF - label: @@ -1575,7 +1269,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_chloe_make_bed + id: card_chloe_check_&_fill_kitty_feeders x: 182 y: 10 width: 196 @@ -1589,10 +1283,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: chloe_make_bed + - switch.toggle: chloe_check_&_fill_kitty_feeders widgets: - label: - id: check_chloe_make_bed + id: check_chloe_check_&_fill_kitty_feeders align: TOP_RIGHT x: -10 y: 8 @@ -1601,17 +1295,17 @@ lvgl: - label: align: CENTER y: -34 - text: "󰋣" + text: "󰊩" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Make Bed" + text: "Check & fill kitty feeders" text_font: font_small text_color: 0x2D3436 - button: - id: card_chloe_brush_teeth + id: card_chloe_scoop_kitty_litter x: 388 y: 10 width: 196 @@ -1625,10 +1319,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: chloe_brush_teeth + - switch.toggle: chloe_scoop_kitty_litter widgets: - label: - id: check_chloe_brush_teeth + id: check_chloe_scoop_kitty_litter align: TOP_RIGHT x: -10 y: 8 @@ -1637,17 +1331,17 @@ lvgl: - label: align: CENTER y: -34 - text: "󰦩" + text: "󰇷" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Brush Teeth" + text: "Scoop Kitty Litter" text_font: font_small text_color: 0x2D3436 - button: - id: card_chloe_water_plants + id: card_chloe_replace_kitty_litter_bags x: 594 y: 10 width: 196 @@ -1661,10 +1355,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: chloe_water_plants + - switch.toggle: chloe_replace_kitty_litter_bags widgets: - label: - id: check_chloe_water_plants + id: check_chloe_replace_kitty_litter_bags align: TOP_RIGHT x: -10 y: 8 @@ -1673,120 +1367,12 @@ lvgl: - label: align: CENTER y: -34 - text: "󱬥" + text: "󰇷" text_font: font_mdi_small - label: align: CENTER y: 17 - text: "Water Plants" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_chloe_homework - x: 182 - y: 158 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: chloe_homework - widgets: - - label: - id: check_chloe_homework - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰈙" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Homework" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_chloe_tidy_room - x: 388 - y: 158 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: chloe_tidy_room - widgets: - - label: - id: check_chloe_tidy_room - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰂨" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Tidy Room" - text_font: font_small - text_color: 0x2D3436 - - - button: - id: card_chloe_practice_piano - x: 594 - y: 158 - width: 196 - height: 138 - bg_color: 0xFFFFFF - border_color: 0xEEEEEE - border_width: 2 - radius: 20 - shadow_color: 0xCCCCCC - shadow_width: 4 - shadow_ofs_y: 3 - on_click: - then: - - switch.toggle: chloe_practice_piano - widgets: - - label: - id: check_chloe_practice_piano - align: TOP_RIGHT - x: -10 - y: 8 - text: "" - text_font: font_med - - label: - align: CENTER - y: -34 - text: "󰾞" - text_font: font_mdi_small - - label: - align: CENTER - y: 17 - text: "Practice Piano" + text: "Replace Kitty Litter Bags" text_font: font_small text_color: 0x2D3436 diff --git a/esphome/chore-tracker/chore-tracker-dashboard.yaml b/esphome/chore-tracker/chore-tracker-dashboard.yaml index d2ddb78..82f9397 100644 --- a/esphome/chore-tracker/chore-tracker-dashboard.yaml +++ b/esphome/chore-tracker/chore-tracker-dashboard.yaml @@ -16,7 +16,7 @@ views: ### 󰄛 Jordyn {{ 'All done!' if states('sensor.jordyn_all_chores_done') == 'True' - else states('sensor.jordyn_chores_done_today') ~ '/5 chores done' + else states('sensor.jordyn_chores_done_today') ~ '/4 chores done' }} - type: markdown @@ -24,15 +24,15 @@ views: ### 󱑷 Declan {{ 'All done!' if states('sensor.declan_all_chores_done') == 'True' - else states('sensor.declan_chores_done_today') ~ '/4 chores done' + else states('sensor.declan_chores_done_today') ~ '/2 chores done' }} - type: markdown content: > - ### 󱚠 Chloe + ### 󱚣 Chloe {{ 'All done!' if states('sensor.chloe_all_chores_done') == 'True' - else states('sensor.chloe_chores_done_today') ~ '/6 chores done' + else states('sensor.chloe_chores_done_today') ~ '/3 chores done' }} - type: button @@ -46,20 +46,17 @@ views: - type: entities title: "󰄛 Jordyn's Chores" entities: - - entity: switch.chore_tracker_jordyn_make_bed - name: "󰋣 Make Bed" + - entity: switch.chore_tracker_jordyn_put_on_underwear + name: "󰋣 Put on underwear" - entity: switch.chore_tracker_jordyn_brush_teeth name: "󰦩 Brush Teeth" - - entity: switch.chore_tracker_jordyn_tidy_room - name: "󰂨 Tidy Room" + - entity: switch.chore_tracker_jordyn_check_&_fill_water_bowls + name: "󰆫 Check & fill water bowls" - - entity: switch.chore_tracker_jordyn_homework - name: "󰈙 Homework" - - - entity: switch.chore_tracker_jordyn_feed_dog - name: "󰉥 Feed Dog" + - entity: switch.chore_tracker_jordyn_restock_cat_food_cans + name: "󱜜 Restock Cat Food Cans" - type: divider - entity: sensor.jordyn_chores_done_today name: "Chores done today" @@ -75,17 +72,11 @@ views: - type: entities title: "󱑷 Declan's Chores" entities: - - entity: switch.chore_tracker_declan_make_bed - name: "󰋣 Make Bed" + - entity: switch.chore_tracker_declan_take_morning_pill + name: "󰐂 Take morning pill" - - entity: switch.chore_tracker_declan_brush_teeth - name: "󰦩 Brush Teeth" - - - entity: switch.chore_tracker_declan_set_table - name: "󰏧 Set Table" - - - entity: switch.chore_tracker_declan_take_out_trash - name: "󰖸 Take Out Trash" + - entity: switch.chore_tracker_declan_scoop_dog_poop + name: "󰇷 Scoop Dog Poop" - type: divider - entity: sensor.declan_chores_done_today name: "Chores done today" @@ -99,25 +90,16 @@ views: target: entity_id: input_button.declan_reset_chores - type: entities - title: "󱚠 Chloe's Chores" + title: "󱚣 Chloe's Chores" entities: - - entity: switch.chore_tracker_chloe_make_bed - name: "󰋣 Make Bed" + - entity: switch.chore_tracker_chloe_check_&_fill_kitty_feeders + name: "󰊩 Check & fill kitty feeders" - - entity: switch.chore_tracker_chloe_brush_teeth - name: "󰦩 Brush Teeth" + - entity: switch.chore_tracker_chloe_scoop_kitty_litter + name: "󰇷 Scoop Kitty Litter" - - entity: switch.chore_tracker_chloe_water_plants - name: "󱬥 Water Plants" - - - entity: switch.chore_tracker_chloe_homework - name: "󰈙 Homework" - - - entity: switch.chore_tracker_chloe_tidy_room - name: "󰂨 Tidy Room" - - - entity: switch.chore_tracker_chloe_practice_piano - name: "󰾞 Practice Piano" + - entity: switch.chore_tracker_chloe_replace_kitty_litter_bags + name: "󰇷 Replace Kitty Litter Bags" - type: divider - entity: sensor.chloe_chores_done_today name: "Chores done today" diff --git a/esphome/chore-tracker/chores_config.yaml b/esphome/chore-tracker/chores_config.yaml index f600c91..04ad4af 100644 --- a/esphome/chore-tracker/chores_config.yaml +++ b/esphome/chore-tracker/chores_config.yaml @@ -44,45 +44,33 @@ kids: color: "4D96FF" color_dark: "2A6FCC" chores: - - name: Make Bed + - name: Put on underwear icon: "\U000F02E3" # mdi:bed - name: Brush Teeth icon: "\U000F09A9" # mdi:toothbrush - - name: Tidy Room - icon: "\U000F00A8" # mdi:broom - - name: Homework - icon: "\U000F0219" # mdi:book-open-variant - - name: Feed Dog - icon: "\U000F0265" # mdi:paw + - name: Check & fill water bowls + icon: "\U000F01AB" # mdi:cup-water + - name: Restock Cat Food Cans + icon: "\U000F171C" # mdi:food-turkey - name: Declan avatar: "\U000F1477" # mdi:wizard-hat color: "C77DFF" color_dark: "8B42CC" chores: - - name: Make Bed - icon: "\U000F02E3" # mdi:bed - - name: Brush Teeth - icon: "\U000F09A9" # mdi:toothbrush - - name: Set Table - icon: "\U000F03E7" # mdi:silverware-fork-knife - - name: Take Out Trash - icon: "\U000F05B8" # mdi:trash-can + - name: Take morning pill + icon: "\U000F0402" # mdi:pill + - name: Scoop Dog Poop + icon: "\U000F01F7" # mdi:emoticon-poop - name: Chloe - avatar: "\U000F16A0" # mdi:robot-confused-outline + avatar: "\U000F16A3" # mdi:robot-excited color: "FF6B9D" color_dark: "CC3A6F" chores: - - name: Make Bed - icon: "\U000F02E3" # mdi:bed - - name: Brush Teeth - icon: "\U000F09A9" # mdi:toothbrush - - name: Water Plants - icon: "\U000F1B25" # mdi:watering-can - - name: Homework - icon: "\U000F0219" # mdi:book-open-variant - - name: Tidy Room - icon: "\U000F00A8" # mdi:broom - - name: Practice Piano - icon: "\U000F0F9E" # mdi:piano \ No newline at end of file + - name: Check & fill kitty feeders + icon: "\U000F02A9" # mdi:bowl-outline + - name: Scoop Kitty Litter + icon: "\U000F01F7" # mdi:emoticon-poop + - name: Replace Kitty Litter Bags + icon: "\U000F01F7" # mdi:emoticon-poop \ No newline at end of file diff --git a/packages/chore-tracker-ha.yaml b/packages/chore-tracker-ha.yaml index eefd123..6909c6e 100644 --- a/packages/chore-tracker-ha.yaml +++ b/packages/chore-tracker-ha.yaml @@ -27,40 +27,40 @@ template: unique_id: jordyn_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_jordyn_make_bed'), states('switch.chore_tracker_jordyn_brush_teeth'), states('switch.chore_tracker_jordyn_tidy_room'), states('switch.chore_tracker_jordyn_homework'), states('switch.chore_tracker_jordyn_feed_dog')] %} + {% set chores = [states('switch.chore_tracker_jordyn_put_on_underwear'), states('switch.chore_tracker_jordyn_brush_teeth'), states('switch.chore_tracker_jordyn_check_&_fill_water_bowls'), states('switch.chore_tracker_jordyn_restock_cat_food_cans')] %} {{ chores | select('equalto', 'on') | list | count }} - name: "Jordyn All Chores Done" unique_id: jordyn_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.jordyn_chores_done_today') | int == 5 }} + {{ states('sensor.jordyn_chores_done_today') | int == 4 }} - name: "Declan Chores Done Today" unique_id: declan_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_declan_make_bed'), states('switch.chore_tracker_declan_brush_teeth'), states('switch.chore_tracker_declan_set_table'), states('switch.chore_tracker_declan_take_out_trash')] %} + {% set chores = [states('switch.chore_tracker_declan_take_morning_pill'), states('switch.chore_tracker_declan_scoop_dog_poop')] %} {{ chores | select('equalto', 'on') | list | count }} - name: "Declan All Chores Done" unique_id: declan_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.declan_chores_done_today') | int == 4 }} + {{ states('sensor.declan_chores_done_today') | int == 2 }} - name: "Chloe Chores Done Today" unique_id: chloe_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_chloe_make_bed'), states('switch.chore_tracker_chloe_brush_teeth'), states('switch.chore_tracker_chloe_water_plants'), states('switch.chore_tracker_chloe_homework'), states('switch.chore_tracker_chloe_tidy_room'), states('switch.chore_tracker_chloe_practice_piano')] %} + {% set chores = [states('switch.chore_tracker_chloe_check_&_fill_kitty_feeders'), states('switch.chore_tracker_chloe_scoop_kitty_litter'), states('switch.chore_tracker_chloe_replace_kitty_litter_bags')] %} {{ chores | select('equalto', 'on') | list | count }} - name: "Chloe All Chores Done" unique_id: chloe_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.chloe_chores_done_today') | int == 6 }} + {{ states('sensor.chloe_chores_done_today') | int == 3 }} automation: @@ -72,19 +72,16 @@ automation: action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_make_bed + entity_id: switch.chore_tracker_jordyn_put_on_underwear - service: switch.turn_off target: entity_id: switch.chore_tracker_jordyn_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_tidy_room + entity_id: switch.chore_tracker_jordyn_check_&_fill_water_bowls - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_homework - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_jordyn_feed_dog + entity_id: switch.chore_tracker_jordyn_restock_cat_food_cans - id: declan_reset_from_ha alias: "Chore Tracker - Reset Declan's chores from HA" @@ -94,16 +91,10 @@ automation: action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_make_bed + entity_id: switch.chore_tracker_declan_take_morning_pill - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_brush_teeth - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_declan_set_table - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_declan_take_out_trash + entity_id: switch.chore_tracker_declan_scoop_dog_poop - id: chloe_reset_from_ha alias: "Chore Tracker - Reset Chloe's chores from HA" @@ -113,22 +104,13 @@ automation: action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_chloe_make_bed + entity_id: switch.chore_tracker_chloe_check_&_fill_kitty_feeders - service: switch.turn_off target: - entity_id: switch.chore_tracker_chloe_brush_teeth + entity_id: switch.chore_tracker_chloe_scoop_kitty_litter - service: switch.turn_off target: - entity_id: switch.chore_tracker_chloe_water_plants - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_homework - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_tidy_room - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_practice_piano + entity_id: switch.chore_tracker_chloe_replace_kitty_litter_bags - id: reset_all_from_ha alias: "Chore Tracker - Reset ALL chores from HA" @@ -138,49 +120,31 @@ automation: action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_make_bed + entity_id: switch.chore_tracker_jordyn_put_on_underwear - service: switch.turn_off target: entity_id: switch.chore_tracker_jordyn_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_tidy_room + entity_id: switch.chore_tracker_jordyn_check_&_fill_water_bowls - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_homework + entity_id: switch.chore_tracker_jordyn_restock_cat_food_cans - service: switch.turn_off target: - entity_id: switch.chore_tracker_jordyn_feed_dog + entity_id: switch.chore_tracker_declan_take_morning_pill - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_make_bed + entity_id: switch.chore_tracker_declan_scoop_dog_poop - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_brush_teeth + entity_id: switch.chore_tracker_chloe_check_&_fill_kitty_feeders - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_set_table + entity_id: switch.chore_tracker_chloe_scoop_kitty_litter - service: switch.turn_off target: - entity_id: switch.chore_tracker_declan_take_out_trash - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_make_bed - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_brush_teeth - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_water_plants - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_homework - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_tidy_room - - service: switch.turn_off - target: - entity_id: switch.chore_tracker_chloe_practice_piano + entity_id: switch.chore_tracker_chloe_replace_kitty_litter_bags - id: jordyn_all_done_notify alias: "Chore Tracker - Jordyn all done!" @@ -192,7 +156,7 @@ automation: - service: notify.notify data: title: "Jordyn finished all chores!" - message: "Jordyn completed all 5 chores today!" + message: "Jordyn completed all 4 chores today!" - id: declan_all_done_notify alias: "Chore Tracker - Declan all done!" @@ -204,7 +168,7 @@ automation: - service: notify.notify data: title: "Declan finished all chores!" - message: "Declan completed all 4 chores today!" + message: "Declan completed all 2 chores today!" - id: chloe_all_done_notify alias: "Chore Tracker - Chloe all done!" @@ -216,7 +180,7 @@ automation: - service: notify.notify data: title: "Chloe finished all chores!" - message: "Chloe completed all 6 chores today!" + message: "Chloe completed all 3 chores today!" - id: chore_reminder_evening alias: "Chore Tracker - Evening reminder" @@ -233,7 +197,7 @@ automation: title: "Jordyn has unfinished chores" message: > Jordyn has done - {{ states('sensor.jordyn_chores_done_today') }}/5 chores today. + {{ states('sensor.jordyn_chores_done_today') }}/4 chores today. - if: condition: template value_template: "{{ states('sensor.declan_all_chores_done') != 'True' }}" @@ -243,7 +207,7 @@ automation: title: "Declan has unfinished chores" message: > Declan has done - {{ states('sensor.declan_chores_done_today') }}/4 chores today. + {{ states('sensor.declan_chores_done_today') }}/2 chores today. - if: condition: template value_template: "{{ states('sensor.chloe_all_chores_done') != 'True' }}" @@ -253,6 +217,6 @@ automation: title: "Chloe has unfinished chores" message: > Chloe has done - {{ states('sensor.chloe_chores_done_today') }}/6 chores today. + {{ states('sensor.chloe_chores_done_today') }}/3 chores today.