J. Nick Koston před 1 rokem
rodič
revize
19043ed22e
1 změnil soubory, kde provedl 10 přidání a 8 odebrání
  1. 10 8
      switchbot/devices/device.py

+ 10 - 8
switchbot/devices/device.py

@@ -200,18 +200,20 @@ class SwitchbotDevice:
                 ble_device_callback=lambda: self._device,
             )
             _LOGGER.debug("%s: Connected; RSSI: %s", self.name, self.rssi)
-            services = client.services
-            self._read_char = services.get_characteristic(READ_CHAR_UUID)
-            self._write_char = services.get_characteristic(WRITE_CHAR_UUID)
-            if self._read_char is None or self._write_char is None:
+            resolved = self._resolve_characteristics(client.services)
+            if not resolved:
                 # Try to handle services failing to load
-                services = await client.get_services()
-                self._read_char = services.get_characteristic(READ_CHAR_UUID)
-                self._write_char = services.get_characteristic(WRITE_CHAR_UUID)
-            self._cached_services = client.services
+                resolved = self._resolve_characteristics(await client.get_services())
+            self._cached_services = client.services if resolved else None
             self._client = client
             self._reset_disconnect_timer()
 
+    def _resolve_characteristics(self, services: BleakGATTServiceCollection) -> bool:
+        """Resolve characteristics."""
+        self._read_char = services.get_characteristic(READ_CHAR_UUID)
+        self._write_char = services.get_characteristic(WRITE_CHAR_UUID)
+        return bool(self._read_char and self._write_char)
+
     def _reset_disconnect_timer(self):
         """Reset disconnect timer."""
         if self._disconnect_timer: