Add MeterReturnEnergy (#29805)
This commit is contained in:
parent
869ac1d6eb
commit
7b5df178ce
20 changed files with 196 additions and 57 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ type Method int
|
|||
const (
|
||||
_ Method = iota
|
||||
Energy
|
||||
ReturnEnergy
|
||||
Power
|
||||
Soc
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue