Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """The Xiaomi BLE integration."""
2 
3 from collections.abc import Callable, Coroutine
4 from logging import Logger
5 from typing import Any
6 
7 from xiaomi_ble import SensorUpdate, XiaomiBluetoothDeviceData
8 
10  BluetoothScanningMode,
11  BluetoothServiceInfoBleak,
12 )
14  ActiveBluetoothProcessorCoordinator,
15 )
17  PassiveBluetoothDataProcessor,
18 )
19 from homeassistant.core import HomeAssistant
20 from homeassistant.helpers.debounce import Debouncer
21 
22 from .const import CONF_SLEEPY_DEVICE
23 from .types import XiaomiBLEConfigEntry
24 
25 
27  ActiveBluetoothProcessorCoordinator[SensorUpdate]
28 ):
29  """Define a Xiaomi Bluetooth Active Update Processor Coordinator."""
30 
31  def __init__(
32  self,
33  hass: HomeAssistant,
34  logger: Logger,
35  *,
36  address: str,
37  mode: BluetoothScanningMode,
38  update_method: Callable[[BluetoothServiceInfoBleak], SensorUpdate],
39  needs_poll_method: Callable[[BluetoothServiceInfoBleak, float | None], bool],
40  device_data: XiaomiBluetoothDeviceData,
41  discovered_event_classes: set[str],
42  poll_method: Callable[
43  [BluetoothServiceInfoBleak],
44  Coroutine[Any, Any, SensorUpdate],
45  ]
46  | None = None,
47  poll_debouncer: Debouncer[Coroutine[Any, Any, None]] | None = None,
48  entry: XiaomiBLEConfigEntry,
49  connectable: bool = True,
50  ) -> None:
51  """Initialize the Xiaomi Bluetooth Active Update Processor Coordinator."""
52  super().__init__(
53  hass=hass,
54  logger=logger,
55  address=address,
56  mode=mode,
57  update_method=update_method,
58  needs_poll_method=needs_poll_method,
59  poll_method=poll_method,
60  poll_debouncer=poll_debouncer,
61  connectable=connectable,
62  )
63  self.discovered_event_classesdiscovered_event_classes = discovered_event_classes
64  self.device_datadevice_data = device_data
65  self.entryentry = entry
66 
67  @property
68  def sleepy_device(self) -> bool:
69  """Return True if the device is a sleepy device."""
70  return self.entryentry.data.get(CONF_SLEEPY_DEVICE, self.device_datadevice_data.sleepy_device)
71 
72 
74  PassiveBluetoothDataProcessor[_T, SensorUpdate]
75 ):
76  """Define a Xiaomi Bluetooth Passive Update Data Processor."""
77 
78  coordinator: XiaomiActiveBluetoothProcessorCoordinator
None __init__(self, HomeAssistant hass, Logger logger, *str address, BluetoothScanningMode mode, Callable[[BluetoothServiceInfoBleak], SensorUpdate] update_method, Callable[[BluetoothServiceInfoBleak, float|None], bool] needs_poll_method, XiaomiBluetoothDeviceData device_data, set[str] discovered_event_classes, Callable[[BluetoothServiceInfoBleak], Coroutine[Any, Any, SensorUpdate],]|None poll_method=None, Debouncer[Coroutine[Any, Any, None]]|None poll_debouncer=None, XiaomiBLEConfigEntry entry, bool connectable=True)
Definition: coordinator.py:50