fix rs485 s eror self_sustain
This commit is contained in:
@@ -3,11 +3,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from dataclasses import replace
|
||||
|
||||
from services.control_exporter import (
|
||||
ControlSetpoints,
|
||||
InverterConfig,
|
||||
_deye_reg178_verify_with_double_read,
|
||||
_deye_tou_params,
|
||||
_deye_tou_power_verify_match,
|
||||
deye_reg_triggers_self_sustain_after_verify_exhaust,
|
||||
get_deye_mode,
|
||||
)
|
||||
|
||||
@@ -33,6 +37,29 @@ def _inv(*, min_soc: int | None = 12, reserve_soc: int | None = 20) -> InverterC
|
||||
)
|
||||
|
||||
|
||||
def _inv_350a() -> InverterConfig:
|
||||
"""350 A × 51.2 V = 17920 W — typický firmware clamp pro TOU power."""
|
||||
return replace(_inv(), max_charge_a=350, max_discharge_a=350)
|
||||
|
||||
|
||||
class ModbusVerifyPolicyTests(unittest.TestCase):
|
||||
def test_tou_power_accepts_firmware_max_w_clamp(self) -> None:
|
||||
inv = _inv_350a()
|
||||
self.assertTrue(_deye_tou_power_verify_match(7752, 17920, inv))
|
||||
self.assertTrue(_deye_tou_power_verify_match(16728, 17920, inv))
|
||||
|
||||
def test_reg178_double_read_recovers_from_glitch(self) -> None:
|
||||
ok, v = _deye_reg178_verify_with_double_read(48, 12014, 48)
|
||||
self.assertTrue(ok)
|
||||
self.assertEqual(v, 48)
|
||||
|
||||
def test_reg178_not_critical_for_self_sustain(self) -> None:
|
||||
self.assertFalse(deye_reg_triggers_self_sustain_after_verify_exhaust(178))
|
||||
|
||||
def test_reg108_critical_for_self_sustain(self) -> None:
|
||||
self.assertTrue(deye_reg_triggers_self_sustain_after_verify_exhaust(108))
|
||||
|
||||
|
||||
class DeyeTouParamsTests(unittest.TestCase):
|
||||
def test_sell_uses_reserve_soc(self) -> None:
|
||||
sp = ControlSetpoints(
|
||||
|
||||
Reference in New Issue
Block a user