Fix battery control not persisted (#11439)
This commit is contained in:
parent
7819662ad1
commit
5bd484f521
4 changed files with 10 additions and 4 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue