diff --git a/homeassistant/components/unifi/switch.py b/homeassistant/components/unifi/switch.py index 41c1f55a22a..18a3dbc3b90 100644 --- a/homeassistant/components/unifi/switch.py +++ b/homeassistant/components/unifi/switch.py @@ -199,6 +199,12 @@ class UnifiSwitchEntityDescription( only_event_for_state_change: bool = False +def _make_unique_id(obj_id: str, type_name: str) -> str: + """Split an object id by the first underscore and interpose the given type.""" + prefix, _, suffix = obj_id.partition("_") + return f"{prefix}-{type_name}-{suffix}" + + ENTITY_DESCRIPTIONS: tuple[UnifiSwitchEntityDescription, ...] = ( UnifiSwitchEntityDescription[Clients, Client]( key="Block client", @@ -256,7 +262,7 @@ ENTITY_DESCRIPTIONS: tuple[UnifiSwitchEntityDescription, ...] = ( object_fn=lambda api, obj_id: api.outlets[obj_id], should_poll=False, supported_fn=async_outlet_supports_switching_fn, - unique_id_fn=lambda controller, obj_id: f"{obj_id.split('_', 1)[0]}-outlet-{obj_id.split('_', 1)[1]}", + unique_id_fn=lambda controller, obj_id: _make_unique_id(obj_id, "outlet"), ), UnifiSwitchEntityDescription[PortForwarding, PortForward]( key="Port forward control", @@ -297,7 +303,7 @@ ENTITY_DESCRIPTIONS: tuple[UnifiSwitchEntityDescription, ...] = ( object_fn=lambda api, obj_id: api.ports[obj_id], should_poll=False, supported_fn=lambda controller, obj_id: controller.api.ports[obj_id].port_poe, - unique_id_fn=lambda controller, obj_id: f"{obj_id.split('_', 1)[0]}-poe-{obj_id.split('_', 1)[1]}", + unique_id_fn=lambda controller, obj_id: _make_unique_id(obj_id, "poe"), ), UnifiSwitchEntityDescription[Wlans, Wlan]( key="WLAN control",