From 5e0c67c56b543dd1879bcd06c3ae4147d32801f4 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 17 Aug 2022 12:35:13 +0200 Subject: [PATCH] Validate vehicle min/max currents against loadpoint defaults (#4123) --- core/loadpoint.go | 8 ++++---- core/loadpoint_vehicle_test.go | 11 +++++++++-- 2 files changed, 13 insertions(+), 6 deletions(-) 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)