valetudo-map-parser 0.1.9a4__tar.gz → 0.1.9a6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/PKG-INFO +1 -1
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/rand25_handler.py +93 -11
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/pyproject.toml +1 -1
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/LICENSE +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/NOTICE.txt +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/README.md +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/__init__.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/__init__.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/auto_crop.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/color_utils.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/colors.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/drawable.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/drawable_elements.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/enhanced_drawable.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/optimized_element_map.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/rand25_parser.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/room_outline.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/shared.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/types.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/utils.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/hypfer_draw.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/hypfer_handler.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/hypfer_rooms_handler.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/map_data.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/py.typed +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/reimg_draw.py +0 -0
- {valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/rooms_handler.py +0 -0
@@ -97,10 +97,17 @@ class ReImageHandler(BaseHandler, AutoCrop):
|
|
97
97
|
|
98
98
|
# Update self.rooms_pos from room_properties for compatibility with other methods
|
99
99
|
self.rooms_pos = []
|
100
|
+
room_ids = [] # Collect room IDs for shared.map_rooms
|
100
101
|
for room_id, room_data in room_properties.items():
|
101
102
|
self.rooms_pos.append(
|
102
103
|
{"name": room_data["name"], "outline": room_data["outline"]}
|
103
104
|
)
|
105
|
+
# Store the room number (segment ID) for MQTT active zone mapping
|
106
|
+
room_ids.append(room_data["number"])
|
107
|
+
|
108
|
+
# Update shared.map_rooms with the room IDs for MQTT active zone mapping
|
109
|
+
self.shared.map_rooms = room_ids
|
110
|
+
_LOGGER.debug("Updated shared.map_rooms with room IDs: %s", room_ids)
|
104
111
|
|
105
112
|
# get the zones and points data
|
106
113
|
zone_properties = await self.async_zone_propriety(zones_data)
|
@@ -231,8 +238,8 @@ class ReImageHandler(BaseHandler, AutoCrop):
|
|
231
238
|
if not self.rooms_pos and not self.room_propriety:
|
232
239
|
self.room_propriety = await self.get_rooms_attributes(destinations)
|
233
240
|
|
234
|
-
# Always check robot position for zooming
|
235
|
-
if self.rooms_pos and robot_position:
|
241
|
+
# Always check robot position for zooming (fallback)
|
242
|
+
if self.rooms_pos and robot_position and not hasattr(self, 'robot_pos'):
|
236
243
|
self.robot_pos = await self.async_get_robot_in_room(
|
237
244
|
(robot_position[0] * 10),
|
238
245
|
(robot_position[1] * 10),
|
@@ -248,6 +255,68 @@ class ReImageHandler(BaseHandler, AutoCrop):
|
|
248
255
|
size_x, size_y, background_color
|
249
256
|
)
|
250
257
|
self.img_base_layer = await self.async_copy_array(img_np_array)
|
258
|
+
|
259
|
+
# Check active zones BEFORE auto-crop to enable proper zoom functionality
|
260
|
+
# This needs to run on every frame, not just frame 0
|
261
|
+
if (
|
262
|
+
self.shared.image_auto_zoom
|
263
|
+
and self.shared.vacuum_state == "cleaning"
|
264
|
+
and robot_position
|
265
|
+
and destinations # Check if we have destinations data for room extraction
|
266
|
+
):
|
267
|
+
_LOGGER.debug(
|
268
|
+
"%s: Attempting early room extraction for active zone checking",
|
269
|
+
self.file_name
|
270
|
+
)
|
271
|
+
# Extract room data early if we have destinations
|
272
|
+
try:
|
273
|
+
temp_room_properties = await self.rooms_handler.async_extract_room_properties(
|
274
|
+
m_json, destinations
|
275
|
+
)
|
276
|
+
if temp_room_properties:
|
277
|
+
# Create temporary rooms_pos for robot room detection
|
278
|
+
temp_rooms_pos = []
|
279
|
+
for room_id, room_data in temp_room_properties.items():
|
280
|
+
temp_rooms_pos.append(
|
281
|
+
{"name": room_data["name"], "outline": room_data["outline"]}
|
282
|
+
)
|
283
|
+
|
284
|
+
# Store original rooms_pos and temporarily use the new one
|
285
|
+
original_rooms_pos = self.rooms_pos
|
286
|
+
self.rooms_pos = temp_rooms_pos
|
287
|
+
|
288
|
+
# Perform robot room detection to check active zones
|
289
|
+
robot_room_result = await self.async_get_robot_in_room(
|
290
|
+
robot_position[0], robot_position[1], robot_position_angle
|
291
|
+
)
|
292
|
+
|
293
|
+
# Restore original rooms_pos
|
294
|
+
self.rooms_pos = original_rooms_pos
|
295
|
+
|
296
|
+
_LOGGER.debug(
|
297
|
+
"%s: Early robot room detection for zoom: robot in %s, zooming=%s",
|
298
|
+
self.file_name,
|
299
|
+
robot_room_result.get("in_room", "unknown"),
|
300
|
+
self.zooming
|
301
|
+
)
|
302
|
+
except Exception as e:
|
303
|
+
_LOGGER.debug(
|
304
|
+
"%s: Early room extraction failed: %s, falling back to robot-position zoom",
|
305
|
+
self.file_name,
|
306
|
+
e
|
307
|
+
)
|
308
|
+
# Fallback to robot-position-based zoom if room extraction fails
|
309
|
+
if (
|
310
|
+
self.shared.image_auto_zoom
|
311
|
+
and self.shared.vacuum_state == "cleaning"
|
312
|
+
and robot_position
|
313
|
+
):
|
314
|
+
self.zooming = True
|
315
|
+
_LOGGER.debug(
|
316
|
+
"%s: Enabling fallback robot-position-based zoom",
|
317
|
+
self.file_name
|
318
|
+
)
|
319
|
+
|
251
320
|
return self.img_base_layer, robot_position, robot_position_angle
|
252
321
|
|
253
322
|
async def _draw_map_elements(
|
@@ -294,19 +363,32 @@ class ReImageHandler(BaseHandler, AutoCrop):
|
|
294
363
|
img_np_array, robot_position, robot_position_angle, robot_color
|
295
364
|
)
|
296
365
|
|
297
|
-
#
|
298
|
-
|
299
|
-
|
366
|
+
# Store robot position for potential zoom function use
|
367
|
+
if robot_position:
|
368
|
+
self.robot_position = robot_position
|
369
|
+
|
370
|
+
# Check if zoom should be enabled based on active zones
|
300
371
|
if (
|
301
372
|
self.shared.image_auto_zoom
|
302
373
|
and self.shared.vacuum_state == "cleaning"
|
303
|
-
and robot_position
|
304
|
-
and not self.zooming # Not already enabled
|
374
|
+
and robot_position
|
305
375
|
):
|
306
|
-
#
|
307
|
-
|
308
|
-
|
309
|
-
|
376
|
+
# For Rand256, we need to check active zones differently since room data is not available yet
|
377
|
+
# Use a simplified approach: enable zoom if any active zones are set
|
378
|
+
active_zones = self.shared.rand256_active_zone
|
379
|
+
if active_zones and any(zone for zone in active_zones):
|
380
|
+
self.zooming = True
|
381
|
+
_LOGGER.debug(
|
382
|
+
"%s: Enabling zoom for Rand256 - active zones detected: %s",
|
383
|
+
self.file_name,
|
384
|
+
active_zones
|
385
|
+
)
|
386
|
+
else:
|
387
|
+
self.zooming = False
|
388
|
+
_LOGGER.debug(
|
389
|
+
"%s: Zoom disabled for Rand256 - no active zones set",
|
390
|
+
self.file_name
|
391
|
+
)
|
310
392
|
|
311
393
|
img_np_array = await self.async_auto_trim_and_zoom_image(
|
312
394
|
img_np_array,
|
File without changes
|
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/colors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/shared.py
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/types.py
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/config/utils.py
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/hypfer_draw.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/map_data.py
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/py.typed
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/reimg_draw.py
RENAMED
File without changes
|
{valetudo_map_parser-0.1.9a4 → valetudo_map_parser-0.1.9a6}/SCR/valetudo_map_parser/rooms_handler.py
RENAMED
File without changes
|