diff --git a/homeassistant/components/tradfri/coordinator.py b/homeassistant/components/tradfri/coordinator.py index 1395478b6e9..039ff34c9f7 100644 --- a/homeassistant/components/tradfri/coordinator.py +++ b/homeassistant/components/tradfri/coordinator.py @@ -51,27 +51,23 @@ class TradfriDeviceDataUpdateCoordinator(DataUpdateCoordinator[Device]): @callback def _observe_update(self, device: Device) -> None: """Update the coordinator for a device when a change is detected.""" - self.update_interval = timedelta(seconds=SCAN_INTERVAL) # Reset update interval - self.async_set_updated_data(data=device) @callback - def _exception_callback(self, device: Device, exc: Exception | None = None) -> None: + def _exception_callback(self, exc: Exception) -> None: """Schedule handling exception..""" - self.hass.async_create_task(self._handle_exception(device=device, exc=exc)) + self.hass.async_create_task(self._handle_exception(exc)) - async def _handle_exception( - self, device: Device, exc: Exception | None = None - ) -> None: + async def _handle_exception(self, exc: Exception) -> None: """Handle observe exceptions in a coroutine.""" - self._exception = ( - exc # Store exception so that it gets raised in _async_update_data - ) + # Store exception so that it gets raised in _async_update_data + self._exception = exc - _LOGGER.debug("Observation failed for %s, trying again", device, exc_info=exc) - self.update_interval = timedelta( - seconds=5 - ) # Change interval so we get a swift refresh + _LOGGER.debug( + "Observation failed for %s, trying again", self.device, exc_info=exc + ) + # Change interval so we get a swift refresh + self.update_interval = timedelta(seconds=5) await self.async_request_refresh() async def _async_update_data(self) -> Device: @@ -82,10 +78,7 @@ class TradfriDeviceDataUpdateCoordinator(DataUpdateCoordinator[Device]): self._exception = None # Clear stored exception raise exc # pylint: disable-msg=raising-bad-type except RequestError as err: - raise UpdateFailed( - f"Error communicating with API: {err}. Try unplugging and replugging your " - f"IKEA gateway." - ) from err + raise UpdateFailed(f"Error communicating with API: {err}.") from err if not self.data or not self.last_update_success: # Start subscription try: @@ -95,8 +88,11 @@ class TradfriDeviceDataUpdateCoordinator(DataUpdateCoordinator[Device]): duration=0, ) await self.api(cmd) - except RequestError as exc: - await self._handle_exception(device=self.device, exc=exc) + except RequestError as err: + raise UpdateFailed(f"Error communicating with API: {err}.") from err + + # Reset update interval + self.update_interval = timedelta(seconds=SCAN_INTERVAL) return self.device