Update charge power only once (#2848)
This commit is contained in:
parent
3c9579a0fd
commit
080bbe9324
2 changed files with 10 additions and 14 deletions
|
|
@ -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
|
||||
|
|
|
|||
21
core/site.go
21
core/site.go
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue