diff --git a/homeassistant/components/rfxtrx/helpers.py b/homeassistant/components/rfxtrx/helpers.py index 2badc6d4ca5..cfc16126359 100644 --- a/homeassistant/components/rfxtrx/helpers.py +++ b/homeassistant/components/rfxtrx/helpers.py @@ -6,6 +6,8 @@ from RFXtrx import RFXtrxDevice, get_device from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import device_registry as dr +from . import get_device_tuple_from_identifiers + @callback def async_get_device_object(hass: HomeAssistant, device_id: str) -> RFXtrxDevice: @@ -15,7 +17,9 @@ def async_get_device_object(hass: HomeAssistant, device_id: str) -> RFXtrxDevice if registry_device is None: raise ValueError(f"Device {device_id} not found") - device_tuple = list(list(registry_device.identifiers)[0]) + device_tuple = get_device_tuple_from_identifiers(registry_device.identifiers) + assert device_tuple + return get_device( - int(device_tuple[1], 16), int(device_tuple[2], 16), device_tuple[3] + int(device_tuple[0], 16), int(device_tuple[1], 16), device_tuple[2] ) diff --git a/tests/components/rfxtrx/test_device_action.py b/tests/components/rfxtrx/test_device_action.py index 843f5a310ad..c4613d67282 100644 --- a/tests/components/rfxtrx/test_device_action.py +++ b/tests/components/rfxtrx/test_device_action.py @@ -89,6 +89,14 @@ async def test_get_actions( device_entry = device_registry.async_get_device(device.device_identifiers, set()) assert device_entry + # Add alternate identifiers, to make sure we can handle future formats + identifiers: list[str] = list(*device_entry.identifiers) + device_registry.async_update_device( + device_entry.id, merge_identifiers={(identifiers[0], "_".join(identifiers[1:]))} + ) + device_entry = device_registry.async_get_device(device.device_identifiers, set()) + assert device_entry + actions = await async_get_device_automations( hass, DeviceAutomationType.ACTION, device_entry.id ) diff --git a/tests/components/rfxtrx/test_device_trigger.py b/tests/components/rfxtrx/test_device_trigger.py index 78d6748a117..c33e6c94f64 100644 --- a/tests/components/rfxtrx/test_device_trigger.py +++ b/tests/components/rfxtrx/test_device_trigger.py @@ -88,6 +88,15 @@ async def test_get_triggers( await setup_entry(hass, {event.code: {}}) device_entry = device_registry.async_get_device(event.device_identifiers, set()) + assert device_entry + + # Add alternate identifiers, to make sure we can handle future formats + identifiers: list[str] = list(*event.device_identifiers) + device_registry.async_update_device( + device_entry.id, merge_identifiers={(identifiers[0], "_".join(identifiers[1:]))} + ) + device_entry = device_registry.async_get_device(event.device_identifiers, set()) + assert device_entry expected_triggers = [ {