-
Notifications
You must be signed in to change notification settings - Fork 2
Visibility Configuration Guide
Dynamic visibility lets a chore show or hide itself based on the state of any Home Assistant entity. This guide walks through configuring it end to end.

-
Open the TaskMate panel
- Click TaskMate in the Home Assistant sidebar
-
Go to Chores
- Either + Add chore to create one, or click the ✏ button on an existing chore's row to edit it
-
Open the visibility settings
- In the chore dialog, expand Advanced — visibility & calendar publishing
- Set the three visibility fields (see below)
-
Save
- Save the chore; the change takes effect on the next refresh
-
Test
- Open a child card
- Verify the chore appears and disappears as the entity changes
Older versions of TaskMate configured chores through Settings → Devices & Services → TaskMate → Configure. That wizard is gone — everything is managed from the TaskMate panel now.
What it does: Specifies which Home Assistant entity controls the chore's visibility.
Examples of valid entity IDs:
binary_sensor.dishwashersensor.soil_moistureinput_boolean.guest_modeswitch.laundry_roomsensor.outdoor_temperaturenumber.threshold_value
How to find your entity ID:
- Go to Developer Tools > States
- Search for the entity you want
- Copy the entity ID from the left column
- Paste into the visibility field
Leaving it blank: If you leave this field empty, visibility filtering is disabled and the chore always shows. Setting the operator to None has the same effect, and is what a chore starts with.
What it does: Specifies the comparison operator to use.
Available operators:
| Operator | Best For | Example |
|---|---|---|
None |
The default. No visibility check — the chore always shows | — |
Equals |
String matching |
binary_sensor.door = open
|
Not Equal |
Inverse conditions |
input_boolean.guest_mode ≠ on
|
≥ (Greater or equal) |
Minimum numeric threshold |
sensor.battery ≥ 80
|
≤ (Less or equal) |
Maximum numeric threshold |
sensor.moisture ≤ 30
|
> (Greater than) |
Above numeric threshold |
sensor.temp > 20
|
< (Less than) |
Below numeric threshold |
sensor.temp < 0
|
How to choose:
-
Text values (
on,off,home,running): UseEqualsorNot Equal -
Numbers (percentages, temperature, counts): Use
≥,≤,>, or< -
Inverted logic (show when NOT condition): Use
Not Equal
What it does: Specifies the target value for the comparison.
For text operators (Equals, Not Equal):
- Enter any string value
- Examples:
on,off,home,away,running,idle - Must match the entity state exactly (case-insensitive)
For numeric operators (≥, ≤, >, <):
- Enter a number only
- Decimal values allowed:
22.5,10.25 - No units: use
30not30%or30°C
Finding the correct value:
- Go to Developer Tools > States
- Find your entity
- Look at the "state" column
- Copy the exact value
Examples:
Entity: binary_sensor.dishwasher
State in Developer Tools: "on"
Value to Compare: on
Entity: sensor.temperature
State in Developer Tools: 22.5
Value to Compare: 22.5
Entity: sensor.battery_percent
State in Developer Tools: 85
Value to Compare: 80 (if you want >= 80%)
Goal: Show "Fold Laundry" only when the dryer is running.
Setup:
-
Create/Edit Chore
- Name: "Fold Laundry"
- Points: 10
- Time Category: Anytime
- Expand Advanced — visibility & calendar publishing
-
Set Visibility
-
Show When Entity Is:
binary_sensor.dryer -
How to Compare:
Equals -
Value to Compare:
on
-
Show When Entity Is:
-
Result
- ✅ Shows when dryer IS running (
on) - ❌ Hides when dryer is off (
off)
- ✅ Shows when dryer IS running (
Why this works: Children can't fold laundry if it's not done drying yet.
Goal: Show "Water Plants" when soil moisture drops below 40%.
Setup:
-
Create/Edit Chore
- Name: "Water Plants"
- Points: 5
- Time Category: Morning
- Expand Advanced — visibility & calendar publishing
-
Set Visibility
-
Show When Entity Is:
sensor.soil_moisture -
How to Compare:
≤(Less than or equal) -
Value to Compare:
40
-
Show When Entity Is:
-
Result
- ✅ Shows when moisture is 40% or lower
- ❌ Hides when moisture is above 40%
Why this works: No need to water if the plant is already moist enough.
Goal: Show "Lunch Prep" only on school days using an input_boolean.
Setup:
-
Create the Helper (in Settings → Devices & Services → Helpers)
- Name: "School Day"
- Entity ID:
input_boolean.school_day - Create automation or manually toggle it
-
Create/Edit Chore
- Name: "Lunch Prep"
- Points: 3
- Time Category: Morning
- Expand Advanced — visibility & calendar publishing
-
Set Visibility
-
Show When Entity Is:
input_boolean.school_day -
How to Compare:
Equals -
Value to Compare:
on
-
Show When Entity Is:
-
Result
- ✅ Shows when
input_boolean.school_dayison - ❌ Hides when it's
off
- ✅ Shows when
Why this works: Parents can toggle the helper to control when lunch prep shows.
Goal: Show "Tidy Room" only when guests are NOT coming.
Setup:
-
Create/Edit Chore
- Name: "Tidy Room"
- Points: 8
- Time Category: Anytime
- Expand Advanced — visibility & calendar publishing
-
Set Visibility
-
Show When Entity Is:
input_boolean.guest_mode -
How to Compare:
Not Equal -
Value to Compare:
on
-
Show When Entity Is:
-
Result
- ✅ Shows when guest_mode is OFF (not "on")
- ❌ Hides when guest_mode is ON ("on")
Why this works: Kids can relax when guests aren't coming; when they are, they should clean instead.
Goal: Show "Yard Work" only when it's warm (≥ 20°C).
Setup:
-
Create/Edit Chore
- Name: "Yard Work"
- Points: 15
- Time Category: Afternoon
- Expand Advanced — visibility & calendar publishing
-
Set Visibility
-
Show When Entity Is:
sensor.outdoor_temperature -
How to Compare:
≥(Greater or equal) -
Value to Compare:
20
-
Show When Entity Is:
-
Result
- ✅ Shows when temperature is 20°C or warmer
- ❌ Hides when it's colder than 20°C
Why this works: Outdoor work is only reasonable in decent weather.
- Go to Developer Tools > States
- Search for your visibility entity
- Confirm it exists and has a current state
- If it shows "unavailable" or "unknown", fix the integration first
Manually toggle or change the entity state in Developer Tools and watch the child card:
- Developer Tools > States
- Find your visibility entity
- Click the entity row to expand it
- Click the "SET STATE" button (if available)
- Change to a state that should match your condition
- Watch the child card (updates within 30 seconds)
- Change back to a state that shouldn't match
- Verify the chore hides
After setting up visibility, your entity should appear with the correct state:
binary_sensor.dishwasher: on
sensor.soil_moisture: 35
input_boolean.guest_mode: off
sensor.temperature: 22.5
Battery percentage example:
- Entity:
sensor.battery_percent - State:
85 - To show when ≥ 80%: Enter
80
Temperature example:
- Entity:
sensor.temperature(in Celsius) - State:
22.5 - To show when ≥ 20°C: Enter
20
Humidity example:
- Entity:
sensor.humidity - State:
60 - To show when ≤ 70%: Enter
70
Decimal values are fully supported:
Entity: sensor.temperature
Operator: >
Value: 20.5
→ Shows when temperature is above 20.5°C
Negative comparisons work fine:
Entity: sensor.temperature
Operator: <
Value: 0
→ Shows when temperature is below freezing (< 0°C)
Problem: Typo in entity ID
Configured: binary_sensro.dishwasher (typo)
Should be: binary_sensor.dishwasher
Fix:
- Go to Developer Tools > States
- Copy the exact entity ID
- Paste it correctly
Problem: Entering units with the number
Configured: 30% (wrong)
Should be: 30
Fix: Enter only the number, no %, °C, or other units.
Problem: Assuming case matters
Entity state: "Home"
Configured value: "home" (different case)
Fix: Matching is case-insensitive, so both work fine.
Problem: Assuming a state that the entity never reports
Guessed: "running"
Actual state: "active"
Fix: Check Developer Tools → States for the value the entity actually
reports. Case does not matter — Running and running both match — but the
word itself has to be right.
Problem: Using > for text matching
Operator: > (Greater than)
State: "running"
Fix: Use Equals for text values.
Create several chores that share the same visibility condition:
Chores related to dishwasher (all visible when binary_sensor.dishwasher = on):
1. Load Dishwasher
2. Unload Dishwasher
3. Wipe Counters
Each chore can have the same visibility settings.
Use multiple input_booleans to create complex logic:
# In Home Assistant automation
- alias: Update chore conditions
triggers:
- platform: state
entity_id: input_boolean.guests_arriving
actions:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.room_cleaning_choresThen set chore visibility to the dependent helper.
Create time-based conditions using template sensors:
template:
- sensor:
- name: "Is School Day"
unique_id: is_school_day
state: >
{% if now().weekday() < 5 %}
on
{% else %}
off
{% endif %}Use sensor.is_school_day for visibility.
Checklist:
- ✓ Entity ID is correct (check Developer Tools > States)
- ✓ Entity state is available (not "unavailable")
- ✓ Comparison operator matches your intent
- ✓ Value matches the entity state exactly
- ✓ Waited 30 seconds for update cycle
- ✓ Reloaded the child card (refresh browser)
How to debug:
Go to Developer Tools > States
Find your visibility entity
Check the current state value
Manually verify it should match your condition
If not, the condition is set incorrectly
Checklist:
- ✓ Visibility Entity field is NOT empty
- ✓ Visibility State value is correct
- ✓ Entity actually exists in Home Assistant
- ✓ Entity is not in "unavailable" state
Note: If the entity does not exist at all (deleted, renamed, or a typo in the entity id) the chore defaults to visible, so a broken reference can never silently hide a family's chores.
An entity that exists but reports unavailable or unknown is different: that
is just a state string, and it is compared like any other. It will not match
on, so the chore hides. If an integration dropping offline should not hide
a chore, point the condition at something more stable — or use Not Equal so an
unexpected state leaves the chore showing.
Checklist:
- ✓ Entity state is numeric (no text/units)
- ✓ Using correct comparison operator (≥, ≤, >, <)
- ✓ Value is a valid number (not
30%or30°C) - ✓ Check exact value in Developer Tools > States
If the Value to Compare field starts with >=, <=, >, < or !=, that
prefix is used as the operator and overrides the dropdown. Setting the
operator to Equals and typing >=50 into the value gives you ≥ 50, not a
string match on the literal text >=50.
| Value typed | Behaves as |
|---|---|
>=10 |
Operator ≥, threshold 10
|
<20 |
Operator <, threshold 20
|
!=off |
Operator Not Equal, value off
|
This is handy for quick edits, and a trap if you did not expect it.
If the entity's state does not match, TaskMate then checks every attribute
value on that entity for a match. So a condition of home will also match an
entity whose state is something else but which carries an attribute equal to
home.
That makes some conditions work that otherwise look like they shouldn't — and it can also cause a surprise match. If you need a strict test, pick an entity whose state alone carries the meaning.
- Dynamic Chore Visibility — Feature overview
- Visibility Operators Reference — Detailed operator guide
- Home Assistant Developer Tools — Finding entities
- TaskMate GitHub Issues — Report bugs
- Getting Started — full TaskMate setup
- Dynamic Chore Visibility — Feature overview
- Visibility Operators Reference — Operator details