diff --git a/core/loadpoint_session.go b/core/loadpoint_session.go index 124be8006..96ab15ccc 100644 --- a/core/loadpoint_session.go +++ b/core/loadpoint_session.go @@ -68,17 +68,12 @@ func (lp *Loadpoint) stopSession() { } s.Finished = lp.clock.Now() - - // record meter stop if meterStop := lp.chargeMeterTotal(); meterStop > 0 { s.MeterStop = &meterStop + } - if s.MeterStart != nil { - // use meter stop to override charged energy, but prevent negative values - if chargedEnergy := *s.MeterStop - *s.MeterStart; chargedEnergy > max(0, s.ChargedEnergy) { - lp.energyMetrics.Update(chargedEnergy) - } - } + if chargedEnergy := lp.GetChargedEnergy() / 1e3; chargedEnergy > s.ChargedEnergy { + lp.energyMetrics.Update(chargedEnergy) } s.SolarPercentage = lo.ToPtr(lp.energyMetrics.SolarPercentage()) diff --git a/core/loadpoint_session_test.go b/core/loadpoint_session_test.go index 3fbf3b14e..a6f833ec1 100644 --- a/core/loadpoint_session_test.go +++ b/core/loadpoint_session_test.go @@ -241,7 +241,7 @@ func TestResetHeatingSession(t *testing.T) { assert.Equal(t, clock.Now(), lp.session.Created) clock.Add(36 * time.Hour) - me.EXPECT().TotalEnergy().Return(1.0, nil).Times(2) + me.EXPECT().TotalEnergy().Return(1.0, nil).MaxTimes(2) lp.resetHeatingSession() require.NotNil(t, lp.session)