Fix meter access error during config dump

This commit is contained in:
andig 2021-11-16 13:18:08 +01:00
parent 148c7b357e
commit 2fc5291707
2 changed files with 29 additions and 4 deletions

View file

@ -76,6 +76,10 @@ type ConfigProvider struct {
visited map[string]bool
}
func (cp *ConfigProvider) resetVisitors() {
cp.visited = nil
}
// Meter provides meters by name
func (cp *ConfigProvider) Meter(name string) api.Meter {
if meter, ok := cp.meters[name]; ok {

View file

@ -46,14 +46,35 @@ func runDump(cmd *cobra.Command, args []string) {
d.Header("config", "=")
fmt.Println("")
// allow duplicate requests to meters
cp.resetVisitors()
if name := site.Meters.GridMeterRef; name != "" {
d.DumpWithHeader(fmt.Sprintf("grid: %s", name), cp.Meter(name))
}
if name := site.Meters.PVMeterRef; name != "" {
d.DumpWithHeader(fmt.Sprintf("pv: %s", name), cp.Meter(name))
if len(site.Meters.PVMetersRef) == 0 {
if name := site.Meters.PVMeterRef; name != "" {
d.DumpWithHeader(fmt.Sprintf("pv: %s", name), cp.Meter(name))
}
} else {
for id, name := range site.Meters.PVMetersRef {
if name != "" {
d.DumpWithHeader(fmt.Sprintf("pv %d: %s", id, name), cp.Meter(name))
}
}
}
if name := site.Meters.BatteryMeterRef; name != "" {
d.DumpWithHeader(fmt.Sprintf("battery: %s", name), cp.Meter(name))
if len(site.Meters.BatteryMetersRef) == 0 {
if name := site.Meters.BatteryMeterRef; name != "" {
d.DumpWithHeader(fmt.Sprintf("battery: %s", name), cp.Meter(name))
}
} else {
for id, name := range site.Meters.BatteryMetersRef {
if name != "" {
d.DumpWithHeader(fmt.Sprintf("Battery %d: %s", id, name), cp.Meter(name))
}
}
}
for id, lpI := range site.LoadPoints() {