ISY994: Add dhcp support for eisy (#85083)

This commit is contained in:
shbatm 2023-01-03 19:14:36 -06:00 committed by GitHub
parent 5169721916
commit e150b0cf0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 4 deletions

View File

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

View File

@ -20,6 +20,10 @@
"hostname": "isy*",
"macaddress": "0021B9*"
},
{
"hostname": "eisy*",
"macaddress": "0021B9*"
},
{
"hostname": "polisy*",
"macaddress": "000DB9*"

View File

@ -239,6 +239,11 @@ DHCP: list[dict[str, str | bool]] = [
"hostname": "isy*",
"macaddress": "0021B9*",
},
{
"domain": "isy994",
"hostname": "eisy*",
"macaddress": "0021B9*",
},
{
"domain": "isy994",
"hostname": "polisy*",

View File

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