1 """Bluetooth support for esphome."""
3 from __future__
import annotations
5 from functools
import partial
6 from typing
import TYPE_CHECKING
8 from aioesphomeapi
import APIClient, DeviceInfo
9 from bleak_esphome
import connect_scanner
10 from bleak_esphome.backend.cache
import ESPHomeBluetoothCache
15 from .entry_data
import RuntimeEntryData
20 """Cancel all the callbacks on unload."""
21 for callback
in unload_callbacks:
28 entry_data: RuntimeEntryData,
30 device_info: DeviceInfo,
31 cache: ESPHomeBluetoothCache,
33 """Connect scanner."""
34 client_data = connect_scanner(cli, device_info, cache, entry_data.available)
35 entry_data.bluetooth_device = client_data.bluetooth_device
36 client_data.disconnect_callbacks = entry_data.disconnect_callbacks
37 scanner = client_data.scanner
39 assert scanner
is not None
44 scanner.async_setup(),
CALLBACK_TYPE async_register_scanner(HomeAssistant hass, BaseHaScanner scanner, int|None connection_slots=None)
None _async_unload(list[CALLBACK_TYPE] unload_callbacks)
CALLBACK_TYPE async_connect_scanner(HomeAssistant hass, RuntimeEntryData entry_data, APIClient cli, DeviceInfo device_info, ESPHomeBluetoothCache cache)