From d84722c3c2af035cc136baaf788185012d0a2457 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Mon, 11 Oct 2021 11:35:29 +0200 Subject: [PATCH] Fix Netgear orbi port in ssdp discovery (#57432) --- homeassistant/components/netgear/config_flow.py | 15 ++++++++++++--- homeassistant/components/netgear/const.py | 1 + tests/components/netgear/test_config_flow.py | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/netgear/config_flow.py b/homeassistant/components/netgear/config_flow.py index 62985c7104c..871cba5a95d 100644 --- a/homeassistant/components/netgear/config_flow.py +++ b/homeassistant/components/netgear/config_flow.py @@ -17,7 +17,14 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.data_entry_flow import FlowResult -from .const import CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME, DEFAULT_NAME, DOMAIN +from .const import ( + CONF_CONSIDER_HOME, + DEFAULT_CONSIDER_HOME, + DEFAULT_NAME, + DOMAIN, + MODELS_V2, + ORBI_PORT, +) from .errors import CannotLoginException from .router import get_api @@ -133,8 +140,10 @@ class NetgearFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): await self.async_set_unique_id(discovery_info[ssdp.ATTR_UPNP_SERIAL]) self._abort_if_unique_id_configured(updates=updated_data) - if device_url.port: - updated_data[CONF_PORT] = device_url.port + updated_data[CONF_PORT] = DEFAULT_PORT + for model in MODELS_V2: + if discovery_info.get(ssdp.ATTR_UPNP_MODEL_NUMBER, "").startswith(model): + updated_data[CONF_PORT] = ORBI_PORT self.placeholders.update(updated_data) self.discovered = True diff --git a/homeassistant/components/netgear/const.py b/homeassistant/components/netgear/const.py index bfcf76a6119..cba2d7ff875 100644 --- a/homeassistant/components/netgear/const.py +++ b/homeassistant/components/netgear/const.py @@ -29,6 +29,7 @@ MODELS_V2 = [ "SXR", "SXS", ] +ORBI_PORT = 80 # Icons DEVICE_ICONS = { diff --git a/tests/components/netgear/test_config_flow.py b/tests/components/netgear/test_config_flow.py index de4f4fba510..ad060b60d36 100644 --- a/tests/components/netgear/test_config_flow.py +++ b/tests/components/netgear/test_config_flow.py @@ -7,7 +7,7 @@ import pytest from homeassistant import data_entry_flow from homeassistant.components import ssdp -from homeassistant.components.netgear.const import CONF_CONSIDER_HOME, DOMAIN +from homeassistant.components.netgear.const import CONF_CONSIDER_HOME, DOMAIN, ORBI_PORT from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_SSDP, SOURCE_USER from homeassistant.const import ( CONF_HOST, @@ -247,7 +247,7 @@ async def test_ssdp(hass, service): assert result["result"].unique_id == SERIAL assert result["title"] == TITLE assert result["data"].get(CONF_HOST) == HOST - assert result["data"].get(CONF_PORT) == PORT + assert result["data"].get(CONF_PORT) == ORBI_PORT assert result["data"].get(CONF_SSL) == SSL assert result["data"].get(CONF_USERNAME) == DEFAULT_USER assert result["data"][CONF_PASSWORD] == PASSWORD