fix: change solar surplus calculation

This commit is contained in:
Björn Stormwall
2026-06-23 12:35:29 +02:00
parent 14c6a5ee23
commit 27ed07f0c4
6 changed files with 186 additions and 30 deletions
@@ -8,11 +8,19 @@ from homeassistant.helpers import device_registry as dr, selector
from .const import (
CONF_CHARGER_ID,
CHARGING_PROFILE_ALL_SURPLUS,
CHARGING_PROFILE_CONSERVATIVE,
CONF_CHARGING_PROFILE,
CONF_DEAD_BAND_RESYNC_MINUTES,
CONF_DEVICE_ID,
CONF_EV_CHARGING_SENSOR,
CONF_HOUSE_LOAD_SENSOR,
CONF_NOTIFY_TARGET,
CONF_SITE_ID,
CONF_SOLAR_EXCESS_SENSOR,
CONF_SOLAR_PRODUCTION_SENSOR,
DEFAULT_CHARGING_PROFILE,
CONF_STOP_GRACE_MINUTES,
DEFAULT_DEAD_BAND_RESYNC_MINUTES,
DEFAULT_STOP_GRACE_MINUTES,
DOMAIN,
EASEE_DOMAIN,
@@ -24,11 +32,31 @@ _STOP_GRACE_SELECTOR = selector.NumberSelector(
)
)
_DEAD_BAND_RESYNC_SELECTOR = selector.NumberSelector(
selector.NumberSelectorConfig(
min=1, max=60, step=1, unit_of_measurement="min", mode=selector.NumberSelectorMode.BOX
)
)
_CHARGING_PROFILE_SELECTOR = selector.SelectSelector(
selector.SelectSelectorConfig(
options=[
selector.SelectOptionDict(value=CHARGING_PROFILE_CONSERVATIVE, label="Conservative"),
selector.SelectOptionDict(value=CHARGING_PROFILE_ALL_SURPLUS, label="All Surplus"),
],
mode=selector.SelectSelectorMode.DROPDOWN,
)
)
_POWER_SENSOR_SELECTOR = selector.EntitySelector(
selector.EntitySelectorConfig(domain="sensor", device_class="power")
)
_STATIC_USER_FIELDS = {
vol.Required(CONF_SITE_ID): str,
vol.Required(CONF_SOLAR_EXCESS_SENSOR): selector.EntitySelector(
selector.EntitySelectorConfig(domain="sensor")
),
vol.Required(CONF_SOLAR_PRODUCTION_SENSOR): _POWER_SENSOR_SELECTOR,
vol.Required(CONF_HOUSE_LOAD_SENSOR): _POWER_SENSOR_SELECTOR,
vol.Required(CONF_EV_CHARGING_SENSOR): _POWER_SENSOR_SELECTOR,
vol.Required(CONF_DEVICE_ID): selector.DeviceSelector(
selector.DeviceSelectorConfig(integration="easee")
),
@@ -63,10 +91,18 @@ def _user_schema(hass: HomeAssistant) -> vol.Schema:
def _options_schema(hass: HomeAssistant, current: dict) -> vol.Schema:
return vol.Schema({
vol.Required(
CONF_CHARGING_PROFILE,
default=current.get(CONF_CHARGING_PROFILE, DEFAULT_CHARGING_PROFILE),
): _CHARGING_PROFILE_SELECTOR,
vol.Required(
CONF_STOP_GRACE_MINUTES,
default=current.get(CONF_STOP_GRACE_MINUTES, DEFAULT_STOP_GRACE_MINUTES),
): _STOP_GRACE_SELECTOR,
vol.Required(
CONF_DEAD_BAND_RESYNC_MINUTES,
default=current.get(CONF_DEAD_BAND_RESYNC_MINUTES, DEFAULT_DEAD_BAND_RESYNC_MINUTES),
): _DEAD_BAND_RESYNC_SELECTOR,
vol.Optional(CONF_NOTIFY_TARGET): _notify_selector(_notify_services(hass)),
})