Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The trafikverket_train component."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from homeassistant.config_entries import ConfigEntry
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers import entity_registry as er
10 
11 from .const import PLATFORMS
12 from .coordinator import TVDataUpdateCoordinator
13 
14 TVTrainConfigEntry = ConfigEntry[TVDataUpdateCoordinator]
15 
16 _LOGGER = logging.getLogger(__name__)
17 
18 
19 async def async_setup_entry(hass: HomeAssistant, entry: TVTrainConfigEntry) -> bool:
20  """Set up Trafikverket Train from a config entry."""
21 
22  coordinator = TVDataUpdateCoordinator(hass)
23  await coordinator.async_config_entry_first_refresh()
24  entry.runtime_data = coordinator
25 
26  entity_reg = er.async_get(hass)
27  entries = er.async_entries_for_config_entry(entity_reg, entry.entry_id)
28  for entity in entries:
29  if not entity.unique_id.startswith(entry.entry_id):
30  entity_reg.async_update_entity(
31  entity.entity_id, new_unique_id=f"{entry.entry_id}-departure_time"
32  )
33 
34  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
35  entry.async_on_unload(entry.add_update_listener(update_listener))
36 
37  return True
38 
39 
40 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
41  """Unload Trafikverket Weatherstation config entry."""
42 
43  return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
44 
45 
46 async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
47  """Handle options update."""
48  await hass.config_entries.async_reload(entry.entry_id)
49 
50 
51 async def async_migrate_entry(hass: HomeAssistant, entry: TVTrainConfigEntry) -> bool:
52  """Migrate config entry."""
53  _LOGGER.debug("Migrating from version %s", entry.version)
54 
55  if entry.version > 1:
56  # This means the user has downgraded from a future version
57  return False
58 
59  if entry.version == 1 and entry.minor_version == 1:
60  # Remove unique id
61  hass.config_entries.async_update_entry(entry, unique_id=None, minor_version=2)
62 
63  _LOGGER.debug(
64  "Migration to version %s.%s successful",
65  entry.version,
66  entry.minor_version,
67  )
68 
69  return True
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:40
bool async_setup_entry(HomeAssistant hass, TVTrainConfigEntry entry)
Definition: __init__.py:19
None update_listener(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:46
bool async_migrate_entry(HomeAssistant hass, TVTrainConfigEntry entry)
Definition: __init__.py:51