Summary
When vacuum.clean_area is fired from Home Assistant, the robot ignores the HA-selected rooms and instead runs the first shortcut configured in the Narwal app (typically a 3-room set the user defined there).
Reported on PR #35 by @saeft2003:
"After restarting Home Assistant, regardless of which room I select in Home Assistant, a cleaning cycle for three rooms is always started. These three rooms are my first shortcut in the Narwal app."
— #35 (comment)
Also reproduced locally on Narwal Flow (AX12).
Root cause (hypothesis)
Same firmware schema change behind #36. _build_room_clean_payload() uses the legacy flat-room schema:
{1: <room_id>, 2: <cleanMode>, 3: <passes>, 6: <suction>, 7: <mop>}
On Flow firmware ≥ v01.07.22, the robot accepts the clean/plan/start topic but appears to silently discard this payload structure and fall back to the onboard default plan — which for most users is the first app shortcut.
The fix for #36 added _build_clean_payload_v2() for the nested-room schema observed in newer firmware and wired it into start() (whole-house). start_rooms() was not updated and still uses the legacy schema, so it hits the same problem.
Reproduction
- Flow on firmware v01.07.22+ (suspected — needs explicit version confirmation)
- Define a multi-room shortcut in the Narwal app (e.g. "Quick Clean: Kitchen + Living + Hall")
- In HA, call
vacuum.clean_area for a different single room
- Observe: robot starts cleaning the shortcut rooms, not the HA-selected room
Fix path
Mirror what #36 did for start() into start_rooms():
- Try legacy
_build_room_clean_payload(room_ids) first
- On
NOT_APPLICABLE, retry with _build_clean_payload_v2(room_ids)
- Add
force_v2 kwarg as escape hatch for firmwares that ack legacy with SUCCESS but still ignore the room list
Diagnostic info needed (if you're hitting this)
- Exact Flow firmware version (Narwal app → Device → Info)
- HA logs at info level for
custom_components.narwal.vacuum when triggering the room clean — look for the Room clean response: ... line
- Whether the robot returns
NOT_APPLICABLE or SUCCESS while ignoring the room list
Related
Summary
When
vacuum.clean_areais fired from Home Assistant, the robot ignores the HA-selected rooms and instead runs the first shortcut configured in the Narwal app (typically a 3-room set the user defined there).Reported on PR #35 by @saeft2003:
Also reproduced locally on Narwal Flow (AX12).
Root cause (hypothesis)
Same firmware schema change behind #36.
_build_room_clean_payload()uses the legacy flat-room schema:On Flow firmware ≥ v01.07.22, the robot accepts the
clean/plan/starttopic but appears to silently discard this payload structure and fall back to the onboard default plan — which for most users is the first app shortcut.The fix for #36 added
_build_clean_payload_v2()for the nested-room schema observed in newer firmware and wired it intostart()(whole-house).start_rooms()was not updated and still uses the legacy schema, so it hits the same problem.Reproduction
vacuum.clean_areafor a different single roomFix path
Mirror what #36 did for
start()intostart_rooms():_build_room_clean_payload(room_ids)firstNOT_APPLICABLE, retry with_build_clean_payload_v2(room_ids)force_v2kwarg as escape hatch for firmwares that ack legacy with SUCCESS but still ignore the room listDiagnostic info needed (if you're hitting this)
custom_components.narwal.vacuumwhen triggering the room clean — look for theRoom clean response: ...lineNOT_APPLICABLEorSUCCESSwhile ignoring the room listRelated
start_rooms()crash (different symptom: undock-then-error vs wrong-rooms)