1 """The A. O. Smith integration."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from py_aosmith
import AOSmithAPIClient
14 from .const
import DOMAIN
15 from .coordinator
import AOSmithEnergyCoordinator, AOSmithStatusCoordinator
17 PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.WATER_HEATER]
19 type AOSmithConfigEntry = ConfigEntry[AOSmithData]
24 """Data for the A. O. Smith integration."""
26 client: AOSmithAPIClient
27 status_coordinator: AOSmithStatusCoordinator
28 energy_coordinator: AOSmithEnergyCoordinator
32 """Set up A. O. Smith from a config entry."""
33 email = entry.data[CONF_EMAIL]
34 password = entry.data[CONF_PASSWORD]
36 session = aiohttp_client.async_get_clientsession(hass)
37 client = AOSmithAPIClient(email, password, session)
40 await status_coordinator.async_config_entry_first_refresh()
42 device_registry = dr.async_get(hass)
43 for junction_id, aosmith_device
in status_coordinator.data.items():
44 device_registry.async_get_or_create(
45 config_entry_id=entry.entry_id,
46 identifiers={(DOMAIN, junction_id)},
47 manufacturer=
"A. O. Smith",
48 name=aosmith_device.name,
49 model=aosmith_device.model,
50 serial_number=aosmith_device.serial,
51 suggested_area=aosmith_device.install_location,
52 sw_version=aosmith_device.status.firmware_version,
56 hass, client,
list(status_coordinator.data)
58 await energy_coordinator.async_config_entry_first_refresh()
66 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
72 """Unload a config entry."""
73 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_unload_entry(HomeAssistant hass, AOSmithConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, AOSmithConfigEntry entry)