fix soc v TOU (ne 100) pri ne-grid-charge
This commit is contained in:
@@ -158,8 +158,8 @@ class DeyeTouParamsTests(unittest.TestCase):
|
||||
self.assertFalse(g)
|
||||
self.assertEqual(s, 12)
|
||||
|
||||
def test_passive_negative_sell_steers_tou_above_current_soc(self) -> None:
|
||||
"""Záporná vykupní → TOU SOC = 100 % (priorita akumulace vs. přetok)."""
|
||||
def test_passive_negative_sell_tou_stays_min_soc(self) -> None:
|
||||
"""PASSIVE: záporná vykupní nenastavuje TOU na 100 — zůstává min_soc (145/export_ban řeší síť)."""
|
||||
sp = ControlSetpoints(
|
||||
battery_w=-400,
|
||||
grid_export_limit=0,
|
||||
@@ -175,9 +175,10 @@ class DeyeTouParamsTests(unittest.TestCase):
|
||||
self.assertEqual(get_deye_mode(sp), "PASSIVE")
|
||||
_p, s, g = _deye_tou_params(sp, _inv(min_soc=12, reserve_soc=20))
|
||||
self.assertFalse(g)
|
||||
self.assertEqual(s, 100)
|
||||
self.assertEqual(s, 12)
|
||||
|
||||
def test_passive_planned_charge_steers_tou(self) -> None:
|
||||
def test_passive_planned_pv_charge_tou_stays_min_soc(self) -> None:
|
||||
"""PASSIVE s kladným battery_w bez grid importu: CHARGE to není — TOU je stále min_soc."""
|
||||
sp = ControlSetpoints(
|
||||
battery_w=800,
|
||||
grid_export_limit=0,
|
||||
@@ -193,7 +194,7 @@ class DeyeTouParamsTests(unittest.TestCase):
|
||||
self.assertEqual(get_deye_mode(sp), "PASSIVE")
|
||||
_p, s, g = _deye_tou_params(sp, _inv(min_soc=12, reserve_soc=20))
|
||||
self.assertFalse(g)
|
||||
self.assertEqual(s, 100)
|
||||
self.assertEqual(s, 12)
|
||||
|
||||
def test_charge_unchanged_grid_charge(self) -> None:
|
||||
sp = ControlSetpoints(
|
||||
@@ -212,6 +213,24 @@ class DeyeTouParamsTests(unittest.TestCase):
|
||||
self.assertTrue(g)
|
||||
self.assertEqual(s, 95)
|
||||
|
||||
def test_charge_target_soc_respects_max_soc_100(self) -> None:
|
||||
sp = ControlSetpoints(
|
||||
battery_w=5000,
|
||||
grid_export_limit=0,
|
||||
ev1_current_a=0,
|
||||
ev2_current_a=0,
|
||||
heat_pump_enable=False,
|
||||
grid_setpoint_w=5000,
|
||||
ev1_power_w=0,
|
||||
ev2_power_w=0,
|
||||
target_soc_pct=80,
|
||||
)
|
||||
self.assertEqual(get_deye_mode(sp), "CHARGE")
|
||||
inv = replace(_inv(), max_soc_percent=100)
|
||||
_p, s, g = _deye_tou_params(sp, inv)
|
||||
self.assertTrue(g)
|
||||
self.assertEqual(s, 100)
|
||||
|
||||
def test_charge_any_positive_pair_without_w_threshold(self) -> None:
|
||||
sp = ControlSetpoints(
|
||||
battery_w=50,
|
||||
|
||||
Reference in New Issue
Block a user