From 3abb4bd3e5bae108d0819c88fdcc80e0a1a9d3a3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 24 Oct 2021 21:37:37 -1000 Subject: [PATCH] Add configuration_url to isy994 (#58372) --- homeassistant/components/isy994/__init__.py | 11 ++++++++++- homeassistant/components/isy994/entity.py | 7 ++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/isy994/__init__.py b/homeassistant/components/isy994/__init__.py index a5ceeaea1d8..65be6a74c19 100644 --- a/homeassistant/components/isy994/__init__.py +++ b/homeassistant/components/isy994/__init__.py @@ -251,11 +251,19 @@ def _async_import_options_from_data_if_missing( hass.config_entries.async_update_entry(entry, options=options) +@callback +def _async_isy_to_configuration_url(isy: ISY) -> str: + """Extract the configuration url from the isy.""" + connection_info = isy.conn.connection_info + proto = "https" if "tls" in connection_info else "http" + return f"{proto}://{connection_info['addr']}:{connection_info['port']}" + + async def _async_get_or_create_isy_device_in_registry( hass: HomeAssistant, entry: config_entries.ConfigEntry, isy ) -> None: device_registry = await dr.async_get_registry(hass) - + url = _async_isy_to_configuration_url(isy) device_registry.async_get_or_create( config_entry_id=entry.entry_id, connections={(dr.CONNECTION_NETWORK_MAC, isy.configuration["uuid"])}, @@ -264,6 +272,7 @@ async def _async_get_or_create_isy_device_in_registry( name=isy.configuration["name"], model=isy.configuration["model"], sw_version=isy.configuration["firmware"], + configuration_url=url, ) diff --git a/homeassistant/components/isy994/entity.py b/homeassistant/components/isy994/entity.py index a0a898206f5..aca0dbf5d3d 100644 --- a/homeassistant/components/isy994/entity.py +++ b/homeassistant/components/isy994/entity.py @@ -23,6 +23,7 @@ from homeassistant.core import callback from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity import DeviceInfo, Entity +from . import _async_isy_to_configuration_url from .const import DOMAIN @@ -76,8 +77,11 @@ class ISYEntity(Entity): if hasattr(self._node, "protocol") and self._node.protocol == PROTO_GROUP: # not a device return None - uuid = self._node.isy.configuration["uuid"] + isy = self._node.isy + uuid = isy.configuration["uuid"] node = self._node + url = _async_isy_to_configuration_url(isy) + basename = self.name if hasattr(self._node, "parent_node") and self._node.parent_node is not None: @@ -91,6 +95,7 @@ class ISYEntity(Entity): model="Unknown", name=basename, via_device=(DOMAIN, uuid), + configuration_url=url, ) if hasattr(node, "address"):