From cf5e2bac0f6eeea331d0d02a5e1ef78b78652c5f Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 15 Jun 2025 12:45:27 +0200 Subject: [PATCH] chore: simplify --- charger/cfos.go | 5 ++--- charger/evsewifi.go | 20 +++++++++----------- charger/wallbe.go | 15 +++++++++------ meter/meter.go | 4 +--- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/charger/cfos.go b/charger/cfos.go index 1773e9360..9c8f54c35 100644 --- a/charger/cfos.go +++ b/charger/cfos.go @@ -75,9 +75,8 @@ func NewCfosPowerBrain(ctx context.Context, uri string, id uint8) (api.Charger, // decorate meter var ( - power func() (float64, error) - energy func() (float64, error) - currents func() (float64, float64, float64, error) + power, energy func() (float64, error) + currents func() (float64, float64, float64, error) ) if b, err := wb.conn.ReadHoldingRegisters(cfosRegMeter, 1); err == nil && binary.BigEndian.Uint16(b) != 0 { power = wb.currentPower diff --git a/charger/evsewifi.go b/charger/evsewifi.go index 131a81f25..ec4ac6f64 100644 --- a/charger/evsewifi.go +++ b/charger/evsewifi.go @@ -71,26 +71,24 @@ func NewEVSEWifiFromConfig(other map[string]interface{}) (api.Charger, error) { wb.hires = true } - // decorate Charger with Meter - var currentPower func() (float64, error) + // decorate meter + var ( + power, energy func() (float64, error) + currents, voltages func() (float64, float64, float64, error) + ) + if cc.Meter.Power { - currentPower = wb.currentPower + power = wb.currentPower } - // decorate Charger with MeterEnergy - var totalEnergy func() (float64, error) if cc.Meter.Energy { - totalEnergy = wb.totalEnergy + energy = wb.totalEnergy } - // decorate Charger with PhaseCurrents - var currents func() (float64, float64, float64, error) if cc.Meter.Currents { currents = wb.currents } - // decorate Charger with PhaseVoltages - var voltages func() (float64, float64, float64, error) if cc.Meter.Voltages { voltages = wb.voltages } @@ -108,7 +106,7 @@ func NewEVSEWifiFromConfig(other map[string]interface{}) (api.Charger, error) { identify = wb.identify } - return decorateEVSE(wb, currentPower, totalEnergy, currents, voltages, maxCurrentMillis, identify), nil + return decorateEVSE(wb, power, energy, currents, voltages, maxCurrentMillis, identify), nil } // NewEVSEWifi creates EVSEWifi charger diff --git a/charger/wallbe.go b/charger/wallbe.go index 4c02349de..4a73f99fb 100644 --- a/charger/wallbe.go +++ b/charger/wallbe.go @@ -68,17 +68,20 @@ func NewWallbeFromConfig(ctx context.Context, other map[string]interface{}) (api wb.factor = 1 } - var currentPower func() (float64, error) + // decorate meter + var ( + power, energy func() (float64, error) + currents func() (float64, float64, float64, error) + ) + if cc.Meter.Power { - currentPower = wb.currentPower + power = wb.currentPower } - var totalEnergy func() (float64, error) if cc.Meter.Energy { - totalEnergy = wb.totalEnergy + energy = wb.totalEnergy } - var currents func() (float64, float64, float64, error) if cc.Meter.Currents { currents = wb.currents } @@ -88,7 +91,7 @@ func NewWallbeFromConfig(ctx context.Context, other map[string]interface{}) (api maxCurrentMillis = wb.maxCurrentMillis } - return decorateWallbe(wb, currentPower, totalEnergy, currents, maxCurrentMillis), nil + return decorateWallbe(wb, power, energy, currents, maxCurrentMillis), nil } // NewWallbe creates a Wallbe charger diff --git a/meter/meter.go b/meter/meter.go index 6caaeea57..a1e85319a 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -101,9 +101,7 @@ type Meter struct { // Decorate attaches additional capabilities to the base meter func (m *Meter) Decorate( totalEnergy func() (float64, error), - currents func() (float64, float64, float64, error), - voltages func() (float64, float64, float64, error), - powers func() (float64, float64, float64, error), + currents, voltages, powers func() (float64, float64, float64, error), batterySoc func() (float64, error), batteryCapacity func() float64, maxACPower func() float64,