1 """The onkyo component."""
3 from dataclasses
import dataclass
12 from .const
import DOMAIN, OPTION_INPUT_SOURCES, InputSource
13 from .receiver
import Receiver, async_interview
14 from .services
import DATA_MP_ENTITIES, async_register_services
16 PLATFORMS = [Platform.MEDIA_PLAYER]
18 CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
23 """Config Entry data."""
26 sources: dict[InputSource, str]
29 type OnkyoConfigEntry = ConfigEntry[OnkyoData]
32 async
def async_setup(hass: HomeAssistant, _: ConfigType) -> bool:
33 """Set up Onkyo component."""
39 """Set up the Onkyo config entry."""
40 entry.async_on_unload(entry.add_update_listener(update_listener))
42 host = entry.data[CONF_HOST]
48 receiver = await Receiver.async_create(info)
50 sources_store: dict[str, str] = entry.options[OPTION_INPUT_SOURCES]
51 sources = {
InputSource(k): v
for k, v
in sources_store.items()}
53 entry.runtime_data =
OnkyoData(receiver, sources)
55 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
57 await receiver.conn.connect()
63 """Unload Onkyo config entry."""
64 del hass.data[DATA_MP_ENTITIES][entry.entry_id]
66 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
68 receiver = entry.runtime_data.receiver
75 """Handle options update."""
76 await hass.config_entries.async_reload(entry.entry_id)
None async_register_services(HomeAssistant hass)
ReceiverInfo|None async_interview(str host)
bool async_unload_entry(HomeAssistant hass, OnkyoConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, OnkyoConfigEntry entry)
None update_listener(HomeAssistant hass, OnkyoConfigEntry entry)
bool async_setup(HomeAssistant hass, ConfigType _)