1 """The Wyoming integration."""
3 from __future__
import annotations
13 from .const
import ATTR_SPEAKER, DOMAIN
14 from .data
import WyomingService
15 from .devices
import SatelliteDevice
16 from .models
import DomainDataItem
18 _LOGGER = logging.getLogger(__name__)
20 SATELLITE_PLATFORMS = [
21 Platform.ASSIST_SATELLITE,
22 Platform.BINARY_SENSOR,
38 service = await WyomingService.create(entry.data[
"host"], entry.data[
"port"])
44 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = item
46 await hass.config_entries.async_forward_entry_setups(entry, service.platforms)
47 entry.async_on_unload(entry.add_update_listener(update_listener))
49 if (satellite_info := service.info.satellite)
is not None:
51 dev_reg = dr.async_get(hass)
54 satellite_id = entry.entry_id
55 device = dev_reg.async_get_or_create(
56 config_entry_id=entry.entry_id,
57 identifiers={(DOMAIN, satellite_id)},
58 name=satellite_info.name,
59 suggested_area=satellite_info.area,
63 satellite_id=satellite_id,
68 await hass.config_entries.async_forward_entry_setups(entry, SATELLITE_PLATFORMS)
74 """Handle options update."""
75 await hass.config_entries.async_reload(entry.entry_id)
80 item: DomainDataItem = hass.data[DOMAIN][entry.entry_id]
82 platforms =
list(item.service.platforms)
83 if item.device
is not None:
84 platforms += SATELLITE_PLATFORMS
86 unload_ok = await hass.config_entries.async_unload_platforms(entry, platforms)
88 del hass.data[DOMAIN][entry.entry_id]
def update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)