Loadpoint: make sure restoring settings publishes current values (#11637)
This commit is contained in:
parent
419aae3c2d
commit
90c0f96944
3 changed files with 26 additions and 18 deletions
|
|
@ -260,9 +260,6 @@ func NewLoadpointFromConfig(log *util.Logger, settings *Settings, other map[stri
|
|||
lp.mode = api.ModeOff
|
||||
}
|
||||
|
||||
// restore settings
|
||||
lp.restoreSettings()
|
||||
|
||||
return lp, nil
|
||||
}
|
||||
|
||||
|
|
@ -300,20 +297,20 @@ func NewLoadpoint(log *util.Logger, settings *Settings) *Loadpoint {
|
|||
|
||||
// restoreSettings restores loadpoint settings
|
||||
func (lp *Loadpoint) restoreSettings() {
|
||||
if v, err := lp.settings.String(keys.Mode); err == nil {
|
||||
lp.mode = api.ChargeMode(v)
|
||||
if v, err := lp.settings.String(keys.Mode); err == nil && v != "" {
|
||||
lp.setMode(api.ChargeMode(v))
|
||||
}
|
||||
if v, err := lp.settings.Time(keys.PlanTime); err == nil {
|
||||
lp.planTime = v
|
||||
if v, err := lp.settings.Int(keys.LimitSoc); err == nil && v > 0 {
|
||||
lp.setLimitSoc(int(v))
|
||||
}
|
||||
if v, err := lp.settings.Float(keys.PlanEnergy); err == nil {
|
||||
lp.planEnergy = v
|
||||
if v, err := lp.settings.Float(keys.LimitEnergy); err == nil && v > 0 {
|
||||
lp.setLimitEnergy(v)
|
||||
}
|
||||
if v, err := lp.settings.Int(keys.LimitSoc); err == nil {
|
||||
lp.limitSoc = int(v)
|
||||
}
|
||||
if v, err := lp.settings.Float(keys.LimitEnergy); err == nil {
|
||||
lp.limitEnergy = v
|
||||
|
||||
t, err1 := lp.settings.Time(keys.PlanTime)
|
||||
v, err2 := lp.settings.Float(keys.PlanEnergy)
|
||||
if err1 == nil && err2 == nil {
|
||||
lp.setPlanEnergy(t, v)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -570,6 +567,9 @@ func (lp *Loadpoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even
|
|||
_ = lp.bus.Subscribe(evChargeCurrent, lp.evChargeCurrentHandler)
|
||||
_ = lp.bus.Subscribe(evVehicleSoc, lp.evVehicleSocProgressHandler)
|
||||
|
||||
// restore settings
|
||||
lp.restoreSettings()
|
||||
|
||||
// publish initial values
|
||||
lp.publish(keys.Title, lp.Title())
|
||||
lp.publish(keys.Mode, lp.GetMode())
|
||||
|
|
|
|||
|
|
@ -34,6 +34,13 @@ func (lp *Loadpoint) GetMode() api.ChargeMode {
|
|||
return lp.mode
|
||||
}
|
||||
|
||||
// setMode sets loadpoint charge mode (no mutex)
|
||||
func (lp *Loadpoint) setMode(mode api.ChargeMode) {
|
||||
lp.mode = mode
|
||||
lp.publish(keys.Mode, mode)
|
||||
lp.settings.SetString(keys.Mode, string(mode))
|
||||
}
|
||||
|
||||
// SetMode sets loadpoint charge mode
|
||||
func (lp *Loadpoint) SetMode(mode api.ChargeMode) {
|
||||
lp.Lock()
|
||||
|
|
@ -48,9 +55,7 @@ func (lp *Loadpoint) SetMode(mode api.ChargeMode) {
|
|||
|
||||
// apply immediately
|
||||
if lp.mode != mode {
|
||||
lp.mode = mode
|
||||
lp.publish(keys.Mode, mode)
|
||||
lp.settings.SetString(keys.Mode, string(mode))
|
||||
lp.setMode(mode)
|
||||
|
||||
// reset timers
|
||||
switch mode {
|
||||
|
|
|
|||
|
|
@ -431,6 +431,7 @@ func TestDisableAndEnableAtTargetSoc(t *testing.T) {
|
|||
charger.EXPECT().Enabled().Return(lp.enabled, nil)
|
||||
charger.EXPECT().MaxCurrent(int64(maxA)).Return(nil)
|
||||
lp.Update(500, false, false, false, 0, nil, nil)
|
||||
ctrl.Finish()
|
||||
|
||||
t.Log("charging above target - soc deactivates charger")
|
||||
clock.Add(5 * time.Minute)
|
||||
|
|
@ -439,6 +440,7 @@ func TestDisableAndEnableAtTargetSoc(t *testing.T) {
|
|||
charger.EXPECT().Enabled().Return(lp.enabled, nil)
|
||||
charger.EXPECT().Enable(false).Return(nil)
|
||||
lp.Update(500, false, false, false, 0, nil, nil)
|
||||
ctrl.Finish()
|
||||
|
||||
t.Log("deactivated charger changes status to B")
|
||||
clock.Add(5 * time.Minute)
|
||||
|
|
@ -446,12 +448,14 @@ func TestDisableAndEnableAtTargetSoc(t *testing.T) {
|
|||
charger.EXPECT().Status().Return(api.StatusB, nil)
|
||||
charger.EXPECT().Enabled().Return(lp.enabled, nil)
|
||||
lp.Update(-5000, false, false, false, 0, nil, nil)
|
||||
ctrl.Finish()
|
||||
|
||||
t.Log("soc has fallen below target - soc update prevented by timer")
|
||||
clock.Add(5 * time.Minute)
|
||||
charger.EXPECT().Status().Return(api.StatusB, nil)
|
||||
charger.EXPECT().Enabled().Return(lp.enabled, nil)
|
||||
lp.Update(-5000, false, false, false, 0, nil, nil)
|
||||
ctrl.Finish()
|
||||
|
||||
t.Log("soc has fallen below target - soc update timer expired")
|
||||
clock.Add(pollInterval)
|
||||
|
|
@ -460,7 +464,6 @@ func TestDisableAndEnableAtTargetSoc(t *testing.T) {
|
|||
charger.EXPECT().Enabled().Return(lp.enabled, nil)
|
||||
charger.EXPECT().Enable(true).Return(nil)
|
||||
lp.Update(-5000, false, false, false, 0, nil, nil)
|
||||
|
||||
ctrl.Finish()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue