From 68f28cbd346dd51d78031dbfe97cdc0c48a4da6d Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 29 Dec 2022 13:27:10 +0100 Subject: [PATCH] Handle phase measurement errors --- core/site.go | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/core/site.go b/core/site.go index f240a4f85..fa81aaf79 100644 --- a/core/site.go +++ b/core/site.go @@ -437,47 +437,39 @@ func (site *Site) updateMeters() error { err := retryMeter("grid", site.gridMeter, &site.gridPower) - // voltages - if phaseMeter, ok := site.gridMeter.(api.MeterVoltage); err == nil && ok { - u1, u2, u3, err := phaseMeter.Voltages() - if err == nil { - site.log.DEBUG.Printf("grid voltages: %.3gV", []float64{u1, u2, u3}) - site.publish("gridVoltages", []float64{u1, u2, u3}) - } else { - site.log.ERROR.Printf("grid meter voltages: %v", err) - } - } - // powers var p1, p2, p3 float64 if phaseMeter, ok := site.gridMeter.(api.MeterPower); err == nil && ok { p1, p2, p3, err = phaseMeter.Powers() if err == nil { - site.log.DEBUG.Printf("grid powers: %.3gW", []float64{p1, p2, p3}) - site.publish("gridPowers", []float64{p1, p2, p3}) + phases := []float64{p1, p2, p3} + site.log.DEBUG.Printf("grid powers: %.0fW", phases) + site.publish("gridPowers", phases) } else { - site.log.ERROR.Printf("grid meter powers: %v", err) + err = fmt.Errorf("grid powers: %w", err) } } // currents if phaseMeter, ok := site.gridMeter.(api.MeterCurrent); err == nil && ok { - i1, i2, i3, err := phaseMeter.Currents() + var i1, i2, i3 float64 + i1, i2, i3, err = phaseMeter.Currents() if err == nil { - site.log.DEBUG.Printf("grid currents: %.3gA", []float64{util.SignFromPower(i1, p1), util.SignFromPower(i2, p2), util.SignFromPower(i3, p3)}) - site.publish("gridCurrents", []float64{util.SignFromPower(i1, p1), util.SignFromPower(i2, p2), util.SignFromPower(i3, p3)}) + phases := []float64{util.SignFromPower(i1, p1), util.SignFromPower(i2, p2), util.SignFromPower(i3, p3)} + site.log.DEBUG.Printf("grid currents: %.3gA", phases) + site.publish("gridCurrents", phases) } else { - site.log.ERROR.Printf("grid meter currents: %v", err) + err = fmt.Errorf("grid currents: %w", err) } } - // grid energy - if energyMeter, ok := site.gridMeter.(api.MeterEnergy); ok { + // energy + if energyMeter, ok := site.gridMeter.(api.MeterEnergy); err == nil && ok { val, err := energyMeter.TotalEnergy() if err == nil { site.publish("gridEnergy", val) } else { - site.log.ERROR.Println(fmt.Errorf("grid meter energy: %v", err)) + site.log.ERROR.Printf("grid energy: %v", err) } }