From 4326cb96eae1edb278d7ed874fed5deb46072c36 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 13 Mar 2026 20:14:58 +0100 Subject: [PATCH] Add zigbee address to SmartThings devices (#165474) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../components/smartthings/__init__.py | 17 ++++++ .../smartthings/snapshots/test_init.ambr | 52 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/homeassistant/components/smartthings/__init__.py b/homeassistant/components/smartthings/__init__.py index 59a53607a3a..5cfedf80d71 100644 --- a/homeassistant/components/smartthings/__init__.py +++ b/homeassistant/components/smartthings/__init__.py @@ -74,6 +74,11 @@ from .const import ( _LOGGER = logging.getLogger(__name__) +def format_zigbee_address(address: str) -> str: + """Format a zigbee address to be more readable.""" + return ":".join(address.lower()[i : i + 2] for i in range(0, 16, 2)) + + @dataclass class SmartThingsData: """Define an object to hold SmartThings data.""" @@ -490,6 +495,14 @@ def create_devices( kwargs[ATTR_CONNECTIONS] = { (dr.CONNECTION_NETWORK_MAC, device.device.hub.mac_address) } + if device.device.hub.hub_eui: + connections = kwargs.setdefault(ATTR_CONNECTIONS, set()) + connections.add( + ( + dr.CONNECTION_ZIGBEE, + format_zigbee_address(device.device.hub.hub_eui), + ) + ) if device.device.parent_device_id and device.device.parent_device_id in devices: kwargs[ATTR_VIA_DEVICE] = (DOMAIN, device.device.parent_device_id) if (ocf := device.device.ocf) is not None: @@ -513,6 +526,10 @@ def create_devices( ATTR_SW_VERSION: viper.software_version, } ) + if (zigbee := device.device.zigbee) is not None: + kwargs[ATTR_CONNECTIONS] = { + (dr.CONNECTION_ZIGBEE, format_zigbee_address(zigbee.eui)) + } if (matter := device.device.matter) is not None: kwargs.update( { diff --git a/tests/components/smartthings/snapshots/test_init.ambr b/tests/components/smartthings/snapshots/test_init.ambr index f112056c3f6..3153117cd64 100644 --- a/tests/components/smartthings/snapshots/test_init.ambr +++ b/tests/components/smartthings/snapshots/test_init.ambr @@ -106,6 +106,10 @@ 'mac', '68:3a:48:50:1a:75', ), + tuple( + 'zigbee', + 'd0:52:a8:13:a0:fe:00:01', + ), }), 'disabled_by': None, 'entry_type': None, @@ -137,6 +141,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '0c:ae:5f:ff:fe:ce:43:28', + ), }), 'disabled_by': None, 'entry_type': None, @@ -323,6 +331,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '00:0d:6f:00:03:c0:4b:c9', + ), }), 'disabled_by': None, 'entry_type': None, @@ -354,6 +366,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '00:0d:6f:00:05:76:f6:04', + ), }), 'disabled_by': None, 'entry_type': None, @@ -1656,6 +1672,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + 'a4:c1:38:c5:24:a5:bc:8d', + ), }), 'disabled_by': None, 'entry_type': None, @@ -1749,6 +1769,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + 'a4:c1:38:8b:31:01:7b:5f', + ), }), 'disabled_by': None, 'entry_type': None, @@ -1966,6 +1990,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '00:0d:6f:ff:fe:2a:d0:e7', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2059,6 +2087,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '98:32:68:ff:fe:38:2c:fb', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2183,6 +2215,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '00:15:8d:00:09:67:92:4a', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2245,6 +2281,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '24:fd:5b:00:01:0a:ed:6b', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2369,6 +2409,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + 'f0:d1:b8:00:00:05:1e:05', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2710,6 +2754,10 @@ 'config_entries_subentries': , 'configuration_url': 'https://account.smartthings.com', 'connections': set({ + tuple( + 'zigbee', + '00:0d:6f:00:02:fb:6e:24', + ), }), 'disabled_by': None, 'entry_type': None, @@ -2745,6 +2793,10 @@ 'mac', 'd0:52:a8:72:91:02', ), + tuple( + 'zigbee', + 'd0:52:a8:72:94:7a:00:01', + ), }), 'disabled_by': None, 'entry_type': None,