v3.4.3
Roomba+ v3.4.3 — Fleet Health, Gentle Mode, and Three New Blueprints
3,937 tests passing (+59 since v3.4.2) · Config Entry version 25 (no migration needed) · HACS: update as usual
Originally planned as v3.5.0 ("Fleet, Braava & Notifications"). Renamed during implementation: once the notification-blueprint core had already shipped in v3.4.2 and a few other planned items turned out to be either already covered or not ready, what remained was patch-sized, not a dedicated theme release.
✨ New
Fleet health at a glance
The household REST endpoint (GET /api/roomba_plus/household) now includes a fleet_health summary and, per robot, health_trend, battery_capacity_retention_pct, maintenance_due, and needs_attention. If you have more than one robot, you can now see which ones need attention without checking each one individually — no new entities, just richer data on an endpoint that already existed.
Gentle Mode
switch.*_gentle_mode — confirmed present across multiple i7 firmware generations, never previously exposed. Same simple on/off shape as the existing Eco Charge and Edge Clean switches; only appears for robots that actually report the capability.
Three more automation blueprints
Alongside the notification blueprint from v3.4.2:
- Demand clean alert — notifies you when your robot starts cleaning on its own, triggered by the built-in dirt-sensor threshold rather than your schedule or a manual start.
- Vacuum then mop — for two-robot households: starts a Braava mop automatically once a Roomba vacuum finishes, with a configurable delay and a choice of which mission results should trigger it.
- Smart start on away — starts cleaning when everyone leaves, either immediately or timed so cleaning is likely finished before you return.
See Automations → Three more blueprints for import links and setup.
🛠 Fixed
A demand-triggered clean looked identical to "no trigger info at all"
sensor.*_job_initiator shows what started the current mission, translated through a small lookup table. That table had no entry for "demand" — a mission started by the dirt-sensor threshold silently fell through to the same "None" shown when there's no initiator information whatsoever. Found while building the Demand Clean Alert blueprint above, which needs this sensor to actually distinguish the two. Now shows "Demand clean".
🔍 Under the hood
MaintenanceStoregained adue_items()method, extracted frombinary_sensor.py's maintenance-due check — the same threshold/mop-vs-vacuum logic, now shared instead of duplicated, so the new fleet-health rollup didn't need a second copy of it.- Fixed a real circular import surfaced while wiring the fleet-health rollup into the household endpoint:
api_views.pyis loaded eagerly during the integration's own startup (unlike platform modules such asswitch.py, which Home Assistant loads afterward), so a module-level import of a helper from__init__.pydoesn't work there the way it does elsewhere. Resolved with a function-local import. - The household endpoint had no dedicated tests before this release — the existing test class exercised the same aggregation math as a standalone snippet copied into the test file, never the actual endpoint code. Replaced with tests that call the real endpoint end to end.