diff --git a/homeassistant/components/isy994/config_flow.py b/homeassistant/components/isy994/config_flow.py index 8267853e0ac..3c058689bf8 100644 --- a/homeassistant/components/isy994/config_flow.py +++ b/homeassistant/components/isy994/config_flow.py @@ -202,7 +202,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult: """Handle a discovered ISY/IoX device via dhcp.""" friendly_name = discovery_info.hostname - if friendly_name.startswith("polisy"): + if friendly_name.startswith("polisy") or friendly_name.startswith("eisy"): url = f"http://{discovery_info.ip}:8080" else: url = f"http://{discovery_info.ip}" diff --git a/homeassistant/components/isy994/manifest.json b/homeassistant/components/isy994/manifest.json index f716999a322..5e559ca6a29 100644 --- a/homeassistant/components/isy994/manifest.json +++ b/homeassistant/components/isy994/manifest.json @@ -20,6 +20,10 @@ "hostname": "isy*", "macaddress": "0021B9*" }, + { + "hostname": "eisy*", + "macaddress": "0021B9*" + }, { "hostname": "polisy*", "macaddress": "000DB9*" diff --git a/homeassistant/generated/dhcp.py b/homeassistant/generated/dhcp.py index 6ad3456b254..8b8a24de876 100644 --- a/homeassistant/generated/dhcp.py +++ b/homeassistant/generated/dhcp.py @@ -239,6 +239,11 @@ DHCP: list[dict[str, str | bool]] = [ "hostname": "isy*", "macaddress": "0021B9*", }, + { + "domain": "isy994", + "hostname": "eisy*", + "macaddress": "0021B9*", + }, { "domain": "isy994", "hostname": "polisy*", diff --git a/tests/components/isy994/test_config_flow.py b/tests/components/isy994/test_config_flow.py index 14efcd94cae..c6d20daec72 100644 --- a/tests/components/isy994/test_config_flow.py +++ b/tests/components/isy994/test_config_flow.py @@ -44,7 +44,7 @@ MOCK_USER_INPUT = { CONF_PASSWORD: MOCK_PASSWORD, CONF_TLS_VER: MOCK_TLS_VERSION, } -MOCK_POLISY_USER_INPUT = { +MOCK_IOX_USER_INPUT = { CONF_HOST: f"http://{MOCK_HOSTNAME}:8080", CONF_USERNAME: MOCK_USERNAME, CONF_PASSWORD: MOCK_PASSWORD, @@ -587,14 +587,54 @@ async def test_form_dhcp_with_polisy(hass: HomeAssistant): ) as mock_setup_entry: result2 = await hass.config_entries.flow.async_configure( result["flow_id"], - MOCK_POLISY_USER_INPUT, + MOCK_IOX_USER_INPUT, ) await hass.async_block_till_done() assert result2["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})" assert result2["result"].unique_id == MOCK_UUID - assert result2["data"] == MOCK_POLISY_USER_INPUT + assert result2["data"] == MOCK_IOX_USER_INPUT + assert len(mock_setup.mock_calls) == 1 + assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_form_dhcp_with_eisy(hass: HomeAssistant): + """Test we can setup from dhcp with eisy.""" + + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_DHCP}, + data=dhcp.DhcpServiceInfo( + ip="1.2.3.4", + hostname="eisy", + macaddress=MOCK_MAC, + ), + ) + assert result["type"] == data_entry_flow.FlowResultType.FORM + assert result["step_id"] == "user" + assert result["errors"] == {} + assert ( + _get_schema_default(result["data_schema"].schema, CONF_HOST) + == "http://1.2.3.4:8080" + ) + + with patch(PATCH_CONNECTION, return_value=MOCK_CONFIG_RESPONSE), patch( + PATCH_ASYNC_SETUP, return_value=True + ) as mock_setup, patch( + PATCH_ASYNC_SETUP_ENTRY, + return_value=True, + ) as mock_setup_entry: + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + MOCK_IOX_USER_INPUT, + ) + await hass.async_block_till_done() + + assert result2["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY + assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})" + assert result2["result"].unique_id == MOCK_UUID + assert result2["data"] == MOCK_IOX_USER_INPUT assert len(mock_setup.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1