Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Refoss devices platform loader."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 from typing import Final
7 
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.const import Platform
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.event import async_track_time_interval
12 
13 from .bridge import DiscoveryService
14 from .const import COORDINATORS, DATA_DISCOVERY_SERVICE, DISCOVERY_SCAN_INTERVAL, DOMAIN
15 from .util import refoss_discovery_server
16 
17 PLATFORMS: Final = [
18  Platform.SENSOR,
19  Platform.SWITCH,
20 ]
21 
22 
23 async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
24  """Set up Refoss from a config entry."""
25  hass.data.setdefault(DOMAIN, {})
26  discover = await refoss_discovery_server(hass)
27  refoss_discovery = DiscoveryService(hass, discover)
28  hass.data[DOMAIN][DATA_DISCOVERY_SERVICE] = refoss_discovery
29 
30  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
31 
32  async def _async_scan_update(_=None):
33  await refoss_discovery.discovery.broadcast_msg()
34 
35  await _async_scan_update()
36 
37  entry.async_on_unload(
39  hass, _async_scan_update, timedelta(seconds=DISCOVERY_SCAN_INTERVAL)
40  )
41  )
42 
43  return True
44 
45 
46 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
47  """Unload a config entry."""
48  if hass.data[DOMAIN].get(DATA_DISCOVERY_SERVICE) is not None:
49  refoss_discovery: DiscoveryService = hass.data[DOMAIN][DATA_DISCOVERY_SERVICE]
50  refoss_discovery.discovery.clean_up()
51  hass.data[DOMAIN].pop(DATA_DISCOVERY_SERVICE)
52 
53  unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
54 
55  if unload_ok:
56  hass.data[DOMAIN].pop(COORDINATORS)
57 
58  return unload_ok
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
Discovery refoss_discovery_server(HomeAssistant hass)
Definition: util.py:12
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:23
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:46
CALLBACK_TYPE async_track_time_interval(HomeAssistant hass, Callable[[datetime], Coroutine[Any, Any, None]|None] action, timedelta interval, *str|None name=None, bool|None cancel_on_shutdown=None)
Definition: event.py:1679