Skip to content

Room clean ignores HA selection, reverts to Narwal-app shortcut (newer firmware) #37

@sjmotew

Description

@sjmotew

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

  1. Flow on firmware v01.07.22+ (suspected — needs explicit version confirmation)
  2. Define a multi-room shortcut in the Narwal app (e.g. "Quick Clean: Kitchen + Living + Hall")
  3. In HA, call vacuum.clean_area for a different single room
  4. 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)

  1. Exact Flow firmware version (Narwal app → Device → Info)
  2. HA logs at info level for custom_components.narwal.vacuum when triggering the room clean — look for the Room clean response: ... line
  3. Whether the robot returns NOT_APPLICABLE or SUCCESS while ignoring the room list

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfirmware-regressionBehavior broke after a Narwal firmware update

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions