feat(cleaning): add room-specific cleaning settings - #87
Conversation
857b74f to
f3d5c92
Compare
428ebf5 to
794df16
Compare
88f0efe to
f15a386
Compare
e189682 to
75fc7d3
Compare
|
One question before this and #88/#89 can land, and it may be good news. These three PRs cite runtime validation on a Freo X Ultra. Our own compatibility table says that model can't talk to this integration at all:
One of those two things is wrong, and I'd like to know which: What product key and firmware does your X Ultra report? The setup log line is Three possible outcomes, and two of them are interesting:
I'm not asking to be difficult. I cited your runtime evidence approvingly in earlier reviews, and I shouldn't have leaned on it that hard without reconciling it against our own compatibility data first — that's my error. But I can't merge changes whose stated validation contradicts the table we tell users to trust, and if outcome 1 is what's happening then that table needs fixing today. #86 is unaffected — it cites Flow 2 hardware, which is squarely supported. I have no other objections to it and it can go whenever you're ready. |
170f403 to
874fa93
Compare
c7705e8 to
a842cb6
Compare
Model Narwal room-clean parameters and task state in the client, and encode explicit room selections with their individual cleaning profiles. Keep the vendored client copy synchronized with the standalone package.
a842cb6 to
8a751f7
Compare
Track whole-floor and per-room cleaning profiles in coordinator data, retain user selections across updates, and expose task context needed by Home Assistant entities.
Register Home Assistant services for whole-floor and selected-room cleaning, validate their parameters, and route them through the coordinator's cleaning profile contract.
Expose whole-floor and per-room route, suction, water, mop, and cycle controls. Persist raw protocol values so unavailable startup states and future display-label changes do not alter the selected cleaning behavior.
34f59ee to
db66495
Compare
Make vacuum start honor selected rooms and their profiles while preserving native whole-floor behavior when no rooms are selected.
db66495 to
cb78d7c
Compare
Per-room cleaning profiles (#87), state-aware vacuum features and attributes (#88), native map trails (#89, closes #75), app-matching suction labels (#91), dock task switches (#86), product-prefix preservation (#85), diagnostics dump, product-key aliases (#81) and the bare get_map ack fix (#93). Two breaking changes, documented first in the notes: the current_room sensor moves onto the vacuum entity, and the suction tiers are renamed to the Narwal app's labels with the old names still accepted. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLhr2iHzsVosRX5w2eD6e1
… registry Per-room profiles (#87) put 168 entities on a 24-room install. This emits Lovelace YAML that shows one room at a time behind an input_select, a Whole-house panel for the global defaults, a script that cleans a single room with its own profile, and a dock-tasks grid. Driven by the registry because entity_ids are minted from room names at first registration and never change, while unique_ids carry the stable map/room key. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLhr2iHzsVosRX5w2eD6e1
Summary
vacuum.startclean selected rooms, falling back to all known rooms and their individual profilesnarwal.clean_roomsandvacuum.clean_segmentscommand surfaces that do not depend on UI selectionWhy
Room cleaning needs a complete
CleanParampayload, not just a room id. Narwal uses task type 6 for custom jobs containing different per-room modes; uniform jobs retain their normal work-mode task type. This preserves each room's configured behavior instead of flattening a mixed floor into one global mode. Untouched room fields follow the global profile until the user explicitly configures them.Structured restore data stores protocol enum values rather than visible labels. That keeps unavailable startup states and later presentation-only label changes from altering the cleaning behavior that Home Assistant restores.
Commit layout
Runtime validation
On Flow 2 hardware running v01.09.09.05, native
vacuum.startaccepted one seven-room task containing five vacuum-only rooms and two vacuum-and-mop rooms. The robot reported task type 6 and retained each room's requested mode, suction, route, and two-pass setting. Home Assistant reported the active room and progress, including after a restart during the job.A separate restart while every room profile and selection entity was unavailable retained the explicit Bathroom profile and the one-room selection through structured restore data; all values returned unchanged after the robot was stopped and docked.
Stack
#85 and #86 are already merged. This branch contains the five room-settings commits ending at
a00e31c.