From 1d51100c1ebba22b36a9d3c62ae186fa717fb415 Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 10 Nov 2022 18:38:42 +0100 Subject: [PATCH] Fix charger rater/timer logic for vehicle reconnect --- core/wrapper/chargerater.go | 5 +++-- core/wrapper/chargerater_test.go | 7 +++++++ core/wrapper/chargetimer.go | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/wrapper/chargerater.go b/core/wrapper/chargerater.go index f0960c5a7..a7a59ff4e 100644 --- a/core/wrapper/chargerater.go +++ b/core/wrapper/chargerater.go @@ -40,7 +40,6 @@ func (cr *ChargeRater) StartCharge(continued bool) { defer cr.Unlock() // time is needed if MeterEnergy is not supported - cr.charging = true cr.start = cr.clck.Now() // get end energy amount @@ -53,7 +52,9 @@ func (cr *ChargeRater) StartCharge(continued bool) { } } - if !continued { + if continued { + cr.charging = true + } else { cr.chargedEnergy = 0 } } diff --git a/core/wrapper/chargerater_test.go b/core/wrapper/chargerater_test.go index 5a8b01652..a36f79fb2 100644 --- a/core/wrapper/chargerater_test.go +++ b/core/wrapper/chargerater_test.go @@ -17,6 +17,13 @@ func TestNoMeter(t *testing.T) { cr.clck = clck cr.StartCharge(false) + clck.Add(time.Hour) + + if f, err := cr.ChargedEnergy(); f != 0 || err != nil { + t.Errorf("energy: %.1f %v", f, err) + } + + cr.StartCharge(true) // 1kWh clck.Add(time.Hour) diff --git a/core/wrapper/chargetimer.go b/core/wrapper/chargetimer.go index f713998fb..bf3f44ce5 100644 --- a/core/wrapper/chargetimer.go +++ b/core/wrapper/chargetimer.go @@ -30,10 +30,11 @@ func (m *ChargeTimer) StartCharge(continued bool) { m.Lock() defer m.Unlock() - m.charging = true m.start = m.clck.Now() - if !continued { + if continued { + m.charging = true + } else { m.duration = 0 } }