From 7e0b569a38684f4836e5f6248914208076465aa0 Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 25 Jul 2022 15:16:02 +0200 Subject: [PATCH] Api: use phases to configure default value for 1p3p charger (#3940) --- core/loadpoint.go | 8 ++++++++ core/loadpoint_api.go | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/loadpoint.go b/core/loadpoint.go index 243a20bc7..181274288 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -1031,6 +1031,14 @@ func (lp *LoadPoint) scalePhasesIfAvailable(phases int) error { return nil } +// setDefaultPhases sets the default phase configuration +func (lp *LoadPoint) setDefaultPhases(phases int) { + lp.Lock() + defer lp.Unlock() + lp.DefaultPhases = phases + lp.phaseTimer = time.Time{} +} + // setPhases sets the number of enabled phases without modifying the charger func (lp *LoadPoint) setPhases(phases int) { if lp.GetPhases() != phases { diff --git a/core/loadpoint_api.go b/core/loadpoint_api.go index f59d335b5..c404fa6e5 100644 --- a/core/loadpoint_api.go +++ b/core/loadpoint_api.go @@ -116,11 +116,14 @@ func (lp *LoadPoint) SetPhases(phases int) error { return fmt.Errorf("invalid number of phases: %d", phases) } - if _, ok := lp.charger.(api.ChargePhases); ok && phases > 0 { - return lp.scalePhases(phases) + // set new default + lp.setDefaultPhases(phases) + + // apply immediately if not 1p3p + if _, ok := lp.charger.(api.ChargePhases); !ok { + lp.setPhases(phases) } - lp.setPhases(phases) return nil }