1 """Storage for remote scanners."""
3 from __future__
import annotations
5 from bluetooth_adapters
import (
6 DiscoveredDeviceAdvertisementData,
7 DiscoveredDeviceAdvertisementDataDict,
9 discovered_device_advertisement_data_from_dict,
10 discovered_device_advertisement_data_to_dict,
11 expire_stale_scanner_discovered_device_advertisement_data,
17 REMOTE_SCANNER_STORAGE_VERSION = 1
18 REMOTE_SCANNER_STORAGE_KEY =
"bluetooth.remote_scanners"
19 SCANNER_SAVE_DELAY = 5
23 """Storage for remote scanners."""
25 def __init__(self, hass: HomeAssistant) ->
None:
26 """Initialize the storage."""
27 self._store: Store[DiscoveryStorageType] =
Store(
28 hass, REMOTE_SCANNER_STORAGE_VERSION, REMOTE_SCANNER_STORAGE_KEY
30 self.
_data_data: DiscoveryStorageType = {}
33 """Set up the storage."""
35 expire_stale_scanner_discovered_device_advertisement_data(self.
_data_data)
38 """Get all scanners."""
44 ) -> DiscoveredDeviceAdvertisementData |
None:
45 """Get discovered devices by scanner."""
46 if not (scanner_data := self.
_data_data.
get(scanner)):
48 return discovered_device_advertisement_data_from_dict(scanner_data)
53 ) -> DiscoveredDeviceAdvertisementDataDict |
None:
54 """Get discovered devices by scanner as a dict."""
59 """Get data to save to disk."""
60 return self.
_data_data
64 self, scanner: str, data: DiscoveredDeviceAdvertisementData
66 """Set discovered devices by scanner."""
67 self.
_data_data[scanner] = discovered_device_advertisement_data_to_dict(data)
None __init__(self, HomeAssistant hass)
None async_set_advertisement_history(self, str scanner, DiscoveredDeviceAdvertisementData data)
DiscoveryStorageType _async_get_data(self)
DiscoveredDeviceAdvertisementData|None async_get_advertisement_history(self, str scanner)
DiscoveredDeviceAdvertisementDataDict|None async_get_advertisement_history_as_dict(self, str scanner)
web.Response get(self, web.Request request, str config_key)
None async_delay_save(self, Callable[[], _T] data_func, float delay=0)