From 74b1fa561c4822d5bbdffb497d4e8b9904f433a7 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 16 Jul 2025 08:55:35 +0200 Subject: [PATCH] Loadpoint: reset fake charge time when interrupting session (#22396) --- core/loadpoint_session.go | 3 +++ core/wrapper/chargetimer.go | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/core/loadpoint_session.go b/core/loadpoint_session.go index 31e3214ad..0f0bb49a5 100644 --- a/core/loadpoint_session.go +++ b/core/loadpoint_session.go @@ -126,6 +126,9 @@ func (lp *Loadpoint) resetHeatingSession() { if cr, ok := lp.chargeRater.(wrapper.ChargeResetter); ok { cr.ResetCharge() } + if ct, ok := lp.chargeRater.(wrapper.ChargeResetter); ok { + ct.ResetCharge() + } lp.createSession() } diff --git a/core/wrapper/chargetimer.go b/core/wrapper/chargetimer.go index 8279fe88e..c9267e669 100644 --- a/core/wrapper/chargetimer.go +++ b/core/wrapper/chargetimer.go @@ -48,6 +48,16 @@ func (m *ChargeTimer) StopCharge() { m.duration += m.clck.Since(m.start) } +var _ ChargeResetter = (*ChargeTimer)(nil) + +// ChargeResetter resets the charging session +func (m *ChargeTimer) ResetCharge() { + m.Lock() + defer m.Unlock() + + m.duration = 0 +} + // ChargeDuration implements the api.ChargeTimer interface func (m *ChargeTimer) ChargeDuration() (time.Duration, error) { m.Lock()