implmemtace cuttoff genportu
Some checks failed
CI and deploy / migration-check (push) Failing after 9s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-04-20 10:41:10 +02:00
parent d8dbb284fd
commit b8515f30df
15 changed files with 265 additions and 5 deletions

View File

@@ -9,6 +9,7 @@ from services.control.exporter_monolith import (
ControlSetpoints,
InverterConfig,
_deye_reg178_verify_with_double_read,
_deye_reg179_verify_match,
_deye_tou_params,
_deye_tou_power_verify_match,
_deye_zero_export_amps_for_passive,
@@ -54,6 +55,11 @@ class ModbusVerifyPolicyTests(unittest.TestCase):
self.assertTrue(ok)
self.assertEqual(v, 48)
def test_reg179_verify_match_only_bits_0_1(self) -> None:
# expected=3 (enable), actual can have other bits set but bits0-1 must match
self.assertTrue(_deye_reg179_verify_match(3, 0xFFFB))
self.assertFalse(_deye_reg179_verify_match(3, 0xFFFA)) # bits0-1=2
def test_reg178_not_critical_for_self_sustain(self) -> None:
self.assertFalse(deye_reg_triggers_self_sustain_after_verify_exhaust(178))
@@ -95,6 +101,21 @@ class DeyeTouParamsTests(unittest.TestCase):
)
self.assertEqual(get_deye_mode(sp), "PASSIVE")
def test_export_ban_does_not_change_deye_mode(self) -> None:
sp = ControlSetpoints(
battery_w=0,
grid_export_limit=0,
ev1_current_a=0,
ev2_current_a=0,
heat_pump_enable=False,
grid_setpoint_w=0,
ev1_power_w=0,
ev2_power_w=0,
target_soc_pct=50,
export_ban=True,
)
self.assertEqual(get_deye_mode(sp), "PASSIVE")
def test_pv_led_export_with_small_battery_is_sell(self) -> None:
"""Obě záporné → SELL (bez porovnání |bat| vs |grid|)."""
sp = ControlSetpoints(