Hide HomeKit devices from discovery that are known to be problematic (#44014)

This commit is contained in:
Jc2k 2020-12-07 12:51:35 +00:00 committed by GitHub
parent 727b1d37b6
commit 6ce45e39d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View file

@ -21,6 +21,14 @@ HOMEKIT_BRIDGE_DOMAIN = "homekit"
HOMEKIT_BRIDGE_SERIAL_NUMBER = "homekit.bridge"
HOMEKIT_BRIDGE_MODEL = "Home Assistant HomeKit Bridge"
HOMEKIT_IGNORE = [
# eufy Indoor Cam 2K Pan & Tilt
# https://github.com/home-assistant/core/issues/42307
"T8410",
# Hive Hub - vendor does not give user a pairing code
"HHKBridge1,1",
]
PAIRING_FILE = "pairing.json"
MDNS_SUFFIX = "._hap._tcp.local."
@ -255,6 +263,10 @@ class HomekitControllerFlowHandler(config_entries.ConfigFlow):
# Devices in HOMEKIT_IGNORE have native local integrations - users
# should be encouraged to use native integration and not confused
# by alternative HK API.
if model in HOMEKIT_IGNORE:
return self.async_abort(reason="ignored_model")
# If this is a HomeKit bridge exported by *this* HA instance ignore it.
if await self._hkid_is_homekit_bridge(hkid):
return self.async_abort(reason="ignored_model")

View file

@ -257,6 +257,21 @@ async def test_discovery_ignored_model(hass, controller):
"""Already paired."""
device = setup_mock_accessory(controller)
discovery_info = get_device_discovery_info(device)
discovery_info["properties"]["id"] = "AA:BB:CC:DD:EE:FF"
discovery_info["properties"]["md"] = "HHKBridge1,1"
# Device is discovered
result = await hass.config_entries.flow.async_init(
"homekit_controller", context={"source": "zeroconf"}, data=discovery_info
)
assert result["type"] == "abort"
assert result["reason"] == "ignored_model"
async def test_discovery_ignored_hk_bridge(hass, controller):
"""Already paired."""
device = setup_mock_accessory(controller)
discovery_info = get_device_discovery_info(device)
config_entry = MockConfigEntry(domain=config_flow.HOMEKIT_BRIDGE_DOMAIN, data={})
formatted_mac = device_registry.format_mac("AA:BB:CC:DD:EE:FF")