diff --git a/core/site.go b/core/site.go index 5149d0b20..04f0ce293 100644 --- a/core/site.go +++ b/core/site.go @@ -323,14 +323,28 @@ func (site *Site) restoreSettings() error { fcstEnergy, err := settings.Float(keys.SolarAccForecast) if err == nil && settings.Json(keys.SolarAccYield, &pvEnergy) == nil { - site.fcstEnergy.Accumulated = fcstEnergy - + var nok bool for _, name := range site.Meters.PVMetersRef { if fcst, ok := pvEnergy[name]; ok { site.pvEnergy[name].Accumulated = fcst } else { - // TODO decide auto-reset? - site.log.WARN.Printf("cannot restore accumulated solar yield for: %s (may need to reset solar statistics)", name) + nok = true + site.log.WARN.Printf("accumulated solar yield: cannot restore %s", name) + } + } + + if !nok { + site.fcstEnergy.Accumulated = fcstEnergy + site.log.DEBUG.Printf("accumulated solar yield: restored %.3fkWh forecasted, %+v produced", fcstEnergy, pvEnergy) + } else { + // reset metrics + site.log.WARN.Printf("accumulated solar yield: metrics reset") + + settings.Delete(keys.SolarAccForecast) + settings.Delete(keys.SolarAccYield) + + for _, pe := range site.pvEnergy { + pe.Accumulated = 0 } } } diff --git a/core/site_tariffs.go b/core/site_tariffs.go index 6b58d6d58..bd5d8dae7 100644 --- a/core/site_tariffs.go +++ b/core/site_tariffs.go @@ -157,8 +157,8 @@ func (site *Site) solarDetails(solar timeseries) solarDetails { scale := produced / fcst site.log.DEBUG.Printf("solar forecast: accumulated %.3fkWh, produced %.3fkWh, scale %.3f", fcst, produced, scale) - const minEnergy = 0.1 - if produced > minEnergy && fcst > minEnergy { /*kWh*/ + const minEnergy = 0.5 // kWh + if produced+fcst > minEnergy { res.Scale = lo.ToPtr(scale) } }