diff --git a/homeassistant/components/hunterdouglas_powerview/config_flow.py b/homeassistant/components/hunterdouglas_powerview/config_flow.py index 869d703b641..6ff7a0027ba 100644 --- a/homeassistant/components/hunterdouglas_powerview/config_flow.py +++ b/homeassistant/components/hunterdouglas_powerview/config_flow.py @@ -19,6 +19,7 @@ _LOGGER = logging.getLogger(__name__) DATA_SCHEMA = vol.Schema({vol.Required(CONF_HOST): str}) HAP_SUFFIX = "._hap._tcp.local." +POWERVIEW_SUFFIX = "._powerview._tcp.local." async def validate_input(hass: core.HomeAssistant, hub_address: str) -> dict[str, str]: @@ -91,6 +92,15 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self.discovered_name = discovery_info[HOSTNAME] return await self.async_step_discovery_confirm() + async def async_step_zeroconf(self, discovery_info): + """Handle zeroconf discovery.""" + self.discovered_ip = discovery_info[CONF_HOST] + name = discovery_info[CONF_NAME] + if name.endswith(POWERVIEW_SUFFIX): + name = name[: -len(POWERVIEW_SUFFIX)] + self.discovered_name = name + return await self.async_step_discovery_confirm() + async def async_step_homekit(self, discovery_info): """Handle HomeKit discovery.""" self.discovered_ip = discovery_info[CONF_HOST] diff --git a/homeassistant/components/hunterdouglas_powerview/manifest.json b/homeassistant/components/hunterdouglas_powerview/manifest.json index 15a993d6d48..ad763a33bc8 100644 --- a/homeassistant/components/hunterdouglas_powerview/manifest.json +++ b/homeassistant/components/hunterdouglas_powerview/manifest.json @@ -14,5 +14,6 @@ "macaddress": "002674*" } ], + "zeroconf": ["_powerview._tcp.local."], "iot_class": "local_polling" } diff --git a/homeassistant/generated/zeroconf.py b/homeassistant/generated/zeroconf.py index 0826dc4a593..8b6075d9e3b 100644 --- a/homeassistant/generated/zeroconf.py +++ b/homeassistant/generated/zeroconf.py @@ -158,6 +158,11 @@ ZEROCONF = { "domain": "plugwise" } ], + "_powerview._tcp.local.": [ + { + "domain": "hunterdouglas_powerview" + } + ], "_printer._tcp.local.": [ { "domain": "brother", diff --git a/tests/components/hunterdouglas_powerview/test_config_flow.py b/tests/components/hunterdouglas_powerview/test_config_flow.py index 60ee532c73f..712ebea64a9 100644 --- a/tests/components/hunterdouglas_powerview/test_config_flow.py +++ b/tests/components/hunterdouglas_powerview/test_config_flow.py @@ -16,6 +16,11 @@ HOMEKIT_DISCOVERY_INFO = { "properties": {"id": "AA::BB::CC::DD::EE::FF"}, } +ZEROCONF_DISCOVERY_INFO = { + "name": "Hunter Douglas Powerview Hub._powerview._tcp.local.", + "host": "1.2.3.4", +} + DHCP_DISCOVERY_INFO = {"hostname": "Hunter Douglas Powerview Hub", "ip": "1.2.3.4"} DISCOVERY_DATA = [ @@ -27,6 +32,7 @@ DISCOVERY_DATA = [ config_entries.SOURCE_DHCP, DHCP_DISCOVERY_INFO, ), + (config_entries.SOURCE_ZEROCONF, ZEROCONF_DISCOVERY_INFO), ]