mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +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:
|
if discovery_info.get(ssdp.ATTR_UPNP_DEVICE_TYPE) not in DmrDevice.DEVICE_TYPES:
|
||||||
return True
|
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
|
return False
|
||||||
|
@ -17,18 +17,6 @@
|
|||||||
{
|
{
|
||||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||||
"st": "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"],
|
"codeowners": ["@StevenLooman", "@chishm"],
|
||||||
|
@ -95,18 +95,6 @@ SSDP = {
|
|||||||
{
|
{
|
||||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||||
"st": "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": [
|
"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["type"] == data_entry_flow.RESULT_TYPE_ABORT
|
||||||
assert result["reason"] == "alternative_integration"
|
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:
|
async def test_unignore_flow(hass: HomeAssistant, ssdp_scanner_mock: Mock) -> None:
|
||||||
"""Test a config flow started by unignoring a device."""
|
"""Test a config flow started by unignoring a device."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user