mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 06:07:17 +00:00
Improve failure handling and logging for invalid map responses (#139681)
This commit is contained in:
parent
890c672f8c
commit
9dc04cb088
@ -4,6 +4,7 @@ import asyncio
|
|||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import io
|
import io
|
||||||
|
import logging
|
||||||
|
|
||||||
from roborock import RoborockCommand
|
from roborock import RoborockCommand
|
||||||
from vacuum_map_parser_base.config.color import ColorsPalette
|
from vacuum_map_parser_base.config.color import ColorsPalette
|
||||||
@ -30,6 +31,8 @@ from .const import (
|
|||||||
from .coordinator import RoborockConfigEntry, RoborockDataUpdateCoordinator
|
from .coordinator import RoborockConfigEntry, RoborockDataUpdateCoordinator
|
||||||
from .entity import RoborockCoordinatedEntityV1
|
from .entity import RoborockCoordinatedEntityV1
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@ -48,7 +51,11 @@ async def async_setup_entry(
|
|||||||
)
|
)
|
||||||
|
|
||||||
def parse_image(map_bytes: bytes) -> bytes | None:
|
def parse_image(map_bytes: bytes) -> bytes | None:
|
||||||
|
try:
|
||||||
parsed_map = parser.parse(map_bytes)
|
parsed_map = parser.parse(map_bytes)
|
||||||
|
except (IndexError, ValueError) as err:
|
||||||
|
_LOGGER.debug("Exception when parsing map contents: %s", err)
|
||||||
|
return None
|
||||||
if parsed_map.image is None:
|
if parsed_map.image is None:
|
||||||
return None
|
return None
|
||||||
img_byte_arr = io.BytesIO()
|
img_byte_arr = io.BytesIO()
|
||||||
@ -150,6 +157,7 @@ class RoborockMap(RoborockCoordinatedEntityV1, ImageEntity):
|
|||||||
not isinstance(response[0], bytes)
|
not isinstance(response[0], bytes)
|
||||||
or (content := self.parser(response[0])) is None
|
or (content := self.parser(response[0])) is None
|
||||||
):
|
):
|
||||||
|
_LOGGER.debug("Failed to parse map contents: %s", response[0])
|
||||||
raise HomeAssistantError(
|
raise HomeAssistantError(
|
||||||
translation_domain=DOMAIN,
|
translation_domain=DOMAIN,
|
||||||
translation_key="map_failure",
|
translation_key="map_failure",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user