From b1d6c1df10bb8f8cd810ef5094389ef7e5483e41 Mon Sep 17 00:00:00 2001 From: Rogier van Staveren Date: Fri, 12 May 2023 12:18:56 +0200 Subject: [PATCH] Handle TimeoutError --- custom_components/benqprojector/__init__.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/custom_components/benqprojector/__init__.py b/custom_components/benqprojector/__init__.py index 9210dcc..c17e0a6 100644 --- a/custom_components/benqprojector/__init__.py +++ b/custom_components/benqprojector/__init__.py @@ -74,10 +74,16 @@ def __init__(self, hass, serial_port: str, baud_rate: int): self.projector = BenQProjector(self._serial_port, baud_rate) async def connect(self): - if not self.projector.connect(): + try: + if not self.projector.connect(): + raise ConfigEntryNotReady( + f"Unable to connect to BenQ projector on {self._serial_port}" + ) + except TimeoutError as ex: raise ConfigEntryNotReady( - f"Unable to connect to BenQ projector on {self._serial_port}" + f"Unable to connect to BenQ projector on {self._serial_port}", ex ) + self.unique_id = self.projector.unique_id self.model = self.projector.model @@ -142,8 +148,13 @@ async def _async_update_data(self): """Fetch data from BenQ Projector.""" _LOGGER.debug("BenQProjectorCoordinator._async_updadatata") - if not self.projector.update_power(): - return None + try: + if not self.projector.update_power(): + return None + except TimeoutError as ex: + raise UpdateFailed( + f"Error communicating with BenQ projector on {self._serial_port}", ex + ) power_status = self.projector.power_status if power_status is None: