dlna_dmr: less eager discovery (#58780)

This commit is contained in:
Michael Chisholm 2021-11-01 02:11:20 +11:00 committed by GitHub
parent faecc90b38
commit ce27fb87c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 24 deletions

View File

@ -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

View File

@ -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"],

View File

@ -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": [

View File

@ -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."""