Track duplicate meter usage

This commit is contained in:
andig 2021-10-22 16:52:54 +02:00
parent 9181925d40
commit 72d59661c6
2 changed files with 11 additions and 1 deletions

View file

@ -73,11 +73,21 @@ type ConfigProvider struct {
meters map[string]api.Meter
chargers map[string]api.Charger
vehicles map[string]api.Vehicle
visited map[string]bool
}
// Meter provides meters by name
func (cp *ConfigProvider) Meter(name string) api.Meter {
if meter, ok := cp.meters[name]; ok {
// track duplicate usage https://github.com/evcc-io/evcc/issues/1744
if cp.visited == nil {
cp.visited = make(map[string]bool)
}
if _, ok := cp.visited[name]; ok {
log.FATAL.Fatalf("duplicate meter usage: %s", name)
}
cp.visited[name] = true
return meter
}
log.FATAL.Fatalf("invalid meter: %s", name)

View file

@ -30,7 +30,7 @@ func init() {
rand.Seed(time.Now().UnixNano())
}
var cp = &ConfigProvider{}
var cp = new(ConfigProvider)
func loadConfigFile(cfgFile string) (conf config, err error) {
if cfgFile != "" {