Add MeterReturnEnergy (#29805)

This commit is contained in:
andig 2026-06-02 13:53:13 +02:00 • committed by GitHub
parent 869ac1d6eb
commit 7b5df178ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 196 additions and 57 deletions

View file

@ -51,32 +51,28 @@ func NewMeterFromConfig(ctx context.Context, other map[string]any) (Plugin, erro
var _ FloatGetter = (*meterPlugin)(nil)
func (o *meterPlugin) FloatGetter() (func() (float64, error), error) {
err := fmt.Errorf("unsupported method: %s", o.method.String())
switch o.method {
case Energy:
if !api.HasCap[api.MeterEnergy](o.meter) {
return nil, err
}
case Soc:
if !api.HasCap[api.Battery](o.meter) {
return nil, err
}
}
return func() (float64, error) {
switch o.method {
case Energy:
m, _ := api.Cap[api.MeterEnergy](o.meter)
f, err := m.TotalEnergy()
return f * o.scale, err
if m, ok := api.Cap[api.MeterEnergy](o.meter); ok {
f, err := m.TotalEnergy()
return f * o.scale, err
}
case ReturnEnergy:
if m, ok := api.Cap[api.MeterReturnEnergy](o.meter); ok {
f, err := m.ReturnEnergy()
return f * o.scale, err
}
case Soc:
m, _ := api.Cap[api.Battery](o.meter)
f, err := m.Soc()
return f * o.scale, err
default:
if m, ok := api.Cap[api.Battery](o.meter); ok {
f, err := m.Soc()
return f * o.scale, err
}
case Power:
f, err := o.meter.CurrentPower()
return f * o.scale, err
}
return 0, fmt.Errorf("unsupported method: %s", o.method.String())
}, nil
}

View file

@ -6,6 +6,7 @@ type Method int
const (
_ Method = iota
Energy
ReturnEnergy
Power
Soc
)

View file

@ -7,11 +7,11 @@ import (
"strings"
)
const _MethodName = "EnergyPowerSoc"
const _MethodName = "EnergyReturnEnergyPowerSoc"
var _MethodIndex = [...]uint8{0, 6, 11, 14}
var _MethodIndex = [...]uint8{0, 6, 18, 23, 26}
const _MethodLowerName = "energypowersoc"
const _MethodLowerName = "energyreturnenergypowersoc"
func (i Method) String() string {
i -= 1
@ -26,25 +26,29 @@ func (i Method) String() string {
func _MethodNoOp() {
var x [1]struct{}
_ = x[Energy-(1)]
_ = x[Power-(2)]
_ = x[Soc-(3)]
_ = x[ReturnEnergy-(2)]
_ = x[Power-(3)]
_ = x[Soc-(4)]
}
var _MethodValues = []Method{Energy, Power, Soc}
var _MethodValues = []Method{Energy, ReturnEnergy, Power, Soc}
var _MethodNameToValueMap = map[string]Method{
_MethodName[0:6]: Energy,
_MethodLowerName[0:6]: Energy,
_MethodName[6:11]: Power,
_MethodLowerName[6:11]: Power,
_MethodName[11:14]: Soc,
_MethodLowerName[11:14]: Soc,
_MethodName[6:18]: ReturnEnergy,
_MethodLowerName[6:18]: ReturnEnergy,
_MethodName[18:23]: Power,
_MethodLowerName[18:23]: Power,
_MethodName[23:26]: Soc,
_MethodLowerName[23:26]: Soc,
}
var _MethodNames = []string{
_MethodName[0:6],
_MethodName[6:11],
_MethodName[11:14],
_MethodName[6:18],
_MethodName[18:23],
_MethodName[23:26],
}
// MethodString retrieves an enum value from the enum constants string name.