evcc-io/core/config.go
andig 516934ca6e
Improve provider and meter configuration (#33)
* Improve provider and meter configuration
* Drop mqtt check from script

* Handle retained topics

* Reduce dependencies
2020-04-14 13:26:25 +02:00

28 lines
660 B
Go

package core
import (
"github.com/andig/evcc/api"
"github.com/andig/evcc/core/wrapper"
"github.com/andig/evcc/provider"
)
// NewMeterFromConfig creates api.Meter from config
func NewMeterFromConfig(log *api.Logger, other map[string]interface{}) api.Meter {
cc := struct {
Power provider.Config
Energy *provider.Config // optional
}{}
api.DecodeOther(log, other, &cc)
m := NewMeter(provider.NewFloatGetterFromConfig(log, cc.Power))
// decorate Meter with MeterEnergy
if cc.Energy != nil {
m = &wrapper.CompositeMeter{
Meter: m,
MeterEnergy: NewMeterEnergy(provider.NewFloatGetterFromConfig(log, *cc.Energy)),
}
}
return m
}