Fix battery control not persisted (#11439)

This commit is contained in:
andig 2024-01-03 10:06:37 +01:00 • committed by GitHub
parent 7819662ad1
commit 5bd484f521
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 4 deletions

View file

@ -205,7 +205,7 @@ func NewSiteFromConfig(
// revert battery mode on shutdown
shutdown.Register(func() {
if mode := site.GetBatteryMode(); mode != api.BatteryUnknown && mode != api.BatteryNormal {
if mode := site.GetBatteryMode(); batteryModeModified(mode) {
if err := site.updateBatteryMode(api.BatteryNormal); err != nil {
site.log.ERROR.Println("battery mode:", err)
}
@ -249,7 +249,9 @@ func (site *Site) restoreSettings() error {
}
}
if v, err := settings.Bool(keys.BatteryDischargeControl); err == nil {
site.batteryDischargeControl = v
if err := site.SetBatteryDischargeControl(v); err != nil {
return err
}
}
return nil
}

View file

@ -225,7 +225,7 @@ func (site *Site) SetBatteryDischargeControl(val bool) error {
if site.GetBatteryDischargeControl() != val {
// reset to normal when disabling
if mode := site.GetBatteryMode(); mode != api.BatteryNormal {
if mode := site.GetBatteryMode(); !val && batteryModeModified(mode) {
if err := site.updateBatteryMode(api.BatteryNormal); err != nil {
return err
}

View file

@ -6,6 +6,10 @@ import (
"github.com/evcc-io/evcc/core/loadpoint"
)
func batteryModeModified(mode api.BatteryMode) bool {
return mode != api.BatteryUnknown && mode != api.BatteryNormal
}
// GetBatteryMode returns the battery mode
func (site *Site) GetBatteryMode() api.BatteryMode {
site.RLock()

View file

@ -96,7 +96,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error)
batModeS = cc.battery.LimitController(socG, limitSocS)
case cc.BatteryMode != nil:
modeS, err := provider.NewIntSetterFromConfig("mode", *cc.BatteryMode)
modeS, err := provider.NewIntSetterFromConfig("batteryMode", *cc.BatteryMode)
if err != nil {
return nil, fmt.Errorf("battery mode: %w", err)
}