Ensure ZHA devices load before validating device triggers (#76084)
parent
be4f9598f9
commit
67cef0dc94
|
@ -35,6 +35,7 @@ from .core.const import (
|
|||
DOMAIN,
|
||||
PLATFORMS,
|
||||
SIGNAL_ADD_ENTITIES,
|
||||
ZHA_DEVICES_LOADED_EVENT,
|
||||
RadioType,
|
||||
)
|
||||
from .core.discovery import GROUP_PROBE
|
||||
|
@ -75,7 +76,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
"""Set up ZHA from config."""
|
||||
hass.data[DATA_ZHA] = {}
|
||||
hass.data[DATA_ZHA] = {ZHA_DEVICES_LOADED_EVENT: asyncio.Event()}
|
||||
|
||||
if DOMAIN in config:
|
||||
conf = config[DOMAIN]
|
||||
|
@ -109,6 +110,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
|
|||
|
||||
zha_gateway = ZHAGateway(hass, config, config_entry)
|
||||
await zha_gateway.async_initialize()
|
||||
hass.data[DATA_ZHA][ZHA_DEVICES_LOADED_EVENT].set()
|
||||
|
||||
device_registry = dr.async_get(hass)
|
||||
device_registry.async_get_or_create(
|
||||
|
@ -141,6 +143,7 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
|
|||
"""Unload ZHA config entry."""
|
||||
zha_gateway: ZHAGateway = hass.data[DATA_ZHA][DATA_ZHA_GATEWAY]
|
||||
await zha_gateway.shutdown()
|
||||
hass.data[DATA_ZHA][ZHA_DEVICES_LOADED_EVENT].clear()
|
||||
|
||||
GROUP_PROBE.cleanup()
|
||||
api.async_unload_api(hass)
|
||||
|
|
|
@ -394,6 +394,7 @@ ZHA_GW_MSG_GROUP_REMOVED = "group_removed"
|
|||
ZHA_GW_MSG_LOG_ENTRY = "log_entry"
|
||||
ZHA_GW_MSG_LOG_OUTPUT = "log_output"
|
||||
ZHA_GW_MSG_RAW_INIT = "raw_device_initialized"
|
||||
ZHA_DEVICES_LOADED_EVENT = "zha_devices_loaded_event"
|
||||
|
||||
EFFECT_BLINK = 0x00
|
||||
EFFECT_BREATHE = 0x01
|
||||
|
|
|
@ -16,8 +16,8 @@ from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
|||
from homeassistant.exceptions import HomeAssistantError, IntegrationError
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from . import DOMAIN
|
||||
from .core.const import ZHA_EVENT
|
||||
from . import DOMAIN as ZHA_DOMAIN
|
||||
from .core.const import DATA_ZHA, ZHA_DEVICES_LOADED_EVENT, ZHA_EVENT
|
||||
from .core.helpers import async_get_zha_device
|
||||
|
||||
CONF_SUBTYPE = "subtype"
|
||||
|
@ -35,7 +35,8 @@ async def async_validate_trigger_config(
|
|||
"""Validate config."""
|
||||
config = TRIGGER_SCHEMA(config)
|
||||
|
||||
if "zha" in hass.config.components:
|
||||
if ZHA_DOMAIN in hass.config.components:
|
||||
await hass.data[DATA_ZHA][ZHA_DEVICES_LOADED_EVENT].wait()
|
||||
trigger = (config[CONF_TYPE], config[CONF_SUBTYPE])
|
||||
try:
|
||||
zha_device = async_get_zha_device(hass, config[CONF_DEVICE_ID])
|
||||
|
@ -100,7 +101,7 @@ async def async_get_triggers(
|
|||
triggers.append(
|
||||
{
|
||||
CONF_DEVICE_ID: device_id,
|
||||
CONF_DOMAIN: DOMAIN,
|
||||
CONF_DOMAIN: ZHA_DOMAIN,
|
||||
CONF_PLATFORM: DEVICE,
|
||||
CONF_TYPE: trigger,
|
||||
CONF_SUBTYPE: subtype,
|
||||
|
|
Loading…
Reference in New Issue