[BETA-TESTERS] KidsChores – Family Chore Management Integration 🏡

logo

Hello Everyone,

I’m thrilled to give you a sneak peek of KidsChores, a brand-new integration that I am developing to help your family managing chores, rewards, and responsibilities right from Home Assistant.

Whether you’re aiming to teach your kids responsibility or simply streamline household tasks, KidsChores is here to make it effortless and fun!

:star2: KidsChores Features:

  • :girl::boy: Manage Multiple Kids Effortlessly

    • Create and customize profiles for each child.
    • Track individual progress and achievements.
    • Manage multiple kids with ease.
  • :broom: Assign & Track Chores:

    • Define chores with detailed descriptions, icons, and due dates.
    • Assign tasks to one or multiple kids and monitor completion status.
    • Track the status of each chore (pending, claimed, approved, overdue…) with sensors for each chore and kid.
  • :medal_sports: Award Badges & Rewards:

    • Set up badges based on chore completion milestones.
    • Automatically assign the badges when milestones are achieved.
    • Allow kids to redeem rewards using their earned points, motivating them to stay engaged.
    • Reward your kids with badges and incentives.
    • Assign points multipliers for each badge, if you prefer, so Kids may increase their points tally.
  • :balance_scale: Apply Penalties When Needed:

    • Implement penalties for missed chores to encourage accountability.
    • Automatically adjust points based on performance.Maintain accountability with penalties.
  • :arrows_counterclockwise: Recurring Chores:

    • Schedule chores to recur daily, weekly, or monthly.
  • :lock: Parents’ Approval Workflows:

    • Chores Approval: Kids can claim chores, which then require parental approval before points are awarded.
    • Rewards Approval: Parents can review and approve reward redemptions to ensure fair usage.
  • :chart_with_upwards_trend: Long-Term Statistics with Built-In Storage:

    • Track historical data on chore completions, points earned, and rewards redeemed.
    • Analyze trends and patterns to better understand your kids’ progress over time.
  • :hammer_and_wrench: Customizable Points Naming:

    • Personalize the points system by choosing your own naming conventions (e.g., Stars, Bucks, Coins) to make it more relatable and motivating for your kids.
    • Choose your own icon to the points
  • :art: User-Friendly:

    • :wrench: Easy Setup: UI Setup, with a step by step Wizard, and several menu options for UI configuration once integration is setup.
    • :hammer_and_wrench: Easy Maintenance: UI Configuration, with several sections to manage your integration and entries, making it easy to add, edit or delete any data.
  • :globe_with_meridians: Multilingual Support
    Currently supporting:

    • English
    • Spanish

:camera_flash: Stay Tuned for More!

  • I am trying to finish the integration to a beta release during the upcoming week.
  • Can’t wait to share it with you all. Keep an eye out for the release.
  • Currently in Beta Testing phase. Sign up to test it!

:loudspeaker: Community Feedback:

  • Share your thoughts and feature requests to help shape KidsChores into the perfect family management tool.

Thank you all.

Cheers :beers:

14 Likes

Empty post for updates

Hi everyone,

I have almost finished this integration to a state where it can be beta tested with a Release Candidate.

If you would like to do a test drive a help me figuring out issues, improvement areas and many other aspects, I would appreciate that you share your interest on this post.

Important before applying:
Please keep in mind that for beta-testing you would be required to:

  • Provide feedback
  • Understand how to obtain integration logs
  • Be willing to may loose some of the integration data in the future, before moving into a production state.

Any question, please let me know.

Cheers :beers:

Buy Me A Coffee

I would be interested to test this out. How couls i get started?

Hi @alrassia

Thanks for the interest. I hope I can give you some details within the upcoming days.

I was just trying the whole thing on my production instance and found an issue with the update of options, whenever an user wants to add or modify data. This leads to a big issue, where only initial data is handled between restarts.

Let me fix this first and I will let you have the details for the Beta RC.

Cheers,

I’m interested in this as well!

Same here. Integration sounds nice.

Hi @alrassia , @Mtnpilot & @pdsccode

Thank you all for the interest. Sent you all a PM with details on the integration and where to get it.

Cheers

I’m interested as well.

1 Like

Done :+1:

Sent you the details on a PM.

Interested here too, I was just looking over the holidays on creating something DiY

1 Like

I’m interested to. My wife and I were looking for something like this, but in analog - so why not doing it digital :wink:

Hi everyone,

For those who may want a sneak-peak into the integration, I just finished preparing a dashboard with auto-entities and mushroom card, so every change is automatically recorded, new entities added and so on:

This is just a sample, as there are many sensors available that you may personalize everything to your liking. In my case this works just well, as my kids still do not have an HA account and I will do the claiming (with direct approval) for them.

This looks amazing! Can’t wait to try it out!

Can you provide the config you used with auto-entities to get that set up?

Count me in.

Sure.

Here is the full configuration that I am using for one of the kids, including the summary, chore status, chore approval, rewards approval, penalties and manual points.

All of this is inside one section of a Sections dashboard:

type: grid
cards:
  - type: heading
    heading: KID_NAME
    heading_style: title
  - type: entity
    entity: sensor.kid_name_faros
    unit: Faros
    name: KID_NAME
  - type: custom:mushroom-entity-card
    entity: sensor.kid_name_highest_badge
    layout: vertical
    primary_info: state
    secondary_info: none
    fill_container: false
  - type: tile
    entity: sensor.kid_name_total_chores_completed
    name: Total Chores Completed
  - type: tile
    entity: sensor.kid_name_chores_completed_today
    name: Chores Completed Today
  - type: custom:mini-graph-card
    name: KID_NAME
    entities:
      - entity: sensor.kid_name_faros
    hours_to_show: 168
    group_by: date
    smoothing: false
    show:
      state: false
      name: false
      icon: false
  - type: heading
    heading: Chore Status
    heading_style: title
  - type: custom:auto-entities
    card:
      square: false
      type: grid
      columns: 2
    card_param: cards
    filter:
      template: |-
        {% for state in states.sensor -%}
          {%- if state.entity_id | regex_match("sensor.kid_name_status_", ignorecase=False) -%}
            {{
              {
                'type': 'custom:mushroom-template-card',
                'entity': state.entity_id,
                'primary': state.attributes.friendly_name.split('Kid Name - Status - ')[1],
                'secondary': (
                  'Approved' if state.state == 'approved' else
                  'Claimed' if state.state == 'claimed' else
                  'Pending' if state.state == 'pending' else
                  'Partial' if state.state == 'partial' else
                  'Pending'
                ),
                'icon': state.attributes.icon,
                'icon_color': (
                  'green' if state.state == 'approved' else
                  'orange' if state.state == 'claimed' else
                  'grey' if state.state == 'pending' else
                  'yellow' if state.state == 'partial' else
                  'grey'
                ),
                'tap_action': {
                  'action': 'more-info'
                }
              }
            }},
          {%- endif -%}
        {%- endfor %}
      exclude: []
    sort:
      method: friendly_name
  - type: heading
    icon: ""
    heading: Approve Chores
    heading_style: title
  - type: custom:auto-entities
    card:
      square: false
      type: grid
      columns: 2
    card_param: cards
    filter:
      template: |-
        {% for state in states.button -%}
          {%- if state.entity_id | regex_match("^button\.kid_name_approve_chore.*$", ignorecase=False) -%}
            {%- set sensor_suffix = state.entity_id.split('button.kid_name_approve_chore_')[1] -%}
            {%- set sensor_id = 'sensor.kid_name_status_' + sensor_suffix -%}
            {%- if state.state == 'unknown' -%}
              {%- set secondary = 'Unknown' -%}
            {%- else -%}
              {%- set delta = now().timestamp() - as_timestamp(state.state) -%}
              {%- if delta < 3600 -%}
                {%- set secondary = '%.0f minutes ago' % (delta / 60) -%}
              {%- elif delta < 86400 -%}
                {%- set secondary = '%.0f hours ago' % (delta / 3600) -%}
              {%- else -%}
                {%- set secondary = '%.0f days ago' % (delta / 86400) -%}
              {%- endif -%}
            {%- endif -%}
            {{
              {
                'type': 'custom:mushroom-template-card',
                'entity': state.entity_id,
                'primary': state.attributes.friendly_name.split('Kid Name - Approve Chore: ')[1],
                'secondary': secondary,
                'icon': state.attributes.icon,
                'icon_color': (
                  'green' if states('sensor.kid_name_status_' + sensor_suffix) == 'approved' else
                  'yellow' if states('sensor.kid_name_status_' + sensor_suffix) == 'partial' else
                  'orange' if states('sensor.kid_name_status_' + sensor_suffix) == 'claimed' else
                  'grey'
                ),
                'tap_action': {
                  'action': 'more-info'
                },
                'hold_action': {
                  'action': 'toggle'
                }
              }
            }},
          {%- endif -%}
        {%- endfor %}
    sort:
      method: friendly_name
  - type: heading
    icon: ""
    heading: Approve Rewards
    heading_style: title
  - type: custom:auto-entities
    card:
      square: false
      type: grid
      columns: 2
    card_param: cards
    filter:
      template: |-
        {% for state in states.button -%}
          {%- if state.entity_id | regex_match("^button\.kid_name_approve_reward.*$", ignorecase=False) -%}
            {{
              {
                'type': 'custom:mushroom-template-card',
                'entity': state.entity_id,
                'primary': state.attributes.friendly_name.split('Kid Name - Approve Reward: ')[1],
                'icon': state.attributes.icon,
                'icon_color': 'blue',
                'tap_action': {
                  'action': 'more-info'
                },
                'hold_action': {
                  'action': 'toggle'
                }
              }
            }},
          {%- endif -%}
        {%- endfor %}
    sort:
      method: friendly_name
  - type: heading
    icon: ""
    heading: Penalties
    heading_style: title
  - type: custom:auto-entities
    card:
      square: false
      type: grid
      columns: 2
    card_param: cards
    filter:
      template: |-
        {% for state in states.button -%}
          {%- if state.entity_id | regex_match("^button\.kid_name_apply_penalty.*$", ignorecase=False) -%}
            {{
              {
                'type': 'custom:mushroom-template-card',
                'entity': state.entity_id,
                'primary': state.attributes.friendly_name.split('Kid Name - Apply Penalty: ')[1],
                'icon': state.attributes.icon,
                'icon_color': 'blue',
                'tap_action': {
                  'action': 'toggle'
                },
                'hold_action': {
                  'action': 'more-info'
                }
              }
            }},
          {%- endif -%}
        {%- endfor %}
    sort:
      method: friendly_name
  - type: heading
    icon: ""
    heading: Manual Points
    heading_style: title
  - type: custom:auto-entities
    card:
      square: false
      type: grid
      columns: 2
    card_param: cards
    filter:
      template: |-
        {% for state in states.button -%}
          {%- if state.entity_id | regex_match("^button\.kid_name_\d+_faros(?:_\d+)?$", ignorecase=False) -%}
            {{
              {
                'type': 'custom:mushroom-template-card',
                'entity': state.entity_id,
                'primary': state.attributes.friendly_name.split('Kid Name ')[1],
                'icon': state.attributes.icon,
                'icon_color': 'blue',
                'tap_action': {
                  'action': 'toggle'
                },
                'hold_action': {
                  'action': 'more-info'
                }
              }
            }},
          {%- endif -%}
        {%- endfor %}
    sort:
      method: domain
      numeric: true
      ignore_case: false
      reverse: false

You just need to replace kid_name_ and Kid Name with the details from your Kid name and faros with you current points name on the integration, so the sensors/entities can directly match the templates!

Hope it helps

i’m very interested in helping out test this, it looks amazing

Hi,

Latest requires for beta-testing got the information sent.

My plan is to release this in the next 2 weeks, so if in the meanwhile some of you find something, please let me know at the earliest.

Cheers

Hi everyone,

@OptimusGREEN @alrassia @Mtnpilot @pdsccode @ccpk1 @marcelo002 @ptC7H12 @jmb123

So I just made a new beta release.

You should have it available on HACS already. If you have any issues while trying to update (for me, HACS was not showing the update button), just hit redownload from HACS and select version 0.1.1-beta-rc2.

Cheers

2 Likes