valetudo-map-parser 0.1.10b2__tar.gz → 0.1.10b3__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.10b2 → valetudo_map_parser-0.1.10b3}/PKG-INFO +1 -1
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/shared.py +2 -2
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/utils.py +2 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/hypfer_handler.py +3 -2
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/map_data.py +8 -7
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/pyproject.toml +1 -1
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/LICENSE +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/NOTICE.txt +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/README.md +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/__init__.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/__init__.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/async_utils.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/auto_crop.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/color_utils.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/colors.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/drawable.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/drawable_elements.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/enhanced_drawable.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/FiraSans.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/Inter-VF.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/Lato-Regular.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/MPLUSRegular.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/NotoKufiArabic-VF.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/NotoSansCJKhk-VF.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/fonts/NotoSansKhojki.ttf +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/optimized_element_map.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/rand256_parser.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/config/types.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/hypfer_draw.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/hypfer_rooms_handler.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/py.typed +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/rand256_handler.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/reimg_draw.py +0 -0
- {valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/rooms_handler.py +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
"""
|
2
2
|
Class Camera Shared.
|
3
3
|
Keep the data between the modules.
|
4
|
-
Version: v0.1.
|
4
|
+
Version: v0.1.10
|
5
5
|
"""
|
6
6
|
|
7
7
|
import asyncio
|
@@ -82,7 +82,7 @@ class CameraShared:
|
|
82
82
|
self.user_colors = Colors # User base colors
|
83
83
|
self.rooms_colors = Colors # Rooms colors
|
84
84
|
self.vacuum_battery = 0 # Vacuum battery state
|
85
|
-
self.vacuum_bat_charged: bool =
|
85
|
+
self.vacuum_bat_charged: bool = False # Vacuum charged and ready
|
86
86
|
self.vacuum_connection = None # Vacuum connection state
|
87
87
|
self.vacuum_state = None # Vacuum state
|
88
88
|
self.charger_position = None # Vacuum Charger position
|
@@ -88,6 +88,7 @@ class BaseHandler:
|
|
88
88
|
bytes_format: bool = False,
|
89
89
|
text_enabled: bool = False,
|
90
90
|
vacuum_status: str | None = None,
|
91
|
+
|
91
92
|
) -> PilPNG | None:
|
92
93
|
"""
|
93
94
|
Unified async function to get PIL image from JSON data for both Hypfer and Rand256 handlers.
|
@@ -101,6 +102,7 @@ class BaseHandler:
|
|
101
102
|
@param m_json: The JSON data to use to draw the image
|
102
103
|
@param destinations: MQTT destinations for labels (used by Rand256)
|
103
104
|
@param bytes_format: If True, also convert to PNG bytes and store in shared.binary_image
|
105
|
+
|
104
106
|
@param text_enabled: If True, draw text on the image
|
105
107
|
@param vacuum_status: Vacuum status to display on the image
|
106
108
|
@return: PIL Image or None
|
@@ -62,7 +62,7 @@ class HypferMapImageHandler(BaseHandler, AutoCrop):
|
|
62
62
|
self.img_work_layer = (
|
63
63
|
None # persistent working buffer to avoid per-frame allocations
|
64
64
|
)
|
65
|
-
self.active_zones =
|
65
|
+
self.active_zones = [] # vacuum active zones.
|
66
66
|
self.svg_wait = False # SVG image creation wait.
|
67
67
|
self.imd = ImDraw(self) # Image Draw class.
|
68
68
|
self.color_grey = (128, 128, 128, 255)
|
@@ -137,9 +137,10 @@ class HypferMapImageHandler(BaseHandler, AutoCrop):
|
|
137
137
|
|
138
138
|
# Get the pixels size and layers from the JSON data
|
139
139
|
pixel_size = int(m_json["pixelSize"])
|
140
|
+
self.active_zones = self.json_data.active_zones
|
140
141
|
|
141
142
|
new_frame_hash = await self.calculate_array_hash(
|
142
|
-
self.json_data.layers, self.
|
143
|
+
self.json_data.layers, self.active_zones
|
143
144
|
)
|
144
145
|
if self.frame_number == 0:
|
145
146
|
self.img_hash = new_frame_hash
|
{valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/map_data.py
RENAMED
@@ -217,7 +217,6 @@ class ImageData:
|
|
217
217
|
"""
|
218
218
|
if layer_dict is None:
|
219
219
|
layer_dict = {}
|
220
|
-
if active_list is None:
|
221
220
|
active_list = []
|
222
221
|
|
223
222
|
if isinstance(json_obj, dict):
|
@@ -228,12 +227,12 @@ class ImageData:
|
|
228
227
|
layer_dict.setdefault(layer_type, []).append(
|
229
228
|
json_obj.get("compressedPixels", [])
|
230
229
|
)
|
231
|
-
if layer_type == "segment":
|
232
230
|
# Safely extract "active" flag if present and convertible to int
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
231
|
+
if layer_type == "segment":
|
232
|
+
try:
|
233
|
+
active_list.append(int(meta_data.get("active", 0)))
|
234
|
+
except (ValueError, TypeError):
|
235
|
+
pass # skip invalid/missing 'active' values
|
237
236
|
|
238
237
|
# json_obj.items() yields (key, value), so we only want the values
|
239
238
|
for _, value in json_obj.items():
|
@@ -724,13 +723,15 @@ class HyperMapData:
|
|
724
723
|
paths = ImageData.find_paths_entities(json_data)
|
725
724
|
image_size = ImageData.get_image_size(json_data)
|
726
725
|
areas = ImageData.find_zone_entities(json_data)
|
726
|
+
layers = {}
|
727
|
+
active_zones = []
|
727
728
|
# Hypothetical obstacles finder, if you have one
|
728
729
|
obstacles = getattr(ImageData, "find_obstacles_entities", lambda *_: {})(
|
729
730
|
json_data
|
730
731
|
)
|
731
732
|
virtual_walls = ImageData.find_virtual_walls(json_data)
|
732
733
|
pixel_size = int(json_data["pixelSize"])
|
733
|
-
layers, active_zones = ImageData.find_layers(json_data["layers"],
|
734
|
+
layers, active_zones = ImageData.find_layers(json_data["layers"], layers, active_zones)
|
734
735
|
entity_dict = ImageData.find_points_entities(json_data)
|
735
736
|
|
736
737
|
return cls(
|
File without changes
|
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/hypfer_draw.py
RENAMED
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/py.typed
RENAMED
File without changes
|
File without changes
|
{valetudo_map_parser-0.1.10b2 → valetudo_map_parser-0.1.10b3}/SCR/valetudo_map_parser/reimg_draw.py
RENAMED
File without changes
|
File without changes
|