1 """Support for esphome devices."""
3 from __future__
import annotations
5 from aioesphomeapi
import APIClient
12 __version__
as ha_version,
18 from .const
import CONF_NOISE_PSK, DATA_FFMPEG_PROXY, DOMAIN
19 from .dashboard
import async_setup
as async_setup_dashboard
20 from .domain_data
import DomainData
23 from .entry_data
import ESPHomeConfigEntry, RuntimeEntryData
24 from .ffmpeg_proxy
import FFmpegProxyData, FFmpegProxyView
25 from .manager
import ESPHomeManager, cleanup_instance
27 CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
29 CLIENT_INFO = f
"Home Assistant {ha_version}"
32 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
33 """Set up the esphome component."""
36 await async_setup_dashboard(hass)
37 hass.http.register_view(
44 """Set up the esphome component."""
45 host: str = entry.data[CONF_HOST]
46 port: int = entry.data[CONF_PORT]
47 password: str |
None = entry.data[CONF_PASSWORD]
48 noise_psk: str |
None = entry.data.get(CONF_NOISE_PSK)
50 zeroconf_instance = await zeroconf.async_get_instance(hass)
56 client_info=CLIENT_INFO,
57 zeroconf_instance=zeroconf_instance,
61 domain_data = DomainData.get(hass)
64 entry_id=entry.entry_id,
66 store=domain_data.get_or_create_store(hass, entry),
67 original_options=
dict(entry.options),
69 entry.runtime_data = entry_data
72 hass, entry, host, password, cli, zeroconf_instance, domain_data
74 await manager.async_start()
80 """Unload an esphome config entry."""
82 return await hass.config_entries.async_unload_platforms(
83 entry, entry_data.loaded_platforms
88 """Remove an esphome config entry."""
89 await DomainData.get(hass).get_or_create_store(hass, entry).
async_remove()
RuntimeEntryData cleanup_instance(HomeAssistant hass, ESPHomeConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ESPHomeConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ESPHomeConfigEntry entry)
bool async_setup(HomeAssistant hass, ConfigType config)
None async_remove_entry(HomeAssistant hass, ESPHomeConfigEntry entry)
None async_remove(HomeAssistant hass, str intent_type)