diff --git a/custom_components/oasis_mini/coordinator.py b/custom_components/oasis_mini/coordinator.py index f90cce6..ea1d4a1 100644 --- a/custom_components/oasis_mini/coordinator.py +++ b/custom_components/oasis_mini/coordinator.py @@ -129,29 +129,18 @@ class OasisDeviceCoordinator(DataUpdateCoordinator[list[OasisDevice]]): except Exception: _LOGGER.exception("Error fetching playlists from cloud") - any_success = False - for device in devices: try: ready = await self.mqtt_client.wait_until_ready( device, request_status=True ) if not ready: - _LOGGER.warning( - "Timeout waiting for Oasis device %s to be ready", + _LOGGER.debug( + "Oasis device %s not ready yet; will retry on next update", device.serial_number, ) continue - mac = await device.async_get_mac_address() - if not mac: - _LOGGER.warning( - "Could not get MAC address for Oasis device %s", - device.serial_number, - ) - continue - - any_success = True device.schedule_track_refresh() except Exception: @@ -159,17 +148,7 @@ class OasisDeviceCoordinator(DataUpdateCoordinator[list[OasisDevice]]): "Error preparing Oasis device %s", device.serial_number ) - if any_success: - self.attempt = 0 - else: - if self.attempt > 2 or not self.data: - raise UpdateFailed( - "Couldn't read from any Oasis device " - f"after {self.attempt} attempts" - ) - - except UpdateFailed: - raise + self.attempt = 0 except Exception as ex: if self.attempt > 2 or not (devices or self.data): raise UpdateFailed( diff --git a/custom_components/oasis_mini/pyoasiscontrol/clients/mqtt_client.py b/custom_components/oasis_mini/pyoasiscontrol/clients/mqtt_client.py index a3b6ffb..597174c 100644 --- a/custom_components/oasis_mini/pyoasiscontrol/clients/mqtt_client.py +++ b/custom_components/oasis_mini/pyoasiscontrol/clients/mqtt_client.py @@ -327,7 +327,6 @@ class OasisMqttClient(OasisClientProtocol): # Wait for initialization try: await asyncio.wait_for(is_initialized_event.wait(), timeout=timeout) - return True except asyncio.TimeoutError: _LOGGER.debug( "Timeout (%.1fs) waiting for initialization from %s", @@ -335,6 +334,8 @@ class OasisMqttClient(OasisClientProtocol): serial, ) return False + else: + return True async def async_get_mac_address(self, device: OasisDevice) -> str | None: """