chore: simplify

This commit is contained in:
andig 2025-06-15 12:45:27 +02:00
parent 51ef2e7ac8
commit cf5e2bac0f
4 changed files with 21 additions and 23 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,