From 8403984189c62ebd8846ed54f498cd5148fa0f49 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 15 Jan 2025 14:51:16 +0100 Subject: [PATCH 1/2] Loadpoint: validate fixed phase configuration --- core/loadpoint.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/core/loadpoint.go b/core/loadpoint.go index 906a4c39bf..b07aca6854 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -623,6 +623,17 @@ func (lp *Loadpoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even lp.publish(keys.EnableDelay, lp.Enable.Delay) lp.publish(keys.DisableDelay, lp.Disable.Delay) + if phases := lp.getChargerPhysicalPhases(); phases != 0 { + if lp.configuredPhases != phases { + lp.log.WARN.Printf("configured phases %d do not match physical phases %d", lp.configuredPhases, phases) + } + lp.phases = phases + lp.configuredPhases = phases + lp.publish(keys.ChargerPhysicalPhases, phases) + } else { + lp.publish(keys.ChargerPhysicalPhases, nil) + } + lp.publish(keys.PhasesConfigured, lp.configuredPhases) lp.publish(keys.ChargerPhases1p3p, lp.hasPhaseSwitching()) lp.publish(keys.PhasesEnabled, lp.phases) @@ -630,12 +641,6 @@ func (lp *Loadpoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even lp.publishTimer(phaseTimer, 0, timerInactive) lp.publishTimer(pvTimer, 0, timerInactive) - if phases := lp.getChargerPhysicalPhases(); phases != 0 { - lp.publish(keys.ChargerPhysicalPhases, phases) - } else { - lp.publish(keys.ChargerPhysicalPhases, nil) - } - // charger features for _, f := range []api.Feature{api.IntegratedDevice, api.Heating} { lp.publishChargerFeature(f) From d6f1d760e69cced79bf134c1ab0f8cc013c96bd0 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 15 Jan 2025 14:52:27 +0100 Subject: [PATCH 2/2] wip --- core/loadpoint.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/loadpoint.go b/core/loadpoint.go index b07aca6854..8c720ac843 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -624,7 +624,7 @@ func (lp *Loadpoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even lp.publish(keys.DisableDelay, lp.Disable.Delay) if phases := lp.getChargerPhysicalPhases(); phases != 0 { - if lp.configuredPhases != phases { + if lp.configuredPhases != phases && lp.configuredPhases != 0 { lp.log.WARN.Printf("configured phases %d do not match physical phases %d", lp.configuredPhases, phases) } lp.phases = phases