Summary
The working_status broadcast includes a room_id field (field 6) that tracks which room the robot is actively cleaning. This field changes in real time as the robot moves between rooms, and it is what the Narwal app uses to display the current room. The integration currently receives this value but does not expose it as a sensor.
Evidence
Captured from a Narwal Flow 2 (firmware v01.07.16.01) during a live cleaning run — 177 messages over 60 seconds:
- Capture 1 (45% progress):
working_status field 6 = 4 → confirmed Corridor
- Capture 2 (64% progress):
working_status field 6 = 1 → confirmed Living Room
The value changes as the robot moves between rooms, matching exactly what the Narwal app displays.
Correction from original issue description: Field 12 in display_map is not the active room list — it contains room boundary polylines (per-room path data with cleaning zone metadata). The current room is exclusively in working_status field 6.
Implementation
- Parse field 6 from
working_status in coordinator.py and store as current_room_id: int | None on NarwalState
- Look up the room name using the room map returned by
get_map (room ID → name already available)
- Expose as a
SensorEntity in sensor.py with string value (e.g. "Living Room", "Bathroom 1")
Related
The working_status field 5 (room job list) is a separate structure — it contains all rooms scheduled for the current cleaning job with per-room completion flags. That is distinct from field 6, which tracks current physical location only.
Tested on
Summary
The
working_statusbroadcast includes aroom_idfield (field 6) that tracks which room the robot is actively cleaning. This field changes in real time as the robot moves between rooms, and it is what the Narwal app uses to display the current room. The integration currently receives this value but does not expose it as a sensor.Evidence
Captured from a Narwal Flow 2 (firmware v01.07.16.01) during a live cleaning run — 177 messages over 60 seconds:
working_statusfield 6 =4→ confirmed Corridorworking_statusfield 6 =1→ confirmed Living RoomThe value changes as the robot moves between rooms, matching exactly what the Narwal app displays.
Implementation
working_statusincoordinator.pyand store ascurrent_room_id: int | NoneonNarwalStateget_map(room ID → name already available)SensorEntityinsensor.pywith string value (e.g."Living Room","Bathroom 1")Related
The
working_statusfield 5 (room job list) is a separate structure — it contains all rooms scheduled for the current cleaning job with per-room completion flags. That is distinct from field 6, which tracks current physical location only.Tested on
QxMSPG6VSO, firmware v01.07.16.01, added in PR Add Narwal Flow 2 support (product key QxMSPG6VSO) #20)