narovnani spravneho rezimu - nastavenim charge A
Some checks failed
CI and deploy / migration-check (push) Failing after 12s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-21 10:23:53 +02:00
parent 44a06b6288
commit eb425a26f2
8 changed files with 95 additions and 92 deletions

View File

@@ -1,4 +1,4 @@
"""PASSIVE + plán chce nabíjet: 108 = plný strop z DB, 109 = max (PV špička + domácnost)."""
"""PASSIVE + PV_SURPLUS: 108=0 (nepoužívat baterii), 109=max; 142 zůstává zero-export (1/2)."""
from __future__ import annotations
@@ -8,7 +8,23 @@ from services.control.setpoints import deye_battery_charge_discharge_amps
class PassivePvSurplusChargeAmpsTests(unittest.TestCase):
def test_passive_charge_while_exporting_grid_negative(self) -> None:
def test_pv_surplus_export_zeros_charge_amps(self) -> None:
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="PASSIVE",
self_sustain_local_use=False,
bat_w=-177,
grid_w=-2851,
max_charge_a=100,
max_discharge_a=90,
export_mode="PV_SURPLUS",
export_ban=False,
)
self.assertEqual(ch, 0)
self.assertEqual(dis, 90)
def test_pv_surplus_even_if_lp_shows_positive_battery_w(self) -> None:
"""Plán může mít kladný battery_w; exportní záměr je PV_SURPLUS → 108=0."""
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="PASSIVE",
@@ -17,12 +33,43 @@ class PassivePvSurplusChargeAmpsTests(unittest.TestCase):
grid_w=-2000,
max_charge_a=100,
max_discharge_a=100,
export_mode="PV_SURPLUS",
export_ban=False,
)
self.assertEqual(ch, 0)
self.assertEqual(dis, 100)
def test_passive_charge_without_export_mode_uses_max_108(self) -> None:
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="PASSIVE",
self_sustain_local_use=False,
bat_w=5000,
grid_w=0,
max_charge_a=100,
max_discharge_a=100,
export_mode="NONE",
export_ban=False,
)
self.assertEqual(ch, 100)
self.assertEqual(dis, 100)
def test_legacy_negative_grid_infers_pv_surplus(self) -> None:
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="PASSIVE",
self_sustain_local_use=False,
bat_w=0,
grid_w=-2000,
max_charge_a=100,
max_discharge_a=100,
export_mode=None,
export_ban=False,
)
self.assertEqual(ch, 0)
self.assertEqual(dis, 100)
def test_charge_mode_still_scales_108_from_battery_w(self) -> None:
"""CHARGE (síť + baterie): 108 podle plánu, ne vždy plný strop."""
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="CHARGE",
@@ -36,19 +83,6 @@ class PassivePvSurplusChargeAmpsTests(unittest.TestCase):
self.assertGreater(ch, 0)
self.assertEqual(dis, 0)
def test_passive_export_without_battery_charge_uses_max_108(self) -> None:
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,
deye_mode="PASSIVE",
self_sustain_local_use=False,
bat_w=0,
grid_w=-2000,
max_charge_a=100,
max_discharge_a=100,
)
self.assertEqual(ch, 100)
self.assertEqual(dis, 100)
def test_sell_unchanged(self) -> None:
ch, dis = deye_battery_charge_discharge_amps(
lock_battery=False,