mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 04:37:06 +00:00
dlna_dmr: less eager discovery (#58780)
This commit is contained in:
parent
faecc90b38
commit
ce27fb87c6
@ -470,4 +470,20 @@ def _is_ignored_device(discovery_info: Mapping[str, Any]) -> bool:
|
||||
if discovery_info.get(ssdp.ATTR_UPNP_DEVICE_TYPE) not in DmrDevice.DEVICE_TYPES:
|
||||
return True
|
||||
|
||||
# Special cases for devices with other discovery methods (e.g. mDNS), or
|
||||
# that advertise multiple unrelated (sent in separate discovery packets)
|
||||
# UPnP devices.
|
||||
manufacturer = discovery_info.get(ssdp.ATTR_UPNP_MANUFACTURER, "").lower()
|
||||
model = discovery_info.get(ssdp.ATTR_UPNP_MODEL_NAME, "").lower()
|
||||
|
||||
if manufacturer.startswith("xbmc") or model == "kodi":
|
||||
# kodi
|
||||
return True
|
||||
if manufacturer.startswith("samsung") and "tv" in model:
|
||||
# samsungtv
|
||||
return True
|
||||
if manufacturer.startswith("lg") and "tv" in model:
|
||||
# webostv
|
||||
return True
|
||||
|
||||
return False
|
||||
|
@ -17,18 +17,6 @@
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:3"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:1"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:2"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:3"
|
||||
}
|
||||
],
|
||||
"codeowners": ["@StevenLooman", "@chishm"],
|
||||
|
@ -95,18 +95,6 @@ SSDP = {
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:3"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:1"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:2"
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
"nt": "urn:schemas-upnp-org:device:MediaRenderer:3"
|
||||
}
|
||||
],
|
||||
"fritz": [
|
||||
|
@ -631,6 +631,22 @@ async def test_ssdp_ignore_device(hass: HomeAssistant) -> None:
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
|
||||
assert result["reason"] == "alternative_integration"
|
||||
|
||||
for manufacturer, model in [
|
||||
("XBMC Foundation", "Kodi"),
|
||||
("Samsung", "Smart TV"),
|
||||
("LG Electronics.", "LG TV"),
|
||||
]:
|
||||
discovery = dict(MOCK_DISCOVERY)
|
||||
discovery[ssdp.ATTR_UPNP_MANUFACTURER] = manufacturer
|
||||
discovery[ssdp.ATTR_UPNP_MODEL_NAME] = model
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DLNA_DOMAIN,
|
||||
context={"source": config_entries.SOURCE_SSDP},
|
||||
data=discovery,
|
||||
)
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
|
||||
assert result["reason"] == "alternative_integration"
|
||||
|
||||
|
||||
async def test_unignore_flow(hass: HomeAssistant, ssdp_scanner_mock: Mock) -> None:
|
||||
"""Test a config flow started by unignoring a device."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user