mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Send back BLE address type when connecting via esphome proxies (#82890)
This commit is contained in:
parent
1748a19242
commit
46b18367f7
@ -73,6 +73,7 @@ class BaseHaScanner:
|
|||||||
"address": device_adv[0].address,
|
"address": device_adv[0].address,
|
||||||
"rssi": device_adv[0].rssi,
|
"rssi": device_adv[0].rssi,
|
||||||
"advertisement_data": device_adv[1],
|
"advertisement_data": device_adv[1],
|
||||||
|
"details": device_adv[0].details,
|
||||||
}
|
}
|
||||||
for device_adv in self.discovered_devices_and_advertisement_data.values()
|
for device_adv in self.discovered_devices_and_advertisement_data.values()
|
||||||
],
|
],
|
||||||
@ -162,6 +163,7 @@ class BaseHaRemoteScanner(BaseHaScanner):
|
|||||||
service_data: dict[str, bytes],
|
service_data: dict[str, bytes],
|
||||||
manufacturer_data: dict[int, bytes],
|
manufacturer_data: dict[int, bytes],
|
||||||
tx_power: int | None,
|
tx_power: int | None,
|
||||||
|
details: dict[Any, Any],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Call the registered callback."""
|
"""Call the registered callback."""
|
||||||
now = MONOTONIC_TIME()
|
now = MONOTONIC_TIME()
|
||||||
@ -201,7 +203,7 @@ class BaseHaRemoteScanner(BaseHaScanner):
|
|||||||
device = BLEDevice( # type: ignore[no-untyped-call]
|
device = BLEDevice( # type: ignore[no-untyped-call]
|
||||||
address=address,
|
address=address,
|
||||||
name=local_name,
|
name=local_name,
|
||||||
details=self._details,
|
details=self._details | details,
|
||||||
rssi=rssi, # deprecated, will be removed in newer bleak
|
rssi=rssi, # deprecated, will be removed in newer bleak
|
||||||
)
|
)
|
||||||
self._discovered_device_advertisement_datas[address] = (
|
self._discovered_device_advertisement_datas[address] = (
|
||||||
|
@ -147,6 +147,7 @@ class ESPHomeClient(BaseBleakClient):
|
|||||||
device_info = self.entry_data.device_info
|
device_info = self.entry_data.device_info
|
||||||
assert device_info is not None
|
assert device_info is not None
|
||||||
self._connection_version = device_info.bluetooth_proxy_version
|
self._connection_version = device_info.bluetooth_proxy_version
|
||||||
|
self._address_type = address_or_ble_device.details["address_type"]
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
"""Return the string representation of the client."""
|
"""Return the string representation of the client."""
|
||||||
@ -292,6 +293,7 @@ class ESPHomeClient(BaseBleakClient):
|
|||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
has_cache=has_cache,
|
has_cache=has_cache,
|
||||||
version=self._connection_version,
|
version=self._connection_version,
|
||||||
|
address_type=self._address_type,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except Exception: # pylint: disable=broad-except
|
except Exception: # pylint: disable=broad-except
|
||||||
|
@ -27,6 +27,7 @@ class ESPHomeScanner(BaseHaRemoteScanner):
|
|||||||
adv.service_data,
|
adv.service_data,
|
||||||
adv.manufacturer_data,
|
adv.manufacturer_data,
|
||||||
None,
|
None,
|
||||||
|
{"address_type": adv.address_type},
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_diagnostics(self) -> dict[str, Any]:
|
async def async_diagnostics(self) -> dict[str, Any]:
|
||||||
@ -39,6 +40,7 @@ class ESPHomeScanner(BaseHaRemoteScanner):
|
|||||||
"address": device_adv[0].address,
|
"address": device_adv[0].address,
|
||||||
"rssi": device_adv[0].rssi,
|
"rssi": device_adv[0].rssi,
|
||||||
"advertisement_data": device_adv[1],
|
"advertisement_data": device_adv[1],
|
||||||
|
"details": device_adv[0].details,
|
||||||
}
|
}
|
||||||
for device_adv in self.discovered_devices_and_advertisement_data.values()
|
for device_adv in self.discovered_devices_and_advertisement_data.values()
|
||||||
],
|
],
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"name": "ESPHome",
|
"name": "ESPHome",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/esphome",
|
"documentation": "https://www.home-assistant.io/integrations/esphome",
|
||||||
"requirements": ["aioesphomeapi==12.1.0"],
|
"requirements": ["aioesphomeapi==12.2.0"],
|
||||||
"zeroconf": ["_esphomelib._tcp.local."],
|
"zeroconf": ["_esphomelib._tcp.local."],
|
||||||
"dhcp": [{ "registered_devices": true }],
|
"dhcp": [{ "registered_devices": true }],
|
||||||
"codeowners": ["@OttoWinter", "@jesserockz"],
|
"codeowners": ["@OttoWinter", "@jesserockz"],
|
||||||
|
@ -44,4 +44,5 @@ class ShellyBLEScanner(BaseHaRemoteScanner):
|
|||||||
parsed.service_data,
|
parsed.service_data,
|
||||||
parsed.manufacturer_data,
|
parsed.manufacturer_data,
|
||||||
parsed.tx_power,
|
parsed.tx_power,
|
||||||
|
{},
|
||||||
)
|
)
|
||||||
|
@ -156,7 +156,7 @@ aioecowitt==2022.09.3
|
|||||||
aioemonitor==1.0.5
|
aioemonitor==1.0.5
|
||||||
|
|
||||||
# homeassistant.components.esphome
|
# homeassistant.components.esphome
|
||||||
aioesphomeapi==12.1.0
|
aioesphomeapi==12.2.0
|
||||||
|
|
||||||
# homeassistant.components.flo
|
# homeassistant.components.flo
|
||||||
aioflo==2021.11.0
|
aioflo==2021.11.0
|
||||||
|
@ -143,7 +143,7 @@ aioecowitt==2022.09.3
|
|||||||
aioemonitor==1.0.5
|
aioemonitor==1.0.5
|
||||||
|
|
||||||
# homeassistant.components.esphome
|
# homeassistant.components.esphome
|
||||||
aioesphomeapi==12.1.0
|
aioesphomeapi==12.2.0
|
||||||
|
|
||||||
# homeassistant.components.flo
|
# homeassistant.components.flo
|
||||||
aioflo==2021.11.0
|
aioflo==2021.11.0
|
||||||
|
@ -64,6 +64,7 @@ async def test_remote_scanner(hass, enable_bluetooth):
|
|||||||
advertisement_data.service_data,
|
advertisement_data.service_data,
|
||||||
advertisement_data.manufacturer_data,
|
advertisement_data.manufacturer_data,
|
||||||
advertisement_data.tx_power,
|
advertisement_data.tx_power,
|
||||||
|
{"scanner_specific_data": "test"},
|
||||||
)
|
)
|
||||||
|
|
||||||
new_info_callback = manager.scanner_adv_received
|
new_info_callback = manager.scanner_adv_received
|
||||||
@ -134,6 +135,7 @@ async def test_remote_scanner_expires_connectable(hass, enable_bluetooth):
|
|||||||
advertisement_data.service_data,
|
advertisement_data.service_data,
|
||||||
advertisement_data.manufacturer_data,
|
advertisement_data.manufacturer_data,
|
||||||
advertisement_data.tx_power,
|
advertisement_data.tx_power,
|
||||||
|
{"scanner_specific_data": "test"},
|
||||||
)
|
)
|
||||||
|
|
||||||
new_info_callback = manager.scanner_adv_received
|
new_info_callback = manager.scanner_adv_received
|
||||||
@ -204,6 +206,7 @@ async def test_remote_scanner_expires_non_connectable(hass, enable_bluetooth):
|
|||||||
advertisement_data.service_data,
|
advertisement_data.service_data,
|
||||||
advertisement_data.manufacturer_data,
|
advertisement_data.manufacturer_data,
|
||||||
advertisement_data.tx_power,
|
advertisement_data.tx_power,
|
||||||
|
{"scanner_specific_data": "test"},
|
||||||
)
|
)
|
||||||
|
|
||||||
new_info_callback = manager.scanner_adv_received
|
new_info_callback = manager.scanner_adv_received
|
||||||
@ -297,6 +300,7 @@ async def test_base_scanner_connecting_behavior(hass, enable_bluetooth):
|
|||||||
advertisement_data.service_data,
|
advertisement_data.service_data,
|
||||||
advertisement_data.manufacturer_data,
|
advertisement_data.manufacturer_data,
|
||||||
advertisement_data.tx_power,
|
advertisement_data.tx_power,
|
||||||
|
{"scanner_specific_data": "test"},
|
||||||
)
|
)
|
||||||
|
|
||||||
new_info_callback = manager.scanner_adv_received
|
new_info_callback = manager.scanner_adv_received
|
||||||
|
@ -155,6 +155,7 @@ async def test_diagnostics(
|
|||||||
],
|
],
|
||||||
"name": "x",
|
"name": "x",
|
||||||
"rssi": -60,
|
"rssi": -60,
|
||||||
|
"details": None,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"last_detection": ANY,
|
"last_detection": ANY,
|
||||||
@ -179,6 +180,7 @@ async def test_diagnostics(
|
|||||||
],
|
],
|
||||||
"name": "x",
|
"name": "x",
|
||||||
"rssi": -60,
|
"rssi": -60,
|
||||||
|
"details": None,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"last_detection": ANY,
|
"last_detection": ANY,
|
||||||
@ -203,6 +205,7 @@ async def test_diagnostics(
|
|||||||
],
|
],
|
||||||
"name": "x",
|
"name": "x",
|
||||||
"rssi": -60,
|
"rssi": -60,
|
||||||
|
"details": None,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"last_detection": ANY,
|
"last_detection": ANY,
|
||||||
@ -366,6 +369,7 @@ async def test_diagnostics_macos(
|
|||||||
],
|
],
|
||||||
"name": "x",
|
"name": "x",
|
||||||
"rssi": -60,
|
"rssi": -60,
|
||||||
|
"details": None,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"last_detection": ANY,
|
"last_detection": ANY,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user