Update charge power only once (#2848)

This commit is contained in:
andig 2022-03-15 11:53:52 +00:00 • committed by GitHub
parent 3c9579a0fd
commit 080bbe9324
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 14 deletions

View file

@ -1409,8 +1409,7 @@ func (lp *LoadPoint) Update(sitePower float64, cheap bool, batteryBuffered bool)
mode := lp.GetMode()
lp.publish("mode", mode)
// read and publish meters first
lp.UpdateChargePower()
// read and publish meters first- charge power has already been updated by the site
lp.updateChargeCurrents()
// update ChargeRater here to make sure initial meter update is caught

View file

@ -330,26 +330,21 @@ func (site *Site) updateMeters() error {
}
}
// allow using PV as estimate for grid power
if site.gridMeter == nil {
site.gridPower = -site.pvPower
for _, lp := range site.loadpoints {
lp.UpdateChargePower()
site.gridPower += lp.GetChargePower()
}
}
return err
}
// sitePower returns the net power exported by the site minus a residual margin.
// negative values mean grid: export, battery: charging
func (site *Site) sitePower() (float64, error) {
func (site *Site) sitePower(totalChargePower float64) (float64, error) {
if err := site.updateMeters(); err != nil {
return 0, err
}
// allow using PV as estimate for grid power
if site.gridMeter == nil {
site.gridPower = totalChargePower - site.pvPower
}
// honour battery priority
batteryPower := site.batteryPower
@ -398,12 +393,14 @@ func (site *Site) update(lp Updater) {
}
}
// update all loadpoint's charge power
var totalChargePower float64
for _, lp := range site.loadpoints {
lp.UpdateChargePower()
totalChargePower += lp.GetChargePower()
}
if sitePower, err := site.sitePower(); err == nil {
if sitePower, err := site.sitePower(totalChargePower); err == nil {
lp.Update(sitePower, cheap, site.batteryBuffered)
// ignore negative pvPower values as that means it is not an energy source but consumption