Skip to content

Commit 58db6bc

Browse files
Fix consumer power formula (#649)
2 parents d05f12d + 267884b commit 58db6bc

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

RELEASE_NOTES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
## Bug Fixes
44

55
- Fix the **API Reference** link in the documentation website navigation bar.
6+
7+
- Fix the consumer power formula

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_consumer_power_formula.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def non_consumer_component(component: Component) -> bool:
106106
# push all grid meters
107107
for idx, grid_meter in enumerate(grid_meters):
108108
if idx > 0:
109-
builder.push_oper("-")
109+
builder.push_oper("+")
110110
builder.push_component_metric(
111111
grid_meter.component_id, nones_are_zeros=False
112112
)

tests/timeseries/test_logical_meter.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# pylint: disable=too-many-locals
1818

1919

20-
class TestLogicalMeter:
20+
class TestLogicalMeter: # pylint: disable=too-many-public-methods
2121
"""Tests for the logical meter."""
2222

2323
async def test_grid_power_1(self, mocker: MockerFixture) -> None:
@@ -278,6 +278,22 @@ async def test_consumer_power_no_grid_meter(self, mocker: MockerFixture) -> None
278278
await mockgrid.mock_resampler.send_meter_power([20.0, 2.0, 3.0, 4.0, 5.0])
279279
assert (await consumer_power_receiver.receive()).value == Power.from_watts(20.0)
280280

281+
async def test_consumer_power_2_grid_meters(
282+
self,
283+
mocker: MockerFixture,
284+
) -> None:
285+
"""Test the grid power formula with grid meters."""
286+
mockgrid = MockMicrogrid(grid_meter=False)
287+
# with no further sucessor these will be detected as grid meters
288+
mockgrid.add_consumer_meters(2)
289+
await mockgrid.start(mocker)
290+
291+
logical_meter = microgrid.logical_meter()
292+
grid_consumption_recv = logical_meter.grid_consumption_power.new_receiver()
293+
294+
await mockgrid.mock_resampler.send_meter_power([1.0, 2.0])
295+
assert (await grid_consumption_recv.receive()).value == Power.from_watts(3.0)
296+
281297
async def test_consumer_power_no_grid_meter_no_consumer_meter(
282298
self, mocker: MockerFixture
283299
) -> None:

0 commit comments

Comments
 (0)