Handle Shelly BLE errors during connect and disconnect (#119174)
This commit is contained in:
parent
b937fc0cfe
commit
04222c32b5
3 changed files with 64 additions and 10 deletions
|
@ -627,7 +627,13 @@ class ShellyRpcCoordinator(ShellyCoordinatorBase[RpcDevice]):
|
|||
if self.connected: # Already connected
|
||||
return
|
||||
self.connected = True
|
||||
await self._async_run_connected_events()
|
||||
try:
|
||||
await self._async_run_connected_events()
|
||||
except DeviceConnectionError as err:
|
||||
LOGGER.error(
|
||||
"Error running connected events for device %s: %s", self.name, err
|
||||
)
|
||||
self.last_update_success = False
|
||||
|
||||
async def _async_run_connected_events(self) -> None:
|
||||
"""Run connected events.
|
||||
|
@ -701,10 +707,18 @@ class ShellyRpcCoordinator(ShellyCoordinatorBase[RpcDevice]):
|
|||
if self.device.connected:
|
||||
try:
|
||||
await async_stop_scanner(self.device)
|
||||
await super().shutdown()
|
||||
except InvalidAuthError:
|
||||
self.entry.async_start_reauth(self.hass)
|
||||
return
|
||||
await super().shutdown()
|
||||
except DeviceConnectionError as err:
|
||||
# If the device is restarting or has gone offline before
|
||||
# the ping/pong timeout happens, the shutdown command
|
||||
# will fail, but we don't care since we are unloading
|
||||
# and if we setup again, we will fix anything that is
|
||||
# in an inconsistent state at that time.
|
||||
LOGGER.debug("Error during shutdown for device %s: %s", self.name, err)
|
||||
return
|
||||
await self._async_disconnected(False)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue