Solar forecast: reset inconsistent metrics (#19605)
Some checks failed
Release / call-build-workflow (push) Has been cancelled
Release / Publish Docker :release (push) Has been cancelled
Release / Github & APT (push) Has been cancelled
Release / Demo (push) Has been cancelled
Release / Hassio Addon (push) Has been cancelled

This commit is contained in:
andig 2025-03-10 11:08:36 +01:00 • committed by GitHub
parent 1f82ce3822
commit 8ab2a78e68
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 6 deletions

View file

@ -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
}
}
}

View file

@ -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)
}
}