Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,8 @@ def _limit_bat_power_discharge(self, required_power: float) -> float:
remaining_inverter_ac_out_power = 0
for inverter in data.data.pv_data.values():
try:
if len(data.data.counter_all_data.get_entry_of_element(inverter.num)["children"]) == 0:
continue
bat_power = self.get_bat_power_of_hybrid_system(inverter)
inverter_power = max((inverter.data.get.power + bat_power) * -1, 0)
remaining_inverter_ac_out_power += inverter.data.config.max_ac_out - inverter_power + bat_power * -1
Expand Down
23 changes: 22 additions & 1 deletion packages/control/bat_all_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ def test_limit_bat_power_discharge(bat_power: int,
data.data.pv_data["pv2"].data.config.max_ac_out = 5000
data.data.bat_data["bat1"] = Bat(1)
data.data.bat_data["bat1"].data.get.power = bat_power
mock_entry_children = Mock(return_value={"children": [{"id": 1, "type": "bat"}]})
mock_entry_children = Mock(return_value={"id": 5, "type": "pv", "children": [
{"id": 1, "type": "bat", "children": []}]})
monkeypatch.setattr(data.data.counter_all_data, "get_entry_of_element", mock_entry_children)

b = BatAll()
Expand All @@ -57,6 +58,26 @@ def test_limit_bat_power_discharge(bat_power: int,
assert power == expected_power


def test_limit_bat_power_discharge_no_hybrid_system(monkeypatch: pytest.MonkeyPatch):
# setup
data.data.pv_data = {"pv2": Pv(2)}
data.data.pv_data["pv2"].data.get.power = -100
data.data.pv_data["pv2"].data.config.max_ac_out = 5000
data.data.bat_data["bat1"] = Bat(1)
data.data.bat_data["bat1"].data.get.power = -4900
mock_entry_children = Mock(return_value={"id": 5, "type": "pv", "children": []})
monkeypatch.setattr(data.data.counter_all_data, "get_entry_of_element", mock_entry_children)

b = BatAll()
b.data.get.power = -4900

# execution
power = b._limit_bat_power_discharge(5100) # pyright: ignore[reportPrivateUsage]

# evaluation
assert power == 5100


@dataclass
class Params:
name: str
Expand Down