1 """Support for LinkPlay devices."""
3 from dataclasses
import dataclass
5 from aiohttp
import ClientSession
6 from linkplay.bridge
import LinkPlayBridge
7 from linkplay.controller
import LinkPlayController
8 from linkplay.discovery
import linkplay_factory_httpapi_bridge
9 from linkplay.exceptions
import LinkPlayRequestException
16 from .const
import CONTROLLER, CONTROLLER_KEY, DOMAIN, PLATFORMS
17 from .utils
import async_get_client_session
22 """Data for LinkPlay."""
24 bridge: LinkPlayBridge
27 type LinkPlayConfigEntry = ConfigEntry[LinkPlayData]
31 """Async setup hass config entry. Called when an entry has been setup."""
34 bridge: LinkPlayBridge |
None =
None
38 bridge = await linkplay_factory_httpapi_bridge(entry.data[CONF_HOST], session)
39 except LinkPlayRequestException
as exception:
41 f
"Failed to connect to LinkPlay device at {entry.data[CONF_HOST]}"
45 controller: LinkPlayController |
None =
None
46 hass.data.setdefault(DOMAIN, {})
47 if CONTROLLER
not in hass.data[DOMAIN]:
48 controller = LinkPlayController(session)
49 hass.data[DOMAIN][CONTROLLER_KEY] = controller
51 controller = hass.data[DOMAIN][CONTROLLER_KEY]
53 await controller.add_bridge(bridge)
54 await controller.discover_multirooms()
58 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
63 """Unload a config entry."""
65 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
ClientSession async_get_client_session(HomeAssistant hass)
bool async_setup_entry(HomeAssistant hass, LinkPlayConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, LinkPlayConfigEntry entry)