diff --git a/core/loadpoint.go b/core/loadpoint.go index 71f5ea01f..dfad87a65 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -477,11 +477,11 @@ func (lp *LoadPoint) applyAction(actionCfg api.ActionConfig) { if actionCfg.Mode != nil { lp.SetMode(*actionCfg.Mode) } - if actionCfg.MinCurrent != nil { - lp.SetMinCurrent(*actionCfg.MinCurrent) + if min := actionCfg.MinCurrent; min != nil && *min >= *lp.onDisconnect.MinCurrent { + lp.SetMinCurrent(*min) } - if actionCfg.MaxCurrent != nil { - lp.SetMaxCurrent(*actionCfg.MaxCurrent) + if max := actionCfg.MaxCurrent; max != nil && *max <= *lp.onDisconnect.MaxCurrent { + lp.SetMaxCurrent(*max) } if actionCfg.MinSoC != nil { lp.SetMinSoC(*actionCfg.MinSoC) diff --git a/core/loadpoint_vehicle_test.go b/core/loadpoint_vehicle_test.go index de53ad370..5da32a748 100644 --- a/core/loadpoint_vehicle_test.go +++ b/core/loadpoint_vehicle_test.go @@ -172,8 +172,11 @@ func TestApplyVehicleDefaults(t *testing.T) { } } - oi := newConfig(api.ModePV, 7, 17, 1, 99) - od := newConfig(api.ModeOff, 5, 15, 2, 98) + // onIdentified config + oi := newConfig(api.ModePV, 7, 15, 1, 99) + + // onDefault config + od := newConfig(api.ModeOff, 6, 16, 2, 98) vehicle := mock.NewMockVehicle(ctrl) vehicle.EXPECT().Title().Return("it's me").AnyTimes() @@ -189,6 +192,10 @@ func TestApplyVehicleDefaults(t *testing.T) { lp.onDisconnect = od lp.ResetOnDisconnect = true + // check loadpoint default currents can't be violated + lp.applyAction(newConfig(*od.Mode, 5, 17, *od.MinSoC, *od.TargetSoC)) + assertConfig(lp, od) + // vehicle identified lp.setActiveVehicle(vehicle) assertConfig(lp, oi)