Skip to content

Commit 84f85e4

Browse files
committed
fix: make room name always room num and not unknown
1 parent 952d2e2 commit 84f85e4

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

roborock/devices/traits/v1/home.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,22 +120,23 @@ async def _refresh_map_info(self, map_info) -> CombinedMapInfo:
120120

121121
rooms: dict[int, NamedRoomMapping] = {}
122122
if map_info.rooms:
123-
# Not all vacuums resopnd with rooms inside map_info.
123+
# Not all vacuums respond with rooms inside map_info.
124+
# If we can determine if all vacuums will return everything with get_rooms, we could remove this step.
124125
for room in map_info.rooms:
125126
if room.id is not None and room.iot_name_id is not None:
126127
rooms[room.id] = NamedRoomMapping(
127128
segment_id=room.id,
128129
iot_id=room.iot_name_id,
129-
name=room.iot_name or "Unknown",
130+
name=room.iot_name or f"Room {room.id}",
130131
)
131132

132133
# Add rooms from rooms_trait.
133-
# Keep existing names from map_info unless they are unknown.
134+
# Keep existing names from map_info unless they are fallback names.
134135
if self._rooms_trait.rooms:
135136
for room in self._rooms_trait.rooms:
136137
if room.segment_id is not None and room.name:
137138
existing_room = rooms.get(room.segment_id)
138-
if existing_room is None or existing_room.name == "Unknown":
139+
if existing_room is None or existing_room.name == f"Room {room.segment_id}":
139140
rooms[room.segment_id] = room
140141

141142
return CombinedMapInfo(

tests/devices/traits/v1/test_home.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,7 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
633633
This test verifies:
634634
1. Existing map_info room names are preserved.
635635
2. Missing rooms from RoomsTrait are added.
636+
3. map_info fallback names are replaced by RoomsTrait names.
636637
"""
637638
map_info = MultiMapsListMapInfo(
638639
map_flag=0,
@@ -648,6 +649,11 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
648649
iot_name_id="2362042",
649650
iot_name="Bedroom from map_info",
650651
),
652+
MultiMapsListRoom(
653+
id=20,
654+
iot_name_id="9999001",
655+
iot_name=None,
656+
),
651657
],
652658
)
653659

@@ -656,13 +662,15 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
656662
# - segment_id 19 with valid name: exists in map_info, should NOT override
657663
# - segment_id 17 with fallback name: not in map_info, should be added
658664
# - segment_id 18 with valid name: not in map_info, should be added
665+
# - segment_id 20 with valid name: overrides map_info fallback "Room 20"
659666
rooms_trait.rooms = [
660667
NamedRoomMapping(segment_id=16, iot_id="2362048", name="Room 16"), # Exists in map_info, should not override
661668
NamedRoomMapping(
662669
segment_id=19, iot_id="2362042", name="Updated Bedroom Name"
663670
), # Exists in map_info, should not override
664671
NamedRoomMapping(segment_id=17, iot_id="2362044", name="Room 17"), # Not in map_info, should be added
665672
NamedRoomMapping(segment_id=18, iot_id="2362041", name="Example room 3"), # Not in map_info, should be added
673+
NamedRoomMapping(segment_id=20, iot_id="9999001", name="Office from rooms_trait"),
666674
]
667675

668676
# Mock rooms_trait.refresh to prevent actual device calls
@@ -671,17 +679,17 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
671679

672680
assert result.map_flag == 0
673681
assert result.name == "Test Map"
674-
assert len(result.rooms) == 4
682+
assert len(result.rooms) == 5
675683

676684
# Sort rooms by segment_id for consistent assertions
677685
sorted_rooms = sorted(result.rooms, key=lambda r: r.segment_id)
678686

679-
# Room 16: from map_info, kept (not overridden by Unknown)
687+
# Room 16: from map_info, kept (not overridden by rooms_trait fallback)
680688
assert sorted_rooms[0].segment_id == 16
681689
assert sorted_rooms[0].name == "Kitchen from map_info"
682690
assert sorted_rooms[0].iot_id == "2362048"
683691

684-
# Room 17: from rooms_trait with "Unknown", falls back to "Room 17"
692+
# Room 17: from rooms_trait with fallback name, added because not in map_info
685693
assert sorted_rooms[1].segment_id == 17
686694
assert sorted_rooms[1].name == "Room 17"
687695
assert sorted_rooms[1].iot_id == "2362044"
@@ -695,3 +703,8 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
695703
assert sorted_rooms[3].segment_id == 19
696704
assert sorted_rooms[3].name == "Bedroom from map_info"
697705
assert sorted_rooms[3].iot_id == "2362042"
706+
707+
# Room 20: map_info fallback name replaced by rooms_trait name
708+
assert sorted_rooms[4].segment_id == 20
709+
assert sorted_rooms[4].name == "Office from rooms_trait"
710+
assert sorted_rooms[4].iot_id == "9999001"

0 commit comments

Comments
 (0)