Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions custom_components/saj_esolar/__init__.py
Original file line number Diff line number Diff line change
@@ -1,75 +1,60 @@
"""The eSolar SAJ (and their resellers) component."""
"""The SAJ eSolar component — powered by pysaj-elekeeper."""

from __future__ import annotations

import logging

from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant

from .api import EsolarApiClient, ESolarConfiguration, EsolarProvider
from .api import EsolarApiClient
from .const import (
CONF_PASSWORD,
CONF_PLANT_ID,
CONF_PROVIDER_DOMAIN,
CONF_PROVIDER_PATH,
CONF_PROVIDER_USE_SSL,
CONF_PROVIDER_VERIFY_SSL,
CONF_SENSORS,
CONF_PLANT_UID,
CONF_USERNAME,
DOMAIN,
)
from .coordinator import EsolarDataUpdateCoordinator

_LOGGER = logging.getLogger(__name__)

# our platform only has sensors, no switches
PLATFORMS: list[str] = ["sensor"]


async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities=None
) -> bool:
"""Setup integration config entry."""
"""Set up the SAJ eSolar config entry."""
_LOGGER.debug("Setting up eSolar entry: %s", entry.entry_id)
configEntry = entry.data

provider = EsolarProvider(
configEntry.get(CONF_PROVIDER_DOMAIN),
configEntry.get(CONF_PROVIDER_PATH),
configEntry.get(CONF_PROVIDER_USE_SSL, True),
configEntry.get(CONF_PROVIDER_VERIFY_SSL, True),
config = entry.data

api = EsolarApiClient(
hass,
username=config[CONF_USERNAME],
password=config[CONF_PASSWORD],
plant_uid=config.get(CONF_PLANT_UID) or None,
base_url=config.get("base_url", "https://eop.saj-electric.com"),
)
esolarConfig = ESolarConfiguration(
configEntry.get(CONF_USERNAME),
configEntry.get(CONF_PASSWORD),
configEntry.get(CONF_SENSORS),
configEntry.get(CONF_PLANT_ID),
provider,
)

api = EsolarApiClient(hass, esolarConfig)
coordinator = EsolarDataUpdateCoordinator(hass, api)

# Perform the first refresh
await coordinator.async_config_entry_first_refresh()

# Store coordinator
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator

# Forward setup to platforms
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True


async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a configEntry entry."""
"""Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok


async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Reload a configEntry entry."""
"""Reload a config entry."""
await async_unload_entry(hass, entry)
await async_setup_entry(hass, entry)
Loading