not ideal but working bat charging

This commit is contained in:
2026-02-03 15:05:29 +01:00
parent 5b39f80862
commit a7a2da2eb2
11 changed files with 1241 additions and 37 deletions

View File

@ -8,6 +8,7 @@ from homeassistant.core import callback
from homeassistant.components import mqtt
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers import selector
from .const import (
DOMAIN,
API_URL,
@ -25,7 +26,34 @@ from .const import (
MIN_RETRY_ATTEMPTS,
MAX_RETRY_ATTEMPTS,
MIN_RETRY_DELAY,
MAX_RETRY_DELAY
MAX_RETRY_DELAY,
# Battery recommendation constants
CONF_BATTERY_ENABLED,
CONF_BATTERY_SOC_ENTITY,
CONF_BATTERY_CAPACITY,
CONF_BATTERY_CHARGE_RATE,
CONF_BATTERY_DISCHARGE_RATE,
CONF_BATTERY_MIN_SOC,
CONF_BATTERY_CHARGE_HOURS,
CONF_BATTERY_DISCHARGE_MULTIPLIER,
DEFAULT_BATTERY_CAPACITY,
DEFAULT_BATTERY_CHARGE_RATE,
DEFAULT_BATTERY_DISCHARGE_RATE,
DEFAULT_BATTERY_MIN_SOC,
DEFAULT_BATTERY_CHARGE_HOURS,
DEFAULT_BATTERY_DISCHARGE_MULTIPLIER,
MIN_BATTERY_CAPACITY,
MAX_BATTERY_CAPACITY,
MIN_BATTERY_CHARGE_RATE,
MAX_BATTERY_CHARGE_RATE,
MIN_BATTERY_DISCHARGE_RATE,
MAX_BATTERY_DISCHARGE_RATE,
MIN_BATTERY_MIN_SOC,
MAX_BATTERY_MIN_SOC,
MIN_BATTERY_CHARGE_HOURS,
MAX_BATTERY_CHARGE_HOURS,
MIN_BATTERY_DISCHARGE_MULTIPLIER,
MAX_BATTERY_DISCHARGE_MULTIPLIER,
)
class MQTTNotConfiguredError(HomeAssistantError):
@ -261,6 +289,34 @@ class PstrykOptionsFlowHandler(config_entries.OptionsFlow):
vol.All(vol.Coerce(int), vol.Range(min=MIN_RETRY_DELAY, max=MAX_RETRY_DELAY)),
})
# Battery Recommendation Configuration
schema.update({
vol.Optional(CONF_BATTERY_ENABLED, default=self.config_entry.options.get(
CONF_BATTERY_ENABLED, False)): bool,
vol.Optional(CONF_BATTERY_SOC_ENTITY, default=self.config_entry.options.get(
CONF_BATTERY_SOC_ENTITY, "")): selector.EntitySelector(
selector.EntitySelectorConfig(domain="sensor")
),
vol.Optional(CONF_BATTERY_CAPACITY, default=self.config_entry.options.get(
CONF_BATTERY_CAPACITY, DEFAULT_BATTERY_CAPACITY)):
vol.All(vol.Coerce(int), vol.Range(min=MIN_BATTERY_CAPACITY, max=MAX_BATTERY_CAPACITY)),
vol.Optional(CONF_BATTERY_CHARGE_RATE, default=self.config_entry.options.get(
CONF_BATTERY_CHARGE_RATE, DEFAULT_BATTERY_CHARGE_RATE)):
vol.All(vol.Coerce(int), vol.Range(min=MIN_BATTERY_CHARGE_RATE, max=MAX_BATTERY_CHARGE_RATE)),
vol.Optional(CONF_BATTERY_DISCHARGE_RATE, default=self.config_entry.options.get(
CONF_BATTERY_DISCHARGE_RATE, DEFAULT_BATTERY_DISCHARGE_RATE)):
vol.All(vol.Coerce(int), vol.Range(min=MIN_BATTERY_DISCHARGE_RATE, max=MAX_BATTERY_DISCHARGE_RATE)),
vol.Optional(CONF_BATTERY_MIN_SOC, default=self.config_entry.options.get(
CONF_BATTERY_MIN_SOC, DEFAULT_BATTERY_MIN_SOC)):
vol.All(vol.Coerce(int), vol.Range(min=MIN_BATTERY_MIN_SOC, max=MAX_BATTERY_MIN_SOC)),
vol.Optional(CONF_BATTERY_CHARGE_HOURS, default=self.config_entry.options.get(
CONF_BATTERY_CHARGE_HOURS, DEFAULT_BATTERY_CHARGE_HOURS)):
vol.All(vol.Coerce(int), vol.Range(min=MIN_BATTERY_CHARGE_HOURS, max=MAX_BATTERY_CHARGE_HOURS)),
vol.Optional(CONF_BATTERY_DISCHARGE_MULTIPLIER, default=self.config_entry.options.get(
CONF_BATTERY_DISCHARGE_MULTIPLIER, DEFAULT_BATTERY_DISCHARGE_MULTIPLIER)):
vol.All(vol.Coerce(float), vol.Range(min=MIN_BATTERY_DISCHARGE_MULTIPLIER, max=MAX_BATTERY_DISCHARGE_MULTIPLIER)),
})
# Add description with section information
description_text = "Configure your energy price monitoring settings"
if mqtt_enabled: