diff --git a/esphome/chore-tracker-esphome.yaml b/esphome/chore-tracker-esphome.yaml index fe6d3f7..580904c 100644 --- a/esphome/chore-tracker-esphome.yaml +++ b/esphome/chore-tracker-esphome.yaml @@ -1,6 +1,6 @@ ################################################################################ # chore-tracker-esphome.yaml (AUTO-GENERATED — edit chores_config.yaml) -# Kids: Emma, Liam, Zoe +# Kids: Jordyn, Declan, Chloe # # HOME SCREEN BEHAVIOUR: # Red outline = chores incomplete @@ -110,9 +110,9 @@ time: seconds: 0 then: - lambda: |- - id(reset_emma_chores).execute(); - id(reset_liam_chores).execute(); - id(reset_zoe_chores).execute(); + id(reset_jordyn_chores).execute(); + id(reset_declan_chores).execute(); + id(reset_chloe_chores).execute(); - lvgl.page.show: page_home # ── Fonts (place files in /config/esphome/fonts/) ──────────────────────────── @@ -156,664 +156,664 @@ switch: mode: output: true - # ── Emma's chores ────────────────────────── + # ── Jordyn's chores ────────────────────────── - platform: template - name: "Emma - Make Bed" - id: emma_make_bed + name: "Jordyn - Make Bed" + id: jordyn_make_bed icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_emma_make_bed + entity_id: switch.chore_tracker_jordyn_make_bed on_turn_off: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_emma_make_bed + entity_id: switch.chore_tracker_jordyn_make_bed - platform: template - name: "Emma - Brush Teeth" - id: emma_brush_teeth + name: "Jordyn - Brush Teeth" + id: jordyn_brush_teeth icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_emma_brush_teeth + entity_id: switch.chore_tracker_jordyn_brush_teeth on_turn_off: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_emma_brush_teeth + entity_id: switch.chore_tracker_jordyn_brush_teeth - platform: template - name: "Emma - Tidy Room" - id: emma_tidy_room + name: "Jordyn - Tidy Room" + id: jordyn_tidy_room icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_emma_tidy_room + entity_id: switch.chore_tracker_jordyn_tidy_room on_turn_off: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_emma_tidy_room + entity_id: switch.chore_tracker_jordyn_tidy_room - platform: template - name: "Emma - Homework" - id: emma_homework + name: "Jordyn - Homework" + id: jordyn_homework icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_emma_homework + entity_id: switch.chore_tracker_jordyn_homework on_turn_off: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_emma_homework + entity_id: switch.chore_tracker_jordyn_homework - platform: template - name: "Emma - Feed Dog" - id: emma_feed_dog + 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_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_emma_feed_dog + entity_id: switch.chore_tracker_jordyn_feed_dog on_turn_off: then: - - script.execute: update_emma_ui + - script.execute: update_jordyn_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_emma_feed_dog + entity_id: switch.chore_tracker_jordyn_feed_dog - # ── Liam's chores ────────────────────────── + # ── Declan's chores ────────────────────────── - platform: template - name: "Liam - Make Bed" - id: liam_make_bed + name: "Declan - Make Bed" + id: declan_make_bed icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_liam_make_bed + entity_id: switch.chore_tracker_declan_make_bed on_turn_off: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_liam_make_bed + entity_id: switch.chore_tracker_declan_make_bed - platform: template - name: "Liam - Brush Teeth" - id: liam_brush_teeth + name: "Declan - Brush Teeth" + id: declan_brush_teeth icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_liam_brush_teeth + entity_id: switch.chore_tracker_declan_brush_teeth on_turn_off: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_liam_brush_teeth + entity_id: switch.chore_tracker_declan_brush_teeth - platform: template - name: "Liam - Set Table" - id: liam_set_table + 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_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_liam_set_table + entity_id: switch.chore_tracker_declan_set_table on_turn_off: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_liam_set_table + entity_id: switch.chore_tracker_declan_set_table - platform: template - name: "Liam - Take Out Trash" - id: liam_take_out_trash + 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_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_liam_take_out_trash + entity_id: switch.chore_tracker_declan_take_out_trash on_turn_off: then: - - script.execute: update_liam_ui + - script.execute: update_declan_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_liam_take_out_trash + entity_id: switch.chore_tracker_declan_take_out_trash - # ── Zoe's chores ────────────────────────── + # ── Chloe's chores ────────────────────────── - platform: template - name: "Zoe - Make Bed" - id: zoe_make_bed + name: "Chloe - Make Bed" + id: chloe_make_bed icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_make_bed + entity_id: switch.chore_tracker_chloe_make_bed on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_make_bed + entity_id: switch.chore_tracker_chloe_make_bed - platform: template - name: "Zoe - Brush Teeth" - id: zoe_brush_teeth + name: "Chloe - Brush Teeth" + id: chloe_brush_teeth icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_brush_teeth + entity_id: switch.chore_tracker_chloe_brush_teeth on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_brush_teeth + entity_id: switch.chore_tracker_chloe_brush_teeth - platform: template - name: "Zoe - Water Plants" - id: zoe_water_plants + name: "Chloe - Water Plants" + id: chloe_water_plants icon: mdi:checkbox-marked-circle optimistic: true restore_mode: RESTORE_DEFAULT_OFF on_turn_on: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_water_plants + entity_id: switch.chore_tracker_chloe_water_plants on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_water_plants + entity_id: switch.chore_tracker_chloe_water_plants - platform: template - name: "Zoe - Homework" - id: zoe_homework + 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_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_homework + entity_id: switch.chore_tracker_chloe_homework on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_homework + entity_id: switch.chore_tracker_chloe_homework - platform: template - name: "Zoe - Tidy Room" - id: zoe_tidy_room + 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_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_tidy_room + entity_id: switch.chore_tracker_chloe_tidy_room on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_tidy_room + entity_id: switch.chore_tracker_chloe_tidy_room - platform: template - name: "Zoe - Practice Piano" - id: zoe_practice_piano + 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_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_on data: - entity_id: switch.chore_tracker_zoe_practice_piano + entity_id: switch.chore_tracker_chloe_practice_piano on_turn_off: then: - - script.execute: update_zoe_ui + - script.execute: update_chloe_ui - homeassistant.service: service: switch.turn_off data: - entity_id: switch.chore_tracker_zoe_practice_piano + entity_id: switch.chore_tracker_chloe_practice_piano # ── Sensors — reported to HA ───────────────────────────────────────────────── sensor: - platform: template - name: "Emma Chores Done" - id: emma_chores_done + name: "Jordyn Chores Done" + id: jordyn_chores_done accuracy_decimals: 0 update_interval: 2s lambda: |- int done = 0; - if (id(emma_make_bed).state) done++; - if (id(emma_brush_teeth).state) done++; - if (id(emma_tidy_room).state) done++; - if (id(emma_homework).state) done++; - if (id(emma_feed_dog).state) done++; + if (id(jordyn_make_bed).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++; return done; - platform: template - name: "Liam Chores Done" - id: liam_chores_done + name: "Declan Chores Done" + id: declan_chores_done accuracy_decimals: 0 update_interval: 2s lambda: |- int done = 0; - if (id(liam_make_bed).state) done++; - if (id(liam_brush_teeth).state) done++; - if (id(liam_set_table).state) done++; - if (id(liam_take_out_trash).state) done++; + 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++; return done; - platform: template - name: "Zoe Chores Done" - id: zoe_chores_done + name: "Chloe Chores Done" + id: chloe_chores_done accuracy_decimals: 0 update_interval: 2s lambda: |- int done = 0; - if (id(zoe_make_bed).state) done++; - if (id(zoe_brush_teeth).state) done++; - if (id(zoe_water_plants).state) done++; - if (id(zoe_homework).state) done++; - if (id(zoe_tidy_room).state) done++; - if (id(zoe_practice_piano).state) done++; + 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++; return done; # ── Scripts — reset + UI update ─────────────────────────────────────────────── script: - - id: reset_emma_chores + - id: reset_jordyn_chores mode: single then: - lambda: |- - id(emma_make_bed).turn_off(); - id(emma_brush_teeth).turn_off(); - id(emma_tidy_room).turn_off(); - id(emma_homework).turn_off(); - id(emma_feed_dog).turn_off(); - - script.execute: update_emma_ui + id(jordyn_make_bed).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(); + - script.execute: update_jordyn_ui - - id: update_emma_ui + - id: update_jordyn_ui mode: single then: - lambda: |- - int done = (id(emma_make_bed).state ? 1 : 0) + (id(emma_brush_teeth).state ? 1 : 0) + (id(emma_tidy_room).state ? 1 : 0) + (id(emma_homework).state ? 1 : 0) + (id(emma_feed_dog).state ? 1 : 0); + 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; char buf[24]; // Progress bar + label - lv_bar_set_value(id(progress_bar_emma), done, LV_ANIM_ON); + lv_bar_set_value(id(progress_bar_jordyn), done, LV_ANIM_ON); snprintf(buf, sizeof(buf), "%d / 5", done); - lv_label_set_text(id(progress_label_emma), buf); + lv_label_set_text(id(progress_label_jordyn), buf); // All-done message in sidebar - lv_label_set_text(id(all_done_label_emma), done == total ? "All done!" : ""); + lv_label_set_text(id(all_done_label_jordyn), done == total ? "All done!" : ""); // Home button: RED outline = incomplete, SOLID GREEN = all done if (done == total) { - lv_obj_set_style_bg_opa(id(home_btn_emma), LV_OPA_COVER, LV_PART_MAIN); - lv_obj_set_style_bg_color(id(home_btn_emma), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_emma), 0, LV_PART_MAIN); - lv_label_set_text(id(home_status_emma), "\u2713 all done!"); - lv_obj_set_style_text_color(id(home_status_emma), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_jordyn), LV_OPA_COVER, LV_PART_MAIN); + lv_obj_set_style_bg_color(id(home_btn_jordyn), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_jordyn), 0, LV_PART_MAIN); + lv_label_set_text(id(home_status_jordyn), "\u2713 all done!"); + lv_obj_set_style_text_color(id(home_status_jordyn), lv_color_hex(0xFFFFFF), LV_PART_MAIN); } else { - lv_obj_set_style_bg_opa(id(home_btn_emma), LV_OPA_TRANSP, LV_PART_MAIN); - lv_obj_set_style_border_color(id(home_btn_emma), lv_color_hex(0xFF4757), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_emma), 5, LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_jordyn), LV_OPA_TRANSP, LV_PART_MAIN); + lv_obj_set_style_border_color(id(home_btn_jordyn), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_jordyn), 5, LV_PART_MAIN); snprintf(buf, sizeof(buf), "%d left", total - done); - lv_label_set_text(id(home_status_emma), buf); - lv_obj_set_style_text_color(id(home_status_emma), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_label_set_text(id(home_status_jordyn), buf); + lv_obj_set_style_text_color(id(home_status_jordyn), lv_color_hex(0xFF4757), LV_PART_MAIN); } // Card colours - if (id(emma_make_bed).state) { - lv_obj_set_style_bg_color(id(card_emma_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_emma_make_bed), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_emma_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_emma_make_bed), ""); + 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), ""); } - if (id(emma_brush_teeth).state) { - lv_obj_set_style_bg_color(id(card_emma_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_brush_teeth), 3, LV_PART_MAIN); - lv_label_set_text(id(check_emma_brush_teeth), "\u2705"); + if (id(jordyn_brush_teeth).state) { + lv_obj_set_style_bg_color(id(card_jordyn_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(card_jordyn_brush_teeth), 3, LV_PART_MAIN); + lv_label_set_text(id(check_jordyn_brush_teeth), "\u2705"); } else { - lv_obj_set_style_bg_color(id(card_emma_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_brush_teeth), 2, LV_PART_MAIN); - lv_label_set_text(id(check_emma_brush_teeth), ""); + lv_obj_set_style_bg_color(id(card_jordyn_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_border_color(id(card_jordyn_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); + 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(emma_tidy_room).state) { - lv_obj_set_style_bg_color(id(card_emma_tidy_room), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_tidy_room), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_tidy_room), 3, LV_PART_MAIN); - lv_label_set_text(id(check_emma_tidy_room), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_emma_tidy_room), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_tidy_room), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_tidy_room), 2, LV_PART_MAIN); - lv_label_set_text(id(check_emma_tidy_room), ""); + 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), ""); } - if (id(emma_homework).state) { - lv_obj_set_style_bg_color(id(card_emma_homework), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_homework), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_homework), 3, LV_PART_MAIN); - lv_label_set_text(id(check_emma_homework), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_emma_homework), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_homework), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_homework), 2, LV_PART_MAIN); - lv_label_set_text(id(check_emma_homework), ""); + 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(emma_feed_dog).state) { - lv_obj_set_style_bg_color(id(card_emma_feed_dog), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_feed_dog), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_feed_dog), 3, LV_PART_MAIN); - lv_label_set_text(id(check_emma_feed_dog), "\u2705"); + 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_emma_feed_dog), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_emma_feed_dog), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_emma_feed_dog), 2, LV_PART_MAIN); - lv_label_set_text(id(check_emma_feed_dog), ""); + 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), ""); } - - id: reset_liam_chores + - id: reset_declan_chores mode: single then: - lambda: |- - id(liam_make_bed).turn_off(); - id(liam_brush_teeth).turn_off(); - id(liam_set_table).turn_off(); - id(liam_take_out_trash).turn_off(); - - script.execute: update_liam_ui + 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(); + - script.execute: update_declan_ui - - id: update_liam_ui + - id: update_declan_ui mode: single then: - lambda: |- - int done = (id(liam_make_bed).state ? 1 : 0) + (id(liam_brush_teeth).state ? 1 : 0) + (id(liam_set_table).state ? 1 : 0) + (id(liam_take_out_trash).state ? 1 : 0); + 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; char buf[24]; // Progress bar + label - lv_bar_set_value(id(progress_bar_liam), done, LV_ANIM_ON); + lv_bar_set_value(id(progress_bar_declan), done, LV_ANIM_ON); snprintf(buf, sizeof(buf), "%d / 4", done); - lv_label_set_text(id(progress_label_liam), buf); + lv_label_set_text(id(progress_label_declan), buf); // All-done message in sidebar - lv_label_set_text(id(all_done_label_liam), done == total ? "All done!" : ""); + lv_label_set_text(id(all_done_label_declan), done == total ? "All done!" : ""); // Home button: RED outline = incomplete, SOLID GREEN = all done if (done == total) { - lv_obj_set_style_bg_opa(id(home_btn_liam), LV_OPA_COVER, LV_PART_MAIN); - lv_obj_set_style_bg_color(id(home_btn_liam), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_liam), 0, LV_PART_MAIN); - lv_label_set_text(id(home_status_liam), "\u2713 all done!"); - lv_obj_set_style_text_color(id(home_status_liam), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_declan), LV_OPA_COVER, LV_PART_MAIN); + lv_obj_set_style_bg_color(id(home_btn_declan), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_declan), 0, LV_PART_MAIN); + lv_label_set_text(id(home_status_declan), "\u2713 all done!"); + lv_obj_set_style_text_color(id(home_status_declan), lv_color_hex(0xFFFFFF), LV_PART_MAIN); } else { - lv_obj_set_style_bg_opa(id(home_btn_liam), LV_OPA_TRANSP, LV_PART_MAIN); - lv_obj_set_style_border_color(id(home_btn_liam), lv_color_hex(0xFF4757), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_liam), 5, LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_declan), LV_OPA_TRANSP, LV_PART_MAIN); + lv_obj_set_style_border_color(id(home_btn_declan), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_declan), 5, LV_PART_MAIN); snprintf(buf, sizeof(buf), "%d left", total - done); - lv_label_set_text(id(home_status_liam), buf); - lv_obj_set_style_text_color(id(home_status_liam), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_label_set_text(id(home_status_declan), buf); + lv_obj_set_style_text_color(id(home_status_declan), lv_color_hex(0xFF4757), LV_PART_MAIN); } // Card colours - if (id(liam_make_bed).state) { - lv_obj_set_style_bg_color(id(card_liam_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_liam_make_bed), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_liam_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_liam_make_bed), ""); + 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), ""); } - if (id(liam_brush_teeth).state) { - lv_obj_set_style_bg_color(id(card_liam_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_brush_teeth), 3, LV_PART_MAIN); - lv_label_set_text(id(check_liam_brush_teeth), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_liam_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_brush_teeth), 2, LV_PART_MAIN); - lv_label_set_text(id(check_liam_brush_teeth), ""); + 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(liam_set_table).state) { - lv_obj_set_style_bg_color(id(card_liam_set_table), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_set_table), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_set_table), 3, LV_PART_MAIN); - lv_label_set_text(id(check_liam_set_table), "\u2705"); + 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_liam_set_table), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_set_table), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_set_table), 2, LV_PART_MAIN); - lv_label_set_text(id(check_liam_set_table), ""); + 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(liam_take_out_trash).state) { - lv_obj_set_style_bg_color(id(card_liam_take_out_trash), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_take_out_trash), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_take_out_trash), 3, LV_PART_MAIN); - lv_label_set_text(id(check_liam_take_out_trash), "\u2705"); + 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_liam_take_out_trash), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_liam_take_out_trash), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_liam_take_out_trash), 2, LV_PART_MAIN); - lv_label_set_text(id(check_liam_take_out_trash), ""); + 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), ""); } - - id: reset_zoe_chores + - id: reset_chloe_chores mode: single then: - lambda: |- - id(zoe_make_bed).turn_off(); - id(zoe_brush_teeth).turn_off(); - id(zoe_water_plants).turn_off(); - id(zoe_homework).turn_off(); - id(zoe_tidy_room).turn_off(); - id(zoe_practice_piano).turn_off(); - - script.execute: update_zoe_ui + 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(); + - script.execute: update_chloe_ui - - id: update_zoe_ui + - id: update_chloe_ui mode: single then: - lambda: |- - int done = (id(zoe_make_bed).state ? 1 : 0) + (id(zoe_brush_teeth).state ? 1 : 0) + (id(zoe_water_plants).state ? 1 : 0) + (id(zoe_homework).state ? 1 : 0) + (id(zoe_tidy_room).state ? 1 : 0) + (id(zoe_practice_piano).state ? 1 : 0); + 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; char buf[24]; // Progress bar + label - lv_bar_set_value(id(progress_bar_zoe), done, LV_ANIM_ON); + lv_bar_set_value(id(progress_bar_chloe), done, LV_ANIM_ON); snprintf(buf, sizeof(buf), "%d / 6", done); - lv_label_set_text(id(progress_label_zoe), buf); + lv_label_set_text(id(progress_label_chloe), buf); // All-done message in sidebar - lv_label_set_text(id(all_done_label_zoe), done == total ? "All done!" : ""); + lv_label_set_text(id(all_done_label_chloe), done == total ? "All done!" : ""); // Home button: RED outline = incomplete, SOLID GREEN = all done if (done == total) { - lv_obj_set_style_bg_opa(id(home_btn_zoe), LV_OPA_COVER, LV_PART_MAIN); - lv_obj_set_style_bg_color(id(home_btn_zoe), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_zoe), 0, LV_PART_MAIN); - lv_label_set_text(id(home_status_zoe), "\u2713 all done!"); - lv_obj_set_style_text_color(id(home_status_zoe), lv_color_hex(0xFFFFFF), LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_chloe), LV_OPA_COVER, LV_PART_MAIN); + lv_obj_set_style_bg_color(id(home_btn_chloe), lv_color_hex(0x6BCB77), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_chloe), 0, LV_PART_MAIN); + lv_label_set_text(id(home_status_chloe), "\u2713 all done!"); + lv_obj_set_style_text_color(id(home_status_chloe), lv_color_hex(0xFFFFFF), LV_PART_MAIN); } else { - lv_obj_set_style_bg_opa(id(home_btn_zoe), LV_OPA_TRANSP, LV_PART_MAIN); - lv_obj_set_style_border_color(id(home_btn_zoe), lv_color_hex(0xFF4757), LV_PART_MAIN); - lv_obj_set_style_border_width(id(home_btn_zoe), 5, LV_PART_MAIN); + lv_obj_set_style_bg_opa(id(home_btn_chloe), LV_OPA_TRANSP, LV_PART_MAIN); + lv_obj_set_style_border_color(id(home_btn_chloe), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_obj_set_style_border_width(id(home_btn_chloe), 5, LV_PART_MAIN); snprintf(buf, sizeof(buf), "%d left", total - done); - lv_label_set_text(id(home_status_zoe), buf); - lv_obj_set_style_text_color(id(home_status_zoe), lv_color_hex(0xFF4757), LV_PART_MAIN); + lv_label_set_text(id(home_status_chloe), buf); + lv_obj_set_style_text_color(id(home_status_chloe), lv_color_hex(0xFF4757), LV_PART_MAIN); } // Card colours - if (id(zoe_make_bed).state) { - lv_obj_set_style_bg_color(id(card_zoe_make_bed), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_make_bed), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_make_bed), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_make_bed), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_zoe_make_bed), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_make_bed), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_make_bed), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_make_bed), ""); + 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), ""); } - if (id(zoe_brush_teeth).state) { - lv_obj_set_style_bg_color(id(card_zoe_brush_teeth), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_brush_teeth), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_brush_teeth), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_brush_teeth), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_zoe_brush_teeth), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_brush_teeth), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_brush_teeth), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_brush_teeth), ""); + 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), ""); } - if (id(zoe_water_plants).state) { - lv_obj_set_style_bg_color(id(card_zoe_water_plants), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_water_plants), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_water_plants), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_water_plants), "\u2705"); + 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"); } else { - lv_obj_set_style_bg_color(id(card_zoe_water_plants), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_water_plants), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_water_plants), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_water_plants), ""); + 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(zoe_homework).state) { - lv_obj_set_style_bg_color(id(card_zoe_homework), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_homework), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_homework), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_homework), "\u2705"); + 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_zoe_homework), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_homework), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_homework), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_homework), ""); + 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(zoe_tidy_room).state) { - lv_obj_set_style_bg_color(id(card_zoe_tidy_room), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_tidy_room), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_tidy_room), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_tidy_room), "\u2705"); + 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_zoe_tidy_room), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_tidy_room), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_tidy_room), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_tidy_room), ""); + 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(zoe_practice_piano).state) { - lv_obj_set_style_bg_color(id(card_zoe_practice_piano), lv_color_hex(0xF0FFF4), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_practice_piano), lv_color_hex(0x6BCB77), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_practice_piano), 3, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_practice_piano), "\u2705"); + 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_zoe_practice_piano), lv_color_hex(0xFFFFFF), LV_PART_MAIN); - lv_obj_set_style_border_color(id(card_zoe_practice_piano), lv_color_hex(0xEEEEEE), LV_PART_MAIN); - lv_obj_set_style_border_width(id(card_zoe_practice_piano), 2, LV_PART_MAIN); - lv_label_set_text(id(check_zoe_practice_piano), ""); + 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), ""); } @@ -857,9 +857,9 @@ lvgl: radius: 12 on_click: then: - - script.execute: reset_emma_chores - - script.execute: reset_liam_chores - - script.execute: reset_zoe_chores + - script.execute: reset_jordyn_chores + - script.execute: reset_declan_chores + - script.execute: reset_chloe_chores widgets: - label: align: CENTER @@ -867,7 +867,7 @@ lvgl: text_color: 0xFFFFFF text_font: font_tiny - button: - id: home_btn_emma + id: home_btn_jordyn x: 80 y: 130 width: 200 @@ -879,7 +879,7 @@ lvgl: radius: 24 on_click: then: - - lvgl.page.show: page_emma + - lvgl.page.show: page_jordyn widgets: - label: align: CENTER @@ -889,11 +889,11 @@ lvgl: - label: align: CENTER y: 22 - text: "Emma" + text: "Jordyn" text_font: font_name text_color: 0x2D3436 - label: - id: home_status_emma + id: home_status_jordyn align: CENTER y: 66 text: "not done" @@ -901,7 +901,7 @@ lvgl: text_color: 0xFF4757 - button: - id: home_btn_liam + id: home_btn_declan x: 300 y: 130 width: 200 @@ -913,7 +913,7 @@ lvgl: radius: 24 on_click: then: - - lvgl.page.show: page_liam + - lvgl.page.show: page_declan widgets: - label: align: CENTER @@ -923,11 +923,11 @@ lvgl: - label: align: CENTER y: 22 - text: "Liam" + text: "Declan" text_font: font_name text_color: 0x2D3436 - label: - id: home_status_liam + id: home_status_declan align: CENTER y: 66 text: "not done" @@ -935,7 +935,7 @@ lvgl: text_color: 0xFF4757 - button: - id: home_btn_zoe + id: home_btn_chloe x: 520 y: 130 width: 200 @@ -947,7 +947,7 @@ lvgl: radius: 24 on_click: then: - - lvgl.page.show: page_zoe + - lvgl.page.show: page_chloe widgets: - label: align: CENTER @@ -957,11 +957,11 @@ lvgl: - label: align: CENTER y: 22 - text: "Zoe" + text: "Chloe" text_font: font_name text_color: 0x2D3436 - label: - id: home_status_zoe + id: home_status_chloe align: CENTER y: 66 text: "not done" @@ -969,7 +969,7 @@ lvgl: text_color: 0xFF4757 - - id: page_emma + - id: page_jordyn bg_color: 0xFFF9F0 widgets: @@ -996,11 +996,11 @@ lvgl: y: 76 width: 172 align: TOP_MID - text: "Emma" + text: "Jordyn" text_font: font_name text_color: 0xFFFFFF - bar: - id: progress_bar_emma + id: progress_bar_jordyn x: 14 y: 132 width: 144 @@ -1012,7 +1012,7 @@ lvgl: min_value: 0 max_value: 5 - label: - id: progress_label_emma + id: progress_label_jordyn x: 0 y: 156 width: 172 @@ -1021,7 +1021,7 @@ lvgl: text_font: font_small text_color: 0xDDEEFF - label: - id: all_done_label_emma + id: all_done_label_jordyn x: 0 y: 192 width: 172 @@ -1038,7 +1038,7 @@ lvgl: radius: 14 on_click: then: - - script.execute: reset_emma_chores + - script.execute: reset_jordyn_chores widgets: - label: align: CENTER @@ -1064,7 +1064,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_emma_make_bed + id: card_jordyn_make_bed x: 182 y: 10 width: 196 @@ -1078,10 +1078,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: emma_make_bed + - switch.toggle: jordyn_make_bed widgets: - label: - id: check_emma_make_bed + id: check_jordyn_make_bed align: TOP_RIGHT x: -10 y: 8 @@ -1100,7 +1100,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_emma_brush_teeth + id: card_jordyn_brush_teeth x: 388 y: 10 width: 196 @@ -1114,10 +1114,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: emma_brush_teeth + - switch.toggle: jordyn_brush_teeth widgets: - label: - id: check_emma_brush_teeth + id: check_jordyn_brush_teeth align: TOP_RIGHT x: -10 y: 8 @@ -1136,7 +1136,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_emma_tidy_room + id: card_jordyn_tidy_room x: 594 y: 10 width: 196 @@ -1150,10 +1150,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: emma_tidy_room + - switch.toggle: jordyn_tidy_room widgets: - label: - id: check_emma_tidy_room + id: check_jordyn_tidy_room align: TOP_RIGHT x: -10 y: 8 @@ -1172,7 +1172,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_emma_homework + id: card_jordyn_homework x: 182 y: 158 width: 196 @@ -1186,10 +1186,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: emma_homework + - switch.toggle: jordyn_homework widgets: - label: - id: check_emma_homework + id: check_jordyn_homework align: TOP_RIGHT x: -10 y: 8 @@ -1208,7 +1208,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_emma_feed_dog + id: card_jordyn_feed_dog x: 388 y: 158 width: 196 @@ -1222,10 +1222,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: emma_feed_dog + - switch.toggle: jordyn_feed_dog widgets: - label: - id: check_emma_feed_dog + id: check_jordyn_feed_dog align: TOP_RIGHT x: -10 y: 8 @@ -1244,7 +1244,7 @@ lvgl: text_color: 0x2D3436 - - id: page_liam + - id: page_declan bg_color: 0xFFF9F0 widgets: @@ -1271,11 +1271,11 @@ lvgl: y: 76 width: 172 align: TOP_MID - text: "Liam" + text: "Declan" text_font: font_name text_color: 0xFFFFFF - bar: - id: progress_bar_liam + id: progress_bar_declan x: 14 y: 132 width: 144 @@ -1287,7 +1287,7 @@ lvgl: min_value: 0 max_value: 4 - label: - id: progress_label_liam + id: progress_label_declan x: 0 y: 156 width: 172 @@ -1296,7 +1296,7 @@ lvgl: text_font: font_small text_color: 0xDDEEFF - label: - id: all_done_label_liam + id: all_done_label_declan x: 0 y: 192 width: 172 @@ -1313,7 +1313,7 @@ lvgl: radius: 14 on_click: then: - - script.execute: reset_liam_chores + - script.execute: reset_declan_chores widgets: - label: align: CENTER @@ -1339,7 +1339,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_liam_make_bed + id: card_declan_make_bed x: 182 y: 10 width: 196 @@ -1353,10 +1353,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: liam_make_bed + - switch.toggle: declan_make_bed widgets: - label: - id: check_liam_make_bed + id: check_declan_make_bed align: TOP_RIGHT x: -10 y: 8 @@ -1375,7 +1375,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_liam_brush_teeth + id: card_declan_brush_teeth x: 388 y: 10 width: 196 @@ -1389,10 +1389,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: liam_brush_teeth + - switch.toggle: declan_brush_teeth widgets: - label: - id: check_liam_brush_teeth + id: check_declan_brush_teeth align: TOP_RIGHT x: -10 y: 8 @@ -1411,7 +1411,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_liam_set_table + id: card_declan_set_table x: 594 y: 10 width: 196 @@ -1425,10 +1425,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: liam_set_table + - switch.toggle: declan_set_table widgets: - label: - id: check_liam_set_table + id: check_declan_set_table align: TOP_RIGHT x: -10 y: 8 @@ -1447,7 +1447,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_liam_take_out_trash + id: card_declan_take_out_trash x: 182 y: 158 width: 196 @@ -1461,10 +1461,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: liam_take_out_trash + - switch.toggle: declan_take_out_trash widgets: - label: - id: check_liam_take_out_trash + id: check_declan_take_out_trash align: TOP_RIGHT x: -10 y: 8 @@ -1483,7 +1483,7 @@ lvgl: text_color: 0x2D3436 - - id: page_zoe + - id: page_chloe bg_color: 0xFFF9F0 widgets: @@ -1510,11 +1510,11 @@ lvgl: y: 76 width: 172 align: TOP_MID - text: "Zoe" + text: "Chloe" text_font: font_name text_color: 0xFFFFFF - bar: - id: progress_bar_zoe + id: progress_bar_chloe x: 14 y: 132 width: 144 @@ -1526,7 +1526,7 @@ lvgl: min_value: 0 max_value: 6 - label: - id: progress_label_zoe + id: progress_label_chloe x: 0 y: 156 width: 172 @@ -1535,7 +1535,7 @@ lvgl: text_font: font_small text_color: 0xDDEEFF - label: - id: all_done_label_zoe + id: all_done_label_chloe x: 0 y: 192 width: 172 @@ -1552,7 +1552,7 @@ lvgl: radius: 14 on_click: then: - - script.execute: reset_zoe_chores + - script.execute: reset_chloe_chores widgets: - label: align: CENTER @@ -1578,7 +1578,7 @@ lvgl: # ── Chore cards ─────────────────────────────────────────────────────── - button: - id: card_zoe_make_bed + id: card_chloe_make_bed x: 182 y: 10 width: 196 @@ -1592,10 +1592,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_make_bed + - switch.toggle: chloe_make_bed widgets: - label: - id: check_zoe_make_bed + id: check_chloe_make_bed align: TOP_RIGHT x: -10 y: 8 @@ -1614,7 +1614,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_zoe_brush_teeth + id: card_chloe_brush_teeth x: 388 y: 10 width: 196 @@ -1628,10 +1628,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_brush_teeth + - switch.toggle: chloe_brush_teeth widgets: - label: - id: check_zoe_brush_teeth + id: check_chloe_brush_teeth align: TOP_RIGHT x: -10 y: 8 @@ -1650,7 +1650,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_zoe_water_plants + id: card_chloe_water_plants x: 594 y: 10 width: 196 @@ -1664,10 +1664,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_water_plants + - switch.toggle: chloe_water_plants widgets: - label: - id: check_zoe_water_plants + id: check_chloe_water_plants align: TOP_RIGHT x: -10 y: 8 @@ -1686,7 +1686,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_zoe_homework + id: card_chloe_homework x: 182 y: 158 width: 196 @@ -1700,10 +1700,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_homework + - switch.toggle: chloe_homework widgets: - label: - id: check_zoe_homework + id: check_chloe_homework align: TOP_RIGHT x: -10 y: 8 @@ -1722,7 +1722,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_zoe_tidy_room + id: card_chloe_tidy_room x: 388 y: 158 width: 196 @@ -1736,10 +1736,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_tidy_room + - switch.toggle: chloe_tidy_room widgets: - label: - id: check_zoe_tidy_room + id: check_chloe_tidy_room align: TOP_RIGHT x: -10 y: 8 @@ -1758,7 +1758,7 @@ lvgl: text_color: 0x2D3436 - button: - id: card_zoe_practice_piano + id: card_chloe_practice_piano x: 594 y: 158 width: 196 @@ -1772,10 +1772,10 @@ lvgl: shadow_ofs_y: 3 on_click: then: - - switch.toggle: zoe_practice_piano + - switch.toggle: chloe_practice_piano widgets: - label: - id: check_zoe_practice_piano + id: check_chloe_practice_piano align: TOP_RIGHT x: -10 y: 8 diff --git a/esphome/chore-tracker/chore-tracker-dashboard.yaml b/esphome/chore-tracker/chore-tracker-dashboard.yaml index 5334e7e..2d6892f 100644 --- a/esphome/chore-tracker/chore-tracker-dashboard.yaml +++ b/esphome/chore-tracker/chore-tracker-dashboard.yaml @@ -1,6 +1,6 @@ ################################################################################ # chore-tracker-dashboard.yaml (AUTO-GENERATED — edit chores_config.yaml) -# Kids: Emma, Liam, Zoe +# Kids: Jordyn, Declan, Chloe ################################################################################ title: "Chore Tracker" @@ -13,26 +13,26 @@ views: cards: - type: markdown content: > - ### 󰇹 Emma + ### 󰇹 Jordyn {{ - 'All done!' if states('sensor.emma_all_chores_done') == 'True' - else states('sensor.emma_chores_done_today') ~ '/5 chores done' + 'All done!' if states('sensor.jordyn_all_chores_done') == 'True' + else states('sensor.jordyn_chores_done_today') ~ '/5 chores done' }} - type: markdown content: > - ### 󰲙 Liam + ### 󰲙 Declan {{ - 'All done!' if states('sensor.liam_all_chores_done') == 'True' - else states('sensor.liam_chores_done_today') ~ '/4 chores done' + 'All done!' if states('sensor.declan_all_chores_done') == 'True' + else states('sensor.declan_chores_done_today') ~ '/4 chores done' }} - type: markdown content: > - ### 󱞵 Zoe + ### 󱞵 Chloe {{ - 'All done!' if states('sensor.zoe_all_chores_done') == 'True' - else states('sensor.zoe_chores_done_today') ~ '/6 chores done' + 'All done!' if states('sensor.chloe_all_chores_done') == 'True' + else states('sensor.chloe_chores_done_today') ~ '/6 chores done' }} - type: button @@ -44,90 +44,90 @@ views: target: entity_id: input_button.reset_all_chores - type: entities - title: "󰇹 Emma's Chores" + title: "󰇹 Jordyn's Chores" entities: - - entity: switch.chore_tracker_emma_make_bed + - entity: switch.chore_tracker_jordyn_make_bed name: "󰋣 Make Bed" - - entity: switch.chore_tracker_emma_brush_teeth + - entity: switch.chore_tracker_jordyn_brush_teeth name: "󰦩 Brush Teeth" - - entity: switch.chore_tracker_emma_tidy_room + - entity: switch.chore_tracker_jordyn_tidy_room name: "󰂨 Tidy Room" - - entity: switch.chore_tracker_emma_homework + - entity: switch.chore_tracker_jordyn_homework name: "󰈙 Homework" - - entity: switch.chore_tracker_emma_feed_dog + - entity: switch.chore_tracker_jordyn_feed_dog name: "󰉥 Feed Dog" - type: divider - - entity: sensor.emma_chores_done_today + - entity: sensor.jordyn_chores_done_today name: "Chores done today" - - entity: sensor.emma_all_chores_done + - entity: sensor.jordyn_all_chores_done name: "All Done?" - type: button - name: "Reset Emma's Chores" + name: "Reset Jordyn's Chores" tap_action: action: call-service service: input_button.press target: - entity_id: input_button.emma_reset_chores + entity_id: input_button.jordyn_reset_chores - type: entities - title: "󰲙 Liam's Chores" + title: "󰲙 Declan's Chores" entities: - - entity: switch.chore_tracker_liam_make_bed + - entity: switch.chore_tracker_declan_make_bed name: "󰋣 Make Bed" - - entity: switch.chore_tracker_liam_brush_teeth + - entity: switch.chore_tracker_declan_brush_teeth name: "󰦩 Brush Teeth" - - entity: switch.chore_tracker_liam_set_table + - entity: switch.chore_tracker_declan_set_table name: "󰏧 Set Table" - - entity: switch.chore_tracker_liam_take_out_trash + - entity: switch.chore_tracker_declan_take_out_trash name: "󰖸 Take Out Trash" - type: divider - - entity: sensor.liam_chores_done_today + - entity: sensor.declan_chores_done_today name: "Chores done today" - - entity: sensor.liam_all_chores_done + - entity: sensor.declan_all_chores_done name: "All Done?" - type: button - name: "Reset Liam's Chores" + name: "Reset Declan's Chores" tap_action: action: call-service service: input_button.press target: - entity_id: input_button.liam_reset_chores + entity_id: input_button.declan_reset_chores - type: entities - title: "󱞵 Zoe's Chores" + title: "󱞵 Chloe's Chores" entities: - - entity: switch.chore_tracker_zoe_make_bed + - entity: switch.chore_tracker_chloe_make_bed name: "󰋣 Make Bed" - - entity: switch.chore_tracker_zoe_brush_teeth + - entity: switch.chore_tracker_chloe_brush_teeth name: "󰦩 Brush Teeth" - - entity: switch.chore_tracker_zoe_water_plants + - entity: switch.chore_tracker_chloe_water_plants name: "󱬥 Water Plants" - - entity: switch.chore_tracker_zoe_homework + - entity: switch.chore_tracker_chloe_homework name: "󰈙 Homework" - - entity: switch.chore_tracker_zoe_tidy_room + - entity: switch.chore_tracker_chloe_tidy_room name: "󰂨 Tidy Room" - - entity: switch.chore_tracker_zoe_practice_piano + - entity: switch.chore_tracker_chloe_practice_piano name: "󰾞 Practice Piano" - type: divider - - entity: sensor.zoe_chores_done_today + - entity: sensor.chloe_chores_done_today name: "Chores done today" - - entity: sensor.zoe_all_chores_done + - entity: sensor.chloe_all_chores_done name: "All Done?" - type: button - name: "Reset Zoe's Chores" + name: "Reset Chloe's Chores" tap_action: action: call-service service: input_button.press target: - entity_id: input_button.zoe_reset_chores + entity_id: input_button.chloe_reset_chores diff --git a/esphome/chore-tracker/chores_config.yaml b/esphome/chore-tracker/chores_config.yaml index 6dedf0b..e229541 100644 --- a/esphome/chore-tracker/chores_config.yaml +++ b/esphome/chore-tracker/chores_config.yaml @@ -39,8 +39,8 @@ settings: # color / color_dark: hex colours for that kid's sidebar # kids: - - name: Emma - avatar: "\U000F01F9" # mdi:dog + - name: Jordyn + avatar: "\U000F01F9" # mdi:cat color: "4D96FF" color_dark: "2A6FCC" chores: @@ -55,8 +55,8 @@ kids: - name: Feed Dog icon: "\U000F0265" # mdi:paw - - name: Liam - avatar: "\U000F0C99" # mdi:cat + - name: Declan + avatar: "\U000F0C99" # mdi:dog color: "C77DFF" color_dark: "8B42CC" chores: @@ -69,7 +69,7 @@ kids: - name: Take Out Trash icon: "\U000F05B8" # mdi:trash-can - - name: Zoe + - name: Chloe avatar: "\U000F17B5" # mdi:teddy-bear color: "FF6B9D" color_dark: "CC3A6F" diff --git a/packages/chore-tracker-ha.yaml b/packages/chore-tracker-ha.yaml index 2cde1f7..eefd123 100644 --- a/packages/chore-tracker-ha.yaml +++ b/packages/chore-tracker-ha.yaml @@ -1,6 +1,6 @@ ################################################################################ # chore-tracker-ha.yaml (AUTO-GENERATED — edit chores_config.yaml) -# Kids: Emma, Liam, Zoe +# Kids: Jordyn, Declan, Chloe # # BIDIRECTIONAL SYNC: # Screen to HA: Each switch calls homeassistant.service on toggle @@ -8,14 +8,14 @@ ################################################################################ input_button: - emma_reset_chores: - name: "Reset Emma's Chores" + jordyn_reset_chores: + name: "Reset Jordyn's Chores" icon: mdi:restart - liam_reset_chores: - name: "Reset Liam's Chores" + declan_reset_chores: + name: "Reset Declan's Chores" icon: mdi:restart - zoe_reset_chores: - name: "Reset Zoe's Chores" + chloe_reset_chores: + name: "Reset Chloe's Chores" icon: mdi:restart reset_all_chores: name: "Reset All Chores" @@ -23,112 +23,112 @@ input_button: template: - sensor: - - name: "Emma Chores Done Today" - unique_id: emma_chores_done_today + - name: "Jordyn Chores Done Today" + unique_id: jordyn_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_emma_make_bed'), states('switch.chore_tracker_emma_brush_teeth'), states('switch.chore_tracker_emma_tidy_room'), states('switch.chore_tracker_emma_homework'), states('switch.chore_tracker_emma_feed_dog')] %} + {% 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')] %} {{ chores | select('equalto', 'on') | list | count }} - - name: "Emma All Chores Done" - unique_id: emma_all_chores_done + - name: "Jordyn All Chores Done" + unique_id: jordyn_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.emma_chores_done_today') | int == 5 }} + {{ states('sensor.jordyn_chores_done_today') | int == 5 }} - - name: "Liam Chores Done Today" - unique_id: liam_chores_done_today + - name: "Declan Chores Done Today" + unique_id: declan_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_liam_make_bed'), states('switch.chore_tracker_liam_brush_teeth'), states('switch.chore_tracker_liam_set_table'), states('switch.chore_tracker_liam_take_out_trash')] %} + {% 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')] %} {{ chores | select('equalto', 'on') | list | count }} - - name: "Liam All Chores Done" - unique_id: liam_all_chores_done + - name: "Declan All Chores Done" + unique_id: declan_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.liam_chores_done_today') | int == 4 }} + {{ states('sensor.declan_chores_done_today') | int == 4 }} - - name: "Zoe Chores Done Today" - unique_id: zoe_chores_done_today + - name: "Chloe Chores Done Today" + unique_id: chloe_chores_done_today icon: mdi:check-circle state: > - {% set chores = [states('switch.chore_tracker_zoe_make_bed'), states('switch.chore_tracker_zoe_brush_teeth'), states('switch.chore_tracker_zoe_water_plants'), states('switch.chore_tracker_zoe_homework'), states('switch.chore_tracker_zoe_tidy_room'), states('switch.chore_tracker_zoe_practice_piano')] %} + {% 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')] %} {{ chores | select('equalto', 'on') | list | count }} - - name: "Zoe All Chores Done" - unique_id: zoe_all_chores_done + - name: "Chloe All Chores Done" + unique_id: chloe_all_chores_done icon: mdi:check-all state: > - {{ states('sensor.zoe_chores_done_today') | int == 6 }} + {{ states('sensor.chloe_chores_done_today') | int == 6 }} automation: - - id: emma_reset_from_ha - alias: "Chore Tracker - Reset Emma's chores from HA" + - id: jordyn_reset_from_ha + alias: "Chore Tracker - Reset Jordyn's chores from HA" trigger: - platform: state - entity_id: input_button.emma_reset_chores + entity_id: input_button.jordyn_reset_chores action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_make_bed + entity_id: switch.chore_tracker_jordyn_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_brush_teeth + entity_id: switch.chore_tracker_jordyn_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_tidy_room + entity_id: switch.chore_tracker_jordyn_tidy_room - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_homework + entity_id: switch.chore_tracker_jordyn_homework - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_feed_dog + entity_id: switch.chore_tracker_jordyn_feed_dog - - id: liam_reset_from_ha - alias: "Chore Tracker - Reset Liam's chores from HA" + - id: declan_reset_from_ha + alias: "Chore Tracker - Reset Declan's chores from HA" trigger: - platform: state - entity_id: input_button.liam_reset_chores + entity_id: input_button.declan_reset_chores action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_make_bed + entity_id: switch.chore_tracker_declan_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_brush_teeth + entity_id: switch.chore_tracker_declan_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_set_table + entity_id: switch.chore_tracker_declan_set_table - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_take_out_trash + entity_id: switch.chore_tracker_declan_take_out_trash - - id: zoe_reset_from_ha - alias: "Chore Tracker - Reset Zoe's chores from HA" + - id: chloe_reset_from_ha + alias: "Chore Tracker - Reset Chloe's chores from HA" trigger: - platform: state - entity_id: input_button.zoe_reset_chores + entity_id: input_button.chloe_reset_chores action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_make_bed + entity_id: switch.chore_tracker_chloe_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_brush_teeth + entity_id: switch.chore_tracker_chloe_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_water_plants + entity_id: switch.chore_tracker_chloe_water_plants - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_homework + entity_id: switch.chore_tracker_chloe_homework - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_tidy_room + entity_id: switch.chore_tracker_chloe_tidy_room - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_practice_piano + entity_id: switch.chore_tracker_chloe_practice_piano - id: reset_all_from_ha alias: "Chore Tracker - Reset ALL chores from HA" @@ -138,85 +138,85 @@ automation: action: - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_make_bed + entity_id: switch.chore_tracker_jordyn_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_brush_teeth + entity_id: switch.chore_tracker_jordyn_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_tidy_room + entity_id: switch.chore_tracker_jordyn_tidy_room - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_homework + entity_id: switch.chore_tracker_jordyn_homework - service: switch.turn_off target: - entity_id: switch.chore_tracker_emma_feed_dog + entity_id: switch.chore_tracker_jordyn_feed_dog - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_make_bed + entity_id: switch.chore_tracker_declan_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_brush_teeth + entity_id: switch.chore_tracker_declan_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_set_table + entity_id: switch.chore_tracker_declan_set_table - service: switch.turn_off target: - entity_id: switch.chore_tracker_liam_take_out_trash + entity_id: switch.chore_tracker_declan_take_out_trash - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_make_bed + entity_id: switch.chore_tracker_chloe_make_bed - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_brush_teeth + entity_id: switch.chore_tracker_chloe_brush_teeth - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_water_plants + entity_id: switch.chore_tracker_chloe_water_plants - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_homework + entity_id: switch.chore_tracker_chloe_homework - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_tidy_room + entity_id: switch.chore_tracker_chloe_tidy_room - service: switch.turn_off target: - entity_id: switch.chore_tracker_zoe_practice_piano + entity_id: switch.chore_tracker_chloe_practice_piano - - id: emma_all_done_notify - alias: "Chore Tracker - Emma all done!" + - id: jordyn_all_done_notify + alias: "Chore Tracker - Jordyn all done!" trigger: - platform: state - entity_id: sensor.emma_all_chores_done + entity_id: sensor.jordyn_all_chores_done to: "True" action: - service: notify.notify data: - title: "Emma finished all chores!" - message: "Emma completed all 5 chores today!" + title: "Jordyn finished all chores!" + message: "Jordyn completed all 5 chores today!" - - id: liam_all_done_notify - alias: "Chore Tracker - Liam all done!" + - id: declan_all_done_notify + alias: "Chore Tracker - Declan all done!" trigger: - platform: state - entity_id: sensor.liam_all_chores_done + entity_id: sensor.declan_all_chores_done to: "True" action: - service: notify.notify data: - title: "Liam finished all chores!" - message: "Liam completed all 4 chores today!" + title: "Declan finished all chores!" + message: "Declan completed all 4 chores today!" - - id: zoe_all_done_notify - alias: "Chore Tracker - Zoe all done!" + - id: chloe_all_done_notify + alias: "Chore Tracker - Chloe all done!" trigger: - platform: state - entity_id: sensor.zoe_all_chores_done + entity_id: sensor.chloe_all_chores_done to: "True" action: - service: notify.notify data: - title: "Zoe finished all chores!" - message: "Zoe completed all 6 chores today!" + title: "Chloe finished all chores!" + message: "Chloe completed all 6 chores today!" - id: chore_reminder_evening alias: "Chore Tracker - Evening reminder" @@ -226,33 +226,33 @@ automation: action: - if: condition: template - value_template: "{{ states('sensor.emma_all_chores_done') != 'True' }}" + value_template: "{{ states('sensor.jordyn_all_chores_done') != 'True' }}" then: - service: notify.notify data: - title: "Emma has unfinished chores" + title: "Jordyn has unfinished chores" message: > - Emma has done - {{ states('sensor.emma_chores_done_today') }}/5 chores today. + Jordyn has done + {{ states('sensor.jordyn_chores_done_today') }}/5 chores today. - if: condition: template - value_template: "{{ states('sensor.liam_all_chores_done') != 'True' }}" + value_template: "{{ states('sensor.declan_all_chores_done') != 'True' }}" then: - service: notify.notify data: - title: "Liam has unfinished chores" + title: "Declan has unfinished chores" message: > - Liam has done - {{ states('sensor.liam_chores_done_today') }}/4 chores today. + Declan has done + {{ states('sensor.declan_chores_done_today') }}/4 chores today. - if: condition: template - value_template: "{{ states('sensor.zoe_all_chores_done') != 'True' }}" + value_template: "{{ states('sensor.chloe_all_chores_done') != 'True' }}" then: - service: notify.notify data: - title: "Zoe has unfinished chores" + title: "Chloe has unfinished chores" message: > - Zoe has done - {{ states('sensor.zoe_chores_done_today') }}/6 chores today. + Chloe has done + {{ states('sensor.chloe_chores_done_today') }}/6 chores today.