From 287275dad22f2ae89beaceea1da6a7fd7ff4d054 Mon Sep 17 00:00:00 2001 From: Alexander Hartung Date: Mon, 7 Sep 2026 14:11:26 +0200 Subject: [PATCH] Keep small charged energy amounts --- packages/control/chargelog/chargelog.py | 2 +- packages/control/chargelog/chargelog_test.py | 30 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/control/chargelog/chargelog.py b/packages/control/chargelog/chargelog.py index dcfbbfeb3d..ebcbce669f 100644 --- a/packages/control/chargelog/chargelog.py +++ b/packages/control/chargelog/chargelog.py @@ -369,7 +369,7 @@ def calculate_charged_energy_by_source(cp, processed_entries, reference_entries, raise TypeError(f"Unbekannter Referenz-Zeitpunkt {reference}") log.debug(f'power source {relative_energy_source}') log.debug(f"charged_energy {charged_energy}") - if charged_energy < 100: + if charged_energy <= 0: # wenn nur entladen wurde, keine Anteile berechnen return {source: 0 for source in ENERGY_SOURCES} return _get_charged_energy_by_source( diff --git a/packages/control/chargelog/chargelog_test.py b/packages/control/chargelog/chargelog_test.py index 3993d15ede..c9c5bb4aa8 100644 --- a/packages/control/chargelog/chargelog_test.py +++ b/packages/control/chargelog/chargelog_test.py @@ -166,3 +166,33 @@ def test_calc_charge_cost_reference_middle_day_change(mock_data, monkeypatch): assert cp.data.set.log.charged_energy_by_source == { 'grid': 1242.8, 'pv': 385.8, 'bat': 671.4, 'cp': 0.0} assert round(cp.data.set.log.costs, 5) == 0.5 + + +def test_small_positive_charge_is_assigned_to_energy_sources(mock_data, monkeypatch): + cp = Chargepoint(4, None) + charged_energy = 80 + cp.data.set.log.imported_since_plugged = cp.data.set.log.imported_since_mode_switch = charged_energy + + # Beispielhafte Verteilung + processed_entries = { + "totals": { + "cp": { + "cp4": { + "energy_imported": 1000, + "bat": 250, + "cp": 0, + "grid": 500, + "pv": 250, + } + } + } + } + monkeypatch.setattr(chargelog, "_get_reference_position", Mock(return_value=chargelog.ReferenceTime.START)) + + charged_energy_by_source = chargelog.calculate_charged_energy_by_source( + cp, processed_entries, [] + ) + + assert charged_energy_by_source == {'bat': 20, 'cp': 0, 'grid': 40, 'pv': 20} + + assert sum(charged_energy_by_source.values()) == cp.data.set.log.imported_since_mode_switch