Skip to content

Commit a2f610a

Browse files
authored
Fix failure to disconnect (#201)
1 parent 663cc0f commit a2f610a

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

switchbot/devices/device.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,9 @@ def _disconnect_from_timer(self):
331331
self._reset_disconnect_timer()
332332
return
333333
self._cancel_disconnect_timer()
334-
self._timed_disconnect_task = self._execute_timed_disconnect()
334+
self._timed_disconnect_task = asyncio.create_task(
335+
self._execute_timed_disconnect()
336+
)
335337

336338
def _cancel_disconnect_timer(self):
337339
"""Cancel disconnect timer."""
@@ -375,12 +377,20 @@ async def _execute_disconnect_with_lock(self) -> None:
375377
self._client = None
376378
self._read_char = None
377379
self._write_char = None
378-
if client:
379-
_LOGGER.debug("%s: Disconnecting", self.name)
380-
await client.disconnect()
381-
_LOGGER.debug("%s: Disconnect completed", self.name)
382-
else:
380+
if not client:
383381
_LOGGER.debug("%s: Already disconnected", self.name)
382+
return
383+
_LOGGER.debug("%s: Disconnecting", self.name)
384+
try:
385+
await client.disconnect()
386+
except BleakError as ex:
387+
_LOGGER.warning(
388+
"%s: Error disconnecting: %s; RSSI: %s",
389+
self.name,
390+
ex,
391+
self.rssi,
392+
)
393+
_LOGGER.debug("%s: Disconnect completed", self.name)
384394

385395
async def _send_command_locked(self, key: str, command: bytes) -> bytes:
386396
"""Send command to device and read response."""

0 commit comments

Comments
 (0)