Update habluetooth to 2.0.0 (#106145)
This commit is contained in:
parent
dbb726f41f
commit
e50fe79911
18 changed files with 53 additions and 60 deletions
|
@ -303,7 +303,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
adapters = await manager.async_get_bluetooth_adapters()
|
||||
details = adapters[adapter]
|
||||
slots: int = details.get(ADAPTER_CONNECTION_SLOTS) or DEFAULT_CONNECTION_SLOTS
|
||||
entry.async_on_unload(async_register_scanner(hass, scanner, True, slots))
|
||||
entry.async_on_unload(async_register_scanner(hass, scanner, connection_slots=slots))
|
||||
await async_update_device(hass, entry, adapter, details)
|
||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = scanner
|
||||
entry.async_on_unload(entry.add_update_listener(async_update_listener))
|
||||
|
|
|
@ -181,13 +181,10 @@ def async_rediscover_address(hass: HomeAssistant, address: str) -> None:
|
|||
def async_register_scanner(
|
||||
hass: HomeAssistant,
|
||||
scanner: BaseHaScanner,
|
||||
connectable: bool,
|
||||
connection_slots: int | None = None,
|
||||
) -> CALLBACK_TYPE:
|
||||
"""Register a BleakScanner."""
|
||||
return _get_manager(hass).async_register_scanner(
|
||||
scanner, connectable, connection_slots
|
||||
)
|
||||
return _get_manager(hass).async_register_scanner(scanner, connection_slots)
|
||||
|
||||
|
||||
@hass_callback
|
||||
|
|
|
@ -220,7 +220,6 @@ class HomeAssistantBluetoothManager(BluetoothManager):
|
|||
def async_register_scanner(
|
||||
self,
|
||||
scanner: BaseHaScanner,
|
||||
connectable: bool,
|
||||
connection_slots: int | None = None,
|
||||
) -> CALLBACK_TYPE:
|
||||
"""Register a scanner."""
|
||||
|
@ -228,7 +227,5 @@ class HomeAssistantBluetoothManager(BluetoothManager):
|
|||
if history := self.storage.async_get_advertisement_history(scanner.source):
|
||||
scanner.restore_discovered_devices(history)
|
||||
|
||||
unregister = super().async_register_scanner(
|
||||
scanner, connectable, connection_slots
|
||||
)
|
||||
unregister = super().async_register_scanner(scanner, connection_slots)
|
||||
return partial(self._async_unregister_scanner, scanner, unregister)
|
||||
|
|
|
@ -20,6 +20,6 @@
|
|||
"bluetooth-auto-recovery==1.2.3",
|
||||
"bluetooth-data-tools==1.18.0",
|
||||
"dbus-fast==2.21.0",
|
||||
"habluetooth==1.0.0"
|
||||
"habluetooth==2.0.0"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ async def async_connect_scanner(
|
|||
return partial(
|
||||
_async_unload,
|
||||
[
|
||||
async_register_scanner(hass, scanner, scanner.connectable),
|
||||
async_register_scanner(hass, scanner),
|
||||
scanner.async_setup(),
|
||||
],
|
||||
)
|
||||
|
|
|
@ -84,7 +84,7 @@ def async_connect_scanner(
|
|||
coordinator=coordinator,
|
||||
)
|
||||
unload_callbacks = [
|
||||
async_register_scanner(hass, scanner, connectable=False),
|
||||
async_register_scanner(hass, scanner),
|
||||
scanner.async_setup(),
|
||||
scanner.start_polling(),
|
||||
]
|
||||
|
|
|
@ -43,7 +43,7 @@ async def async_connect_scanner(
|
|||
)
|
||||
scanner = ShellyBLEScanner(source, entry.title, connector, False)
|
||||
unload_callbacks = [
|
||||
async_register_scanner(hass, scanner, False),
|
||||
async_register_scanner(hass, scanner),
|
||||
scanner.async_setup(),
|
||||
coordinator.async_subscribe_events(scanner.async_on_event),
|
||||
]
|
||||
|
|
|
@ -23,7 +23,7 @@ dbus-fast==2.21.0
|
|||
fnv-hash-fast==0.5.0
|
||||
ha-av==10.1.1
|
||||
ha-ffmpeg==3.1.0
|
||||
habluetooth==1.0.0
|
||||
habluetooth==2.0.0
|
||||
hass-nabucasa==0.75.1
|
||||
hassil==1.5.1
|
||||
home-assistant-bluetooth==1.11.0
|
||||
|
|
|
@ -989,7 +989,7 @@ ha-philipsjs==3.1.1
|
|||
habitipy==0.2.0
|
||||
|
||||
# homeassistant.components.bluetooth
|
||||
habluetooth==1.0.0
|
||||
habluetooth==2.0.0
|
||||
|
||||
# homeassistant.components.cloud
|
||||
hass-nabucasa==0.75.1
|
||||
|
|
|
@ -788,7 +788,7 @@ ha-philipsjs==3.1.1
|
|||
habitipy==0.2.0
|
||||
|
||||
# homeassistant.components.bluetooth
|
||||
habluetooth==1.0.0
|
||||
habluetooth==2.0.0
|
||||
|
||||
# homeassistant.components.cloud
|
||||
hass-nabucasa==0.75.1
|
||||
|
|
|
@ -346,7 +346,7 @@ async def test_advertisment_interval_longer_than_adapter_stack_timeout_adapter_c
|
|||
switchbot_device_went_unavailable = False
|
||||
|
||||
scanner = FakeScanner("new", "fake_adapter")
|
||||
cancel_scanner = async_register_scanner(hass, scanner, False)
|
||||
cancel_scanner = async_register_scanner(hass, scanner)
|
||||
|
||||
@callback
|
||||
def _switchbot_device_unavailable_callback(_address: str) -> None:
|
||||
|
|
|
@ -28,7 +28,7 @@ async def test_scanner_by_source(hass: HomeAssistant, enable_bluetooth: None) ->
|
|||
"""Test we can get a scanner by source."""
|
||||
|
||||
hci2_scanner = FakeScanner("hci2", "hci2")
|
||||
cancel_hci2 = bluetooth.async_register_scanner(hass, hci2_scanner, True)
|
||||
cancel_hci2 = bluetooth.async_register_scanner(hass, hci2_scanner)
|
||||
|
||||
assert async_scanner_by_source(hass, "hci2") is hci2_scanner
|
||||
cancel_hci2()
|
||||
|
@ -74,9 +74,9 @@ async def test_async_scanner_devices_by_address_connectable(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeInjectableScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeInjectableScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
switchbot_device = generate_ble_device(
|
||||
"44:44:33:11:23:45",
|
||||
"wohand",
|
||||
|
@ -141,7 +141,7 @@ async def test_async_scanner_devices_by_address_non_connectable(
|
|||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeStaticScanner("esp32", "esp32", connector)
|
||||
cancel = manager.async_register_scanner(scanner, False)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
assert scanner.discovered_devices_and_advertisement_data == {
|
||||
switchbot_device.address: (switchbot_device, switchbot_device_adv)
|
||||
|
|
|
@ -116,7 +116,7 @@ async def test_remote_scanner(
|
|||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
scanner.inject_advertisement(switchbot_device, switchbot_device_adv)
|
||||
|
||||
|
@ -182,7 +182,7 @@ async def test_remote_scanner_expires_connectable(
|
|||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
start_time_monotonic = time.monotonic()
|
||||
scanner.inject_advertisement(switchbot_device, switchbot_device_adv)
|
||||
|
@ -234,9 +234,9 @@ async def test_remote_scanner_expires_non_connectable(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
start_time_monotonic = time.monotonic()
|
||||
scanner.inject_advertisement(switchbot_device, switchbot_device_adv)
|
||||
|
@ -308,9 +308,9 @@ async def test_base_scanner_connecting_behavior(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
with scanner.connecting():
|
||||
assert scanner.scanning is False
|
||||
|
@ -366,7 +366,7 @@ async def test_restore_history_remote_adapter(
|
|||
True,
|
||||
)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = _get_manager().async_register_scanner(scanner, True)
|
||||
cancel = _get_manager().async_register_scanner(scanner)
|
||||
|
||||
assert "EB:0B:36:35:6F:A4" in scanner.discovered_devices_and_advertisement_data
|
||||
assert "E3:A5:63:3E:5E:23" not in scanner.discovered_devices_and_advertisement_data
|
||||
|
@ -380,7 +380,7 @@ async def test_restore_history_remote_adapter(
|
|||
True,
|
||||
)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = _get_manager().async_register_scanner(scanner, True)
|
||||
cancel = _get_manager().async_register_scanner(scanner)
|
||||
assert "EB:0B:36:35:6F:A4" in scanner.discovered_devices_and_advertisement_data
|
||||
assert "E3:A5:63:3E:5E:23" not in scanner.discovered_devices_and_advertisement_data
|
||||
|
||||
|
@ -410,9 +410,9 @@ async def test_device_with_ten_minute_advertising_interval(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
monotonic_now = time.monotonic()
|
||||
new_time = monotonic_now
|
||||
|
@ -501,9 +501,9 @@ async def test_scanner_stops_responding(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
start_time_monotonic = time.monotonic()
|
||||
|
||||
|
|
|
@ -457,9 +457,9 @@ async def test_diagnostics_remote_adapter(
|
|||
connector = (
|
||||
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
|
||||
)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
unsetup = scanner.async_setup()
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
|
||||
scanner.inject_advertisement(switchbot_device, switchbot_adv)
|
||||
inject_advertisement(hass, switchbot_device, switchbot_adv)
|
||||
|
@ -511,7 +511,7 @@ async def test_diagnostics_remote_adapter(
|
|||
-127,
|
||||
[],
|
||||
],
|
||||
"connectable": False,
|
||||
"connectable": True,
|
||||
"device": {
|
||||
"__type": "<class 'bleak.backends.device.BLEDevice'>",
|
||||
"repr": "BLEDevice(44:44:33:11:23:45, wohand)",
|
||||
|
@ -537,7 +537,7 @@ async def test_diagnostics_remote_adapter(
|
|||
[],
|
||||
-127,
|
||||
-127,
|
||||
[[]],
|
||||
[],
|
||||
],
|
||||
"connectable": True,
|
||||
"device": {
|
||||
|
@ -551,7 +551,7 @@ async def test_diagnostics_remote_adapter(
|
|||
"rssi": -127,
|
||||
"service_data": {},
|
||||
"service_uuids": [],
|
||||
"source": "local",
|
||||
"source": "esp32",
|
||||
"time": ANY,
|
||||
}
|
||||
],
|
||||
|
@ -595,7 +595,7 @@ async def test_diagnostics_remote_adapter(
|
|||
"type": "FakeHaScanner",
|
||||
},
|
||||
{
|
||||
"connectable": False,
|
||||
"connectable": True,
|
||||
"discovered_device_timestamps": {"44:44:33:11:23:45": ANY},
|
||||
"discovered_devices_and_advertisement_data": [
|
||||
{
|
||||
|
|
|
@ -2816,7 +2816,7 @@ async def test_scanner_count_connectable(
|
|||
) -> None:
|
||||
"""Test getting the connectable scanner count."""
|
||||
scanner = FakeScanner("any", "any")
|
||||
cancel = bluetooth.async_register_scanner(hass, scanner, False)
|
||||
cancel = bluetooth.async_register_scanner(hass, scanner)
|
||||
assert bluetooth.async_scanner_count(hass, connectable=True) == 1
|
||||
cancel()
|
||||
|
||||
|
@ -2824,7 +2824,7 @@ async def test_scanner_count_connectable(
|
|||
async def test_scanner_count(hass: HomeAssistant, enable_bluetooth: None) -> None:
|
||||
"""Test getting the connectable and non-connectable scanner count."""
|
||||
scanner = FakeScanner("any", "any")
|
||||
cancel = bluetooth.async_register_scanner(hass, scanner, False)
|
||||
cancel = bluetooth.async_register_scanner(hass, scanner)
|
||||
assert bluetooth.async_scanner_count(hass, connectable=False) == 2
|
||||
cancel()
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ from tests.common import async_fire_time_changed, load_fixture
|
|||
def register_hci0_scanner(hass: HomeAssistant) -> Generator[None, None, None]:
|
||||
"""Register an hci0 scanner."""
|
||||
hci0_scanner = FakeScanner("hci0", "hci0")
|
||||
cancel = bluetooth.async_register_scanner(hass, hci0_scanner, True)
|
||||
cancel = bluetooth.async_register_scanner(hass, hci0_scanner)
|
||||
yield
|
||||
cancel()
|
||||
|
||||
|
@ -64,7 +64,7 @@ def register_hci0_scanner(hass: HomeAssistant) -> Generator[None, None, None]:
|
|||
def register_hci1_scanner(hass: HomeAssistant) -> Generator[None, None, None]:
|
||||
"""Register an hci1 scanner."""
|
||||
hci1_scanner = FakeScanner("hci1", "hci1")
|
||||
cancel = bluetooth.async_register_scanner(hass, hci1_scanner, True)
|
||||
cancel = bluetooth.async_register_scanner(hass, hci1_scanner)
|
||||
yield
|
||||
cancel()
|
||||
|
||||
|
@ -559,9 +559,7 @@ async def test_switching_adapters_when_one_goes_away(
|
|||
hass: HomeAssistant, enable_bluetooth: None, register_hci0_scanner: None
|
||||
) -> None:
|
||||
"""Test switching adapters when one goes away."""
|
||||
cancel_hci2 = bluetooth.async_register_scanner(
|
||||
hass, FakeScanner("hci2", "hci2"), True
|
||||
)
|
||||
cancel_hci2 = bluetooth.async_register_scanner(hass, FakeScanner("hci2", "hci2"))
|
||||
|
||||
address = "44:44:33:11:23:45"
|
||||
|
||||
|
@ -611,7 +609,7 @@ async def test_switching_adapters_when_one_stop_scanning(
|
|||
) -> None:
|
||||
"""Test switching adapters when stops scanning."""
|
||||
hci2_scanner = FakeScanner("hci2", "hci2")
|
||||
cancel_hci2 = bluetooth.async_register_scanner(hass, hci2_scanner, True)
|
||||
cancel_hci2 = bluetooth.async_register_scanner(hass, hci2_scanner)
|
||||
|
||||
address = "44:44:33:11:23:45"
|
||||
|
||||
|
@ -730,7 +728,7 @@ async def test_goes_unavailable_connectable_only_and_recovers(
|
|||
)
|
||||
unsetup_connectable_scanner = connectable_scanner.async_setup()
|
||||
cancel_connectable_scanner = _get_manager().async_register_scanner(
|
||||
connectable_scanner, True
|
||||
connectable_scanner
|
||||
)
|
||||
connectable_scanner.inject_advertisement(
|
||||
switchbot_device_connectable, switchbot_device_adv
|
||||
|
@ -752,7 +750,7 @@ async def test_goes_unavailable_connectable_only_and_recovers(
|
|||
)
|
||||
unsetup_not_connectable_scanner = not_connectable_scanner.async_setup()
|
||||
cancel_not_connectable_scanner = _get_manager().async_register_scanner(
|
||||
not_connectable_scanner, False
|
||||
not_connectable_scanner
|
||||
)
|
||||
not_connectable_scanner.inject_advertisement(
|
||||
switchbot_device_non_connectable, switchbot_device_adv
|
||||
|
@ -801,7 +799,7 @@ async def test_goes_unavailable_connectable_only_and_recovers(
|
|||
)
|
||||
unsetup_connectable_scanner_2 = connectable_scanner_2.async_setup()
|
||||
cancel_connectable_scanner_2 = _get_manager().async_register_scanner(
|
||||
connectable_scanner, True
|
||||
connectable_scanner
|
||||
)
|
||||
connectable_scanner_2.inject_advertisement(
|
||||
switchbot_device_connectable, switchbot_device_adv
|
||||
|
@ -902,7 +900,7 @@ async def test_goes_unavailable_dismisses_discovery_and_makes_discoverable(
|
|||
)
|
||||
unsetup_connectable_scanner = non_connectable_scanner.async_setup()
|
||||
cancel_connectable_scanner = _get_manager().async_register_scanner(
|
||||
non_connectable_scanner, True
|
||||
non_connectable_scanner
|
||||
)
|
||||
with patch.object(hass.config_entries.flow, "async_init") as mock_config_flow:
|
||||
non_connectable_scanner.inject_advertisement(
|
||||
|
@ -914,7 +912,7 @@ async def test_goes_unavailable_dismisses_discovery_and_makes_discoverable(
|
|||
assert mock_config_flow.mock_calls[0][1][0] == "switchbot"
|
||||
|
||||
assert async_ble_device_from_address(hass, "44:44:33:11:23:45", False) is not None
|
||||
assert async_scanner_count(hass, connectable=True) == 1
|
||||
assert async_scanner_count(hass, connectable=False) == 1
|
||||
assert len(callbacks) == 1
|
||||
|
||||
assert (
|
||||
|
|
|
@ -107,7 +107,8 @@ async def test_wrapped_bleak_client_local_adapter_only(
|
|||
"00:00:00:00:00:01",
|
||||
"hci0",
|
||||
)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
scanner.connectable = True
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
inject_advertisement_with_source(
|
||||
hass, switchbot_device, switchbot_adv, "00:00:00:00:00:01"
|
||||
)
|
||||
|
@ -187,7 +188,7 @@ async def test_wrapped_bleak_client_set_disconnected_callback_after_connected(
|
|||
connector,
|
||||
True,
|
||||
)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
inject_advertisement_with_source(
|
||||
hass, switchbot_device, switchbot_adv, "00:00:00:00:00:01"
|
||||
)
|
||||
|
@ -291,7 +292,7 @@ async def test_ble_device_with_proxy_client_out_of_connections(
|
|||
|
||||
connector = HaBluetoothConnector(MockBleakClient, "esp32", lambda: False)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
inject_advertisement_with_source(
|
||||
hass, switchbot_proxy_device_no_connection_slot, switchbot_adv, "esp32"
|
||||
)
|
||||
|
@ -356,7 +357,7 @@ async def test_ble_device_with_proxy_clear_cache(
|
|||
|
||||
connector = HaBluetoothConnector(MockBleakClient, "esp32", lambda: True)
|
||||
scanner = FakeScanner("esp32", "esp32", connector, True)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
inject_advertisement_with_source(
|
||||
hass, switchbot_proxy_device_with_connection_slot, switchbot_adv, "esp32"
|
||||
)
|
||||
|
@ -466,7 +467,7 @@ async def test_ble_device_with_proxy_client_out_of_connections_uses_best_availab
|
|||
connector,
|
||||
True,
|
||||
)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
assert manager.async_discovered_devices(True) == [
|
||||
switchbot_proxy_device_no_connection_slot
|
||||
]
|
||||
|
@ -578,7 +579,7 @@ async def test_ble_device_with_proxy_client_out_of_connections_uses_best_availab
|
|||
connector,
|
||||
True,
|
||||
)
|
||||
cancel = manager.async_register_scanner(scanner, True)
|
||||
cancel = manager.async_register_scanner(scanner)
|
||||
assert manager.async_discovered_devices(True) == [
|
||||
switchbot_proxy_device_no_connection_slot
|
||||
]
|
||||
|
|
|
@ -187,8 +187,8 @@ def _generate_scanners_with_fake_devices(hass):
|
|||
for device, adv_data in hci1_device_advs.values():
|
||||
scanner_hci1.inject_advertisement(device, adv_data)
|
||||
|
||||
cancel_hci0 = manager.async_register_scanner(scanner_hci0, True, 2)
|
||||
cancel_hci1 = manager.async_register_scanner(scanner_hci1, True, 1)
|
||||
cancel_hci0 = manager.async_register_scanner(scanner_hci0, connection_slots=2)
|
||||
cancel_hci1 = manager.async_register_scanner(scanner_hci1, connection_slots=1)
|
||||
|
||||
return hci0_device_advs, cancel_hci0, cancel_hci1
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue