1 """The solax component."""
3 from dataclasses
import dataclass
4 from datetime
import timedelta
7 from solax
import InverterResponse, RealTimeAPI, real_time_api
8 from solax.inverter
import InverterError
16 from .coordinator
import SolaxDataUpdateCoordinator
18 PLATFORMS = [Platform.SENSOR]
23 @dataclass(slots=True)
25 """Class for storing solax data."""
28 coordinator: SolaxDataUpdateCoordinator
31 type SolaxConfigEntry = ConfigEntry[SolaxData]
33 _LOGGER = logging.getLogger(__name__)
37 """Set up the sensors from a ConfigEntry."""
40 api = await real_time_api(
41 entry.data[CONF_IP_ADDRESS],
42 entry.data[CONF_PORT],
43 entry.data[CONF_PASSWORD],
45 except Exception
as err:
46 raise ConfigEntryNotReady
from err
48 async
def _async_update() -> InverterResponse:
50 return await api.get_data()
51 except InverterError
as err:
52 raise UpdateFailed
from err
58 name=f
"solax {entry.title}",
59 update_interval=SCAN_INTERVAL,
60 update_method=_async_update,
62 await coordinator.async_config_entry_first_refresh()
64 entry.runtime_data =
SolaxData(api=api, coordinator=coordinator)
65 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
71 """Unload a config entry."""
72 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_setup_entry(HomeAssistant hass, SolaxConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, SolaxConfigEntry entry)