Преглед изворни кода

Fix handling empty _sb_adv_data (#157)

J. Nick Koston пре 2 година
родитељ
комит
63d768975a
2 измењених фајлова са 7 додато и 3 уклоњено
  1. 2 2
      switchbot/adv_parser.py
  2. 5 1
      switchbot/devices/device.py

+ 2 - 2
switchbot/adv_parser.py

@@ -4,7 +4,7 @@ from __future__ import annotations
 import logging
 from collections.abc import Callable
 from functools import lru_cache
-from typing import TypedDict
+from typing import Any, TypedDict
 
 from bleak.backends.device import BLEDevice
 from bleak.backends.scanner import AdvertisementData
@@ -189,7 +189,7 @@ def _parse_data(
     _mfr_data: bytes | None,
     _mfr_id: int | None = None,
     _switchbot_model: SwitchbotModel | None = None,
-) -> SwitchBotAdvertisement | None:
+) -> dict[str, Any] | None:
     """Parse advertisement data."""
     _model = chr(_service_data[0] & 0b01111111) if _service_data else None
 

+ 5 - 1
switchbot/devices/device.py

@@ -482,7 +482,11 @@ class SwitchbotBaseDevice:
 
     def _set_advertisement_data(self, advertisement: SwitchBotAdvertisement) -> None:
         """Set advertisement data."""
-        if advertisement.data.get("data") or not self._sb_adv_data.data.get("data"):
+        if (
+            advertisement.data.get("data")
+            or not self._sb_adv_data
+            or not self._sb_adv_data.data.get("data")
+        ):
             self._sb_adv_data = advertisement
         self._override_adv_data = None