Correctly handle device triggers for missing ZHA devices (#74894)
This commit is contained in:
parent
6f9fcdff99
commit
240a83239a
2 changed files with 39 additions and 1 deletions
|
@ -170,7 +170,7 @@ def async_get_zha_device(hass: HomeAssistant, device_id: str) -> ZHADevice:
|
|||
device_registry = dr.async_get(hass)
|
||||
registry_device = device_registry.async_get(device_id)
|
||||
if not registry_device:
|
||||
raise ValueError(f"Device id `{device_id}` not found in registry.")
|
||||
raise KeyError(f"Device id `{device_id}` not found in registry.")
|
||||
zha_gateway: ZHAGateway = hass.data[DATA_ZHA][DATA_ZHA_GATEWAY]
|
||||
ieee_address = list(list(registry_device.identifiers)[0])[1]
|
||||
ieee = zigpy.types.EUI64.convert(ieee_address)
|
||||
|
|
|
@ -370,3 +370,41 @@ async def test_exception_bad_trigger(hass, mock_devices, calls, caplog):
|
|||
)
|
||||
await hass.async_block_till_done()
|
||||
assert "Invalid config for [automation]" in caplog.text
|
||||
|
||||
|
||||
async def test_exception_no_device(hass, mock_devices, calls, caplog):
|
||||
"""Test for exception on event triggers firing."""
|
||||
|
||||
zigpy_device, zha_device = mock_devices
|
||||
|
||||
zigpy_device.device_automation_triggers = {
|
||||
(SHAKEN, SHAKEN): {COMMAND: COMMAND_SHAKE},
|
||||
(DOUBLE_PRESS, DOUBLE_PRESS): {COMMAND: COMMAND_DOUBLE},
|
||||
(SHORT_PRESS, SHORT_PRESS): {COMMAND: COMMAND_SINGLE},
|
||||
(LONG_PRESS, LONG_PRESS): {COMMAND: COMMAND_HOLD},
|
||||
(LONG_RELEASE, LONG_RELEASE): {COMMAND: COMMAND_HOLD},
|
||||
}
|
||||
|
||||
await async_setup_component(
|
||||
hass,
|
||||
automation.DOMAIN,
|
||||
{
|
||||
automation.DOMAIN: [
|
||||
{
|
||||
"trigger": {
|
||||
"device_id": "no_such_device_id",
|
||||
"domain": "zha",
|
||||
"platform": "device",
|
||||
"type": "junk",
|
||||
"subtype": "junk",
|
||||
},
|
||||
"action": {
|
||||
"service": "test.automation",
|
||||
"data": {"message": "service called"},
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert "Invalid config for [automation]" in caplog.text
|
||||
|
|
Loading…
Add table
Reference in a new issue