08 — Maintenance¶
The Maintenance tab gives you a single place to see the health of all consumable parts on your vacuum. It separates items into two categories — maintenance items managed by the integration and replacement items reported directly by the device — and flags anything that needs your attention.
Overview panels¶
At the top of the tab, two summary panels give you a quick read on overall health.
Maintenance Overview shows:
- Attention — how many items are currently flagged for service
- Priority — the highest-priority status across all items
- Items — the total number of integration-managed maintenance items
- Water — the current station water reservoir level
If your vacuum model is known to the integration, the model name, the dock firmware version (when the device reports it), and the time the snapshot was last updated appear beneath the panel title.
Roborock (S6): Water stat
The Water stat is only meaningful on vacuums that have a base-station water reservoir. On no-station models (such as the Roborock S6) there is nothing to report, so it reads Unknown or Empty.
On vacuums that report lifetime usage totals (newer Eufy models on the robovac_mqtt v1.11.0+ integration), a second Lifetime row appears under the stats:
- Total cleaned — the area the robot has cleaned over its lifetime (m²)
- Total time — the total time it has spent cleaning (shown in hours)
- Cleans — the number of cleaning jobs it has run
This row, and the dock firmware line above, are simply hidden on devices that don't report those values.
Replacement Overview shows:
- Items — the total number of replacement items reported by the device
- Attention — how many replacement items need attention
- Healthy — how many replacement items are not flagged
- Status — "Tracked" if at least one replacement item exists, otherwise "Empty"
Needs Attention¶
The Needs Attention section lists every item from either category that is currently flagged. An item appears here if any of the following is true:
- its status is
warning,replace_soon, orreplace_now - it is marked overdue or due
- its remaining life is 20% or less
Clicking any item in this list opens the item detail modal (see below).
Maintenance Items and Replacements tabs¶
Below the attention list, a tab row lets you switch between Maintenance Items (integration-managed intervals, such as filter cleaning or brush cleaning cycles) and Replacements (parts the device itself tracks, such as brushes, filters, and sensors).
Each item is shown as a card displaying:
- The item name
- Its current status (for example, "Good", "Warning", "Replace Soon", "Replace Now")
- A primary value — either a summary from the backend, a percentage remaining, or an hours-remaining figure
- A secondary value — either a usage summary, "N hours used of M hours" for replacements, or "N hours left of M hours" for maintenance items
- A "Due in ~N days / weeks / months" projection pill (maintenance items only) — appears once enough history has built up since the last reset (at least three days at non-trivial daily usage). Calculated from your actual usage rate, not the manufacturer's interval. Hidden on freshly-reset items.
- A guide frequency note if the integration has model-specific guidance for this item
The card background fill reflects how much life remains, so you can see at a glance which items are running low.
Station Water card¶
At the end of the Maintenance Items list, the Station Water card shows the current water level in the base station reservoir. The level can be a numeric percentage or a text label (such as "Low" or "Full"). A numeric level maps to four status levels:
| Condition | Status |
|---|---|
| 70% or above | High |
| 35–69% | Medium |
| 1–34% | Low |
| 0% | Empty |
A text label maps onto only three of those buckets — Full/High/Good/Ok/Normal reads as High, Medium/Mid reads as Medium, and Low/Empty/None all read as Low (there is no text route to Empty — only a literal 0% gets that status). Any other text reads as Unknown. For a text level, the status word shown next to the fill is your device's own label when it sent one; otherwise it falls back to a generic status name for that bucket, which for the Low bucket reads "Replace Soon" rather than "Low". A numeric level always shows the generic High/Medium/Low/Empty word for its bucket.
If the integration has calculated an available clean tank volume, the card also shows that figure in millilitres.
Roborock (S6): Station Water card
This card only reflects a real level on vacuums with a base-station water reservoir. On no-station models (such as the Roborock S6) there is no reservoir to read, so the card stays at Unknown or Empty.
Which panels you see¶
The panels you get are decided by your model, not your brand. Each model is typed by three measured facts — what kind of mop it takes, what its dock does, and how many tanks it has — and only the parts that follow from those appear. A robot with no washing station is not offered a Cleaning Tray; a vacuum-only model is not offered a mop.
So if an item you used to see is gone after an update, that is the gate working: your machine does not have that part. Its job has not disappeared — it is usually covered by one of the panels that remain.
If we don't recognise your model
A model we cannot place keeps every item the device itself reports a figure for, and drops the guide-only ones. That is deliberate: a reading your robot is actively publishing is real whatever the model turns out to be, while a guide-only item would be invented.
Choosing the counter your maintenance is measured against¶
Some parts count themselves — the device publishes a figure and we read it. Others do not: a mop cloth, a cleaning tray, the caster wheel. Those are measured against one running-time counter you choose, per vacuum.
At the top right of the Maintenance Items panel there is a link showing the counter in use. It is a warning colour until you pick one, and fades once set, naming your choice. Click it to open the picker.
The picker lists the running-time sensors on that vacuum with their current readings, and marks the one currently in use. Pick the one that measures how long the robot has run in total — not a per-job timer, which resets every clean. The two often differ by a single word in the name, which is why the picker shows the full entity id under each name.
Counters that only count one part
Some candidates are a single part's countdown rather than a whole-machine total. The picker marks these. They work, but they stop at zero: if that one part goes overdue and is not reset, the counter freezes and every item measured against it stops advancing too. A whole-machine running-time sensor is the safer choice.
Until a counter is picked, items that depend on one show a full bar that never moves — which is why the link is coloured to get your attention.
Item detail modal¶
Clicking any maintenance or replacement card opens a modal with full detail for that item.
The top section (the "hero" area) repeats the item's type, status, primary value, and secondary value in a larger format.
Below that:
- Steps — model-aware service instructions, shown as a numbered list. If the integration does not have steps for your model, the modal says so.
- Notes — any supplementary notes from the integration's guidance data.
- Interval — appears only on integration-managed maintenance items (not device-reported replacements). Lets you override how often the integration flags this component for service.
- Reset — appears only on items that support a reset action (
can_reset: true).
Adjusting the Interval¶
The Interval section shows the current maintenance interval (in hours) for the item along with the recommended default and the maximum allowed override. Every item has one, including the ones the manufacturer publishes no service life for — those carry a sensible starting point and a range rather than nothing, because the whole point is that you can set them. Enter a new value and click Save to persist it; click Default to put the manufacturer's recommended interval back into the input (you still need to click Save to commit).
Intervals are stored per vacuum per component and persist across restarts. The value is shared with the matching maintenance-interval number entity for that component (e.g. number.<vacuum>_<component>_maintenance_interval, with the exact id derived by Home Assistant from the device and component names), so changes made on the card show up on the entity (and the reverse). Editing the interval does not reset the counter — the new value takes effect immediately and the "remaining" figure recalculates from current usage.
Use this when the default cleaning frequency does not suit your environment — for example, lowering the filter interval in a pet household, or raising the brush interval if your floors stay clean enough that the default warning fires too soon.
Using the Reset action¶
When a Reset section is present, you will see a Reset button. Click it to enter a confirmation step. The modal shows a short description of what the reset will do:
- For integration-managed items: "This will reset the tracked maintenance interval for [item name]."
- For replacement items: "This will send the reset command to the device for [item name]."
Click Confirm Reset to proceed or Cancel to go back. While the reset is in progress the buttons are disabled and the Confirm button label changes to "Resetting...".
On success, the modal shows "Maintenance reset saved" (for integration items) or "Replacement reset sent" (for device items), and the card data refreshes automatically. On failure, an error message appears in red.