Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support for tracking the proximity of a device."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from homeassistant.config_entries import ConfigEntry
8 from homeassistant.const import Platform
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.event import (
11  async_track_entity_registry_updated_event,
12  async_track_state_change_event,
13 )
14 
15 from .const import CONF_TRACKED_ENTITIES
16 from .coordinator import ProximityConfigEntry, ProximityDataUpdateCoordinator
17 
18 _LOGGER = logging.getLogger(__name__)
19 
20 
21 async def async_setup_entry(hass: HomeAssistant, entry: ProximityConfigEntry) -> bool:
22  """Set up Proximity from a config entry."""
23  _LOGGER.debug("setup %s with config:%s", entry.title, entry.data)
24 
25  coordinator = ProximityDataUpdateCoordinator(hass, entry.title, dict(entry.data))
26 
27  entry.async_on_unload(
29  hass,
30  entry.data[CONF_TRACKED_ENTITIES],
31  coordinator.async_check_proximity_state_change,
32  )
33  )
34 
35  entry.async_on_unload(
37  hass,
38  entry.data[CONF_TRACKED_ENTITIES],
39  coordinator.async_check_tracked_entity_change,
40  )
41  )
42 
43  await coordinator.async_config_entry_first_refresh()
44  entry.runtime_data = coordinator
45 
46  await hass.config_entries.async_forward_entry_setups(entry, [Platform.SENSOR])
47  entry.async_on_unload(entry.add_update_listener(_async_update_listener))
48  return True
49 
50 
51 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
52  """Unload a config entry."""
53  return await hass.config_entries.async_unload_platforms(entry, [Platform.SENSOR])
54 
55 
56 async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
57  """Handle options update."""
58  await hass.config_entries.async_reload(entry.entry_id)
None _async_update_listener(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:56
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:51
bool async_setup_entry(HomeAssistant hass, ProximityConfigEntry entry)
Definition: __init__.py:21
CALLBACK_TYPE async_track_entity_registry_updated_event(HomeAssistant hass, str|Iterable[str] entity_ids, Callable[[Event[EventEntityRegistryUpdatedData]], Any] action, HassJobType|None job_type=None)
Definition: event.py:543
CALLBACK_TYPE async_track_state_change_event(HomeAssistant hass, str|Iterable[str] entity_ids, Callable[[Event[EventStateChangedData]], Any] action, HassJobType|None job_type=None)
Definition: event.py:314