uprava PV omeznovani
Some checks failed
CI and deploy / migration-check (push) Failing after 13s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-25 11:08:01 +02:00
parent f1a4dbd7e7
commit e06f76b9ff
8 changed files with 439 additions and 91 deletions

View File

@@ -11,6 +11,7 @@ from services.control.exporter_monolith import (
compute_pv_a_reg340_max_solar_w,
deye_reg_triggers_self_sustain_after_verify_exhaust,
)
from services.control.setpoints import plan_skips_deye_reg340_write
def _auto_mode() -> OperatingModeInfo:
@@ -102,6 +103,72 @@ class BuildSetpointsReg340Tests(unittest.TestCase):
assert sp is not None
self.assertEqual(sp.pv_a_allowed_w, 0)
def test_skipped_when_no_export_no_charge_no_curtail(self) -> None:
sp = _build_setpoints(
_auto_mode(),
_pi_base(
grid_setpoint_w=0,
battery_setpoint_w=0,
export_mode="NONE",
export_limit_w=0,
pv_a_curtailed_w=0,
),
pv_a_cap_w=10_000,
reg340_pv_a_control_enabled=True,
)
assert sp is not None
self.assertIsNone(sp.pv_a_allowed_w)
def test_writes_reg340_when_curtail_planned(self) -> None:
sp = _build_setpoints(
_auto_mode(),
_pi_base(
grid_setpoint_w=0,
battery_setpoint_w=0,
export_mode="NONE",
pv_a_curtailed_w=3000,
),
pv_a_cap_w=10_000,
reg340_pv_a_control_enabled=True,
)
assert sp is not None
self.assertEqual(sp.pv_a_allowed_w, 5000)
def test_writes_reg340_when_battery_charging_without_export(self) -> None:
sp = _build_setpoints(
_auto_mode(),
_pi_base(
grid_setpoint_w=0,
battery_setpoint_w=5000,
export_mode="NONE",
pv_a_curtailed_w=0,
),
pv_a_cap_w=10_000,
reg340_pv_a_control_enabled=True,
)
assert sp is not None
self.assertEqual(sp.pv_a_allowed_w, 10_000)
def test_plan_skips_helper(self) -> None:
self.assertTrue(
plan_skips_deye_reg340_write(
battery_setpoint_w=0,
grid_setpoint_w=0,
export_mode="NONE",
export_limit_w=0,
pv_a_curtailed_w=0,
)
)
self.assertFalse(
plan_skips_deye_reg340_write(
battery_setpoint_w=0,
grid_setpoint_w=-2000,
export_mode="PV_SURPLUS",
export_limit_w=2000,
pv_a_curtailed_w=0,
)
)
def test_skipped_when_reg340_control_disabled(self) -> None:
sp = _build_setpoints(
_auto_mode(),