Fix HKC device triggers (#75371)

pull/75528/head
J. Nick Koston 2022-07-17 12:56:07 -05:00 committed by Franck Nijhof
parent 219d1a8a1e
commit 630f731020
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
1 changed files with 6 additions and 6 deletions

View File

@ -16,7 +16,7 @@ from homeassistant.components.automation import (
) )
from homeassistant.components.device_automation import DEVICE_TRIGGER_BASE_SCHEMA from homeassistant.components.device_automation import DEVICE_TRIGGER_BASE_SCHEMA
from homeassistant.const import CONF_DEVICE_ID, CONF_DOMAIN, CONF_PLATFORM, CONF_TYPE from homeassistant.const import CONF_DEVICE_ID, CONF_DOMAIN, CONF_PLATFORM, CONF_TYPE
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback from homeassistant.core import CALLBACK_TYPE, HassJob, HomeAssistant, callback
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from .const import DOMAIN, KNOWN_DEVICES, TRIGGERS from .const import DOMAIN, KNOWN_DEVICES, TRIGGERS
@ -86,13 +86,13 @@ class TriggerSource:
) -> CALLBACK_TYPE: ) -> CALLBACK_TYPE:
"""Attach a trigger.""" """Attach a trigger."""
trigger_data = automation_info["trigger_data"] trigger_data = automation_info["trigger_data"]
job = HassJob(action)
@callback
def event_handler(char): def event_handler(char):
if config[CONF_SUBTYPE] != HK_TO_HA_INPUT_EVENT_VALUES[char["value"]]: if config[CONF_SUBTYPE] != HK_TO_HA_INPUT_EVENT_VALUES[char["value"]]:
return return
self._hass.async_create_task( self._hass.async_run_hass_job(job, {"trigger": {**trigger_data, **config}})
action({"trigger": {**trigger_data, **config}})
)
trigger = self._triggers[config[CONF_TYPE], config[CONF_SUBTYPE]] trigger = self._triggers[config[CONF_TYPE], config[CONF_SUBTYPE]]
iid = trigger["characteristic"] iid = trigger["characteristic"]
@ -231,11 +231,11 @@ async def async_setup_triggers_for_entry(hass: HomeAssistant, config_entry):
def async_fire_triggers(conn: HKDevice, events: dict[tuple[int, int], Any]): def async_fire_triggers(conn: HKDevice, events: dict[tuple[int, int], Any]):
"""Process events generated by a HomeKit accessory into automation triggers.""" """Process events generated by a HomeKit accessory into automation triggers."""
trigger_sources: dict[str, TriggerSource] = conn.hass.data[TRIGGERS]
for (aid, iid), ev in events.items(): for (aid, iid), ev in events.items():
if aid in conn.devices: if aid in conn.devices:
device_id = conn.devices[aid] device_id = conn.devices[aid]
if device_id in conn.hass.data[TRIGGERS]: if source := trigger_sources.get(device_id):
source = conn.hass.data[TRIGGERS][device_id]
source.fire(iid, ev) source.fire(iid, ev)