diff --git a/core/meterenergy.go b/core/meterenergy.go index ba4359e21..c2fe98bc5 100644 --- a/core/meterenergy.go +++ b/core/meterenergy.go @@ -1,6 +1,8 @@ package core import ( + "bytes" + "fmt" "time" "github.com/benbjohnson/clock" @@ -14,6 +16,15 @@ type meterEnergy struct { Accumulated float64 `json:"accumulated"` // kWh } +func (m *meterEnergy) String() string { + b := new(bytes.Buffer) + fmt.Fprintf(b, "Accumulated: %.3fkWh updated: %v", m.Accumulated, m.updated.Truncate(time.Second)) + if m.meter != nil { + fmt.Fprintf(b, " meter: %.3fkWh", *m.meter) + } + return b.String() +} + // AccumulatedEnergy returns the accumulated energy in kWh func (m *meterEnergy) AccumulatedEnergy() float64 { return m.Accumulated diff --git a/core/site.go b/core/site.go index 70c722ffa..f1e342c5c 100644 --- a/core/site.go +++ b/core/site.go @@ -592,10 +592,10 @@ func (site *Site) updatePvMeters() { prev := site.pvEnergy[name].AccumulatedEnergy() if mm[i].Energy > 0 { - site.log.DEBUG.Printf("!! accumulated solar production: %s set %.3fkWh meter total (was: %+v)", name, mm[i].Energy, site.pvEnergy[name]) + site.log.DEBUG.Printf("!! accumulated solar production: %s set %.3fkWh meter total (was: %s)", name, mm[i].Energy, site.pvEnergy[name]) site.pvEnergy[name].AddMeterTotal(mm[i].Energy) } else { - site.log.DEBUG.Printf("!! accumulated solar production: %s add %.3fW power (was: %+v)", name, mm[i].Energy, site.pvEnergy[name]) + site.log.DEBUG.Printf("!! accumulated solar production: %s add %.3fW power (was: %s)", name, mm[i].Energy, site.pvEnergy[name]) site.pvEnergy[name].AddPower(mm[i].Power) } site.log.DEBUG.Printf("!! accumulated solar production: %s moved from %.3f to %.3f (is: %+v)", name, prev, site.pvEnergy[name].AccumulatedEnergy(), site.pvEnergy[name]) diff --git a/core/site_tariffs.go b/core/site_tariffs.go index 2feb44d41..741db5840 100644 --- a/core/site_tariffs.go +++ b/core/site_tariffs.go @@ -150,7 +150,9 @@ func (site *Site) solarDetails(solar api.Rates) solarDetails { // accumulate forecasted energy since last update energy := solarEnergy(solar, site.fcstEnergy.updated, time.Now()) / 1e3 - site.log.DEBUG.Printf("solar forecast: accumulated %.3f from %v to %v", energy, site.fcstEnergy.updated, time.Now()) + site.log.DEBUG.Printf("solar forecast: accumulated %.3fWh from %v to %v", + energy, site.fcstEnergy.updated.Truncate(time.Second), time.Now().Truncate(time.Second), + ) site.fcstEnergy.AddEnergy(energy) settings.SetFloat(keys.SolarAccForecast, site.fcstEnergy.Accumulated)