fix: handle stale ble devices
This commit is contained in:
@@ -97,18 +97,10 @@ class PowerViewBLE:
|
||||
|
||||
def __init__(self, ble_device: BLEDevice, home_key: bytes = b"") -> None:
|
||||
"""Initialize device API via Bluetooth."""
|
||||
self._ble_device: Final[BLEDevice] = ble_device
|
||||
self._ble_device: BLEDevice = ble_device
|
||||
self.name: Final[str] = self._ble_device.name or "unknown"
|
||||
self._seqcnt: int = 1
|
||||
self._client: BleakClient = BleakClient(
|
||||
self._ble_device,
|
||||
disconnected_callback=self._on_disconnect,
|
||||
services=[
|
||||
UUID_COV_SERVICE,
|
||||
UUID_DEV_SERVICE,
|
||||
# self.UUID_BAT_SERVICE,
|
||||
],
|
||||
)
|
||||
self._client: BleakClient = BleakClient(self._ble_device)
|
||||
self._data_event = asyncio.Event()
|
||||
self._data: bytes = b""
|
||||
self._info: PVDeviceInfo = PVDeviceInfo()
|
||||
@@ -125,6 +117,10 @@ class PowerViewBLE:
|
||||
await self._data_event.wait()
|
||||
self._data_event.clear()
|
||||
|
||||
def set_ble_device(self, ble_device: BLEDevice) -> None:
|
||||
"""Update the BLE device reference (e.g. when proxy details change)."""
|
||||
self._ble_device = ble_device
|
||||
|
||||
@property
|
||||
def encrypted(self) -> bool:
|
||||
"""Return whether communication with this shade is encrypted."""
|
||||
@@ -360,6 +356,7 @@ class PowerViewBLE:
|
||||
self._ble_device,
|
||||
self.name,
|
||||
disconnected_callback=self._on_disconnect,
|
||||
ble_device_callback=lambda: self._ble_device,
|
||||
services=[
|
||||
UUID_COV_SERVICE,
|
||||
UUID_DEV_SERVICE,
|
||||
|
||||
@@ -99,6 +99,7 @@ class PVCoordinator(PassiveBluetoothDataUpdateCoordinator):
|
||||
# self.hass.async_create_task(self._get_device_info())
|
||||
|
||||
LOGGER.debug("BLE event %s: %s", change, service_info.manufacturer_data)
|
||||
self.api.set_ble_device(service_info.device)
|
||||
self.data = {ATTR_RSSI: service_info.rssi}
|
||||
if change == bluetooth.BluetoothChange.ADVERTISEMENT:
|
||||
self.data.update(
|
||||
|
||||
Reference in New Issue
Block a user