Skip to content

Commit bbc2bcd

Browse files
committed
Add some tests for scenarios with no meter.
Signed-off-by: Mathias L. Baumann <[email protected]>
1 parent 1118cce commit bbc2bcd

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

tests/timeseries/mock_resampler.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,13 @@ async def send_meter_power(self, values: list[float | None]) -> None:
145145
sample = Sample(self._next_ts, None if not value else Quantity(value))
146146
await chan.send(sample)
147147

148+
async def send_chp_power(self, values: list[float | None]) -> None:
149+
"""Send the given values as resampler output for CHP power."""
150+
assert len(values) == len(self._chp_power_senders)
151+
for chan, value in zip(self._chp_power_senders, values):
152+
sample = Sample(self._next_ts, None if not value else Quantity(value))
153+
await chan.send(sample)
154+
148155
async def send_pv_inverter_power(self, values: list[float | None]) -> None:
149156
"""Send the given values as resampler output for PV Inverter power."""
150157
assert len(values) == len(self._pv_inverter_power_senders)

tests/timeseries/test_logical_meter.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,31 @@ async def test_grid_production_consumption_power_consumer_meter(
136136
assert (await grid_production_recv.receive()).value == Power.from_watts(4.0)
137137
assert (await grid_consumption_recv.receive()).value == Power.from_watts(0.0)
138138

139+
async def test_grid_production_consumption_power_no_grid_meter(
140+
self,
141+
mocker: MockerFixture,
142+
) -> None:
143+
"""Test the grid production and consumption power formulas."""
144+
mockgrid = MockMicrogrid(grid_meter=False)
145+
mockgrid.add_batteries(2)
146+
mockgrid.add_solar_inverters(1)
147+
await mockgrid.start(mocker)
148+
149+
logical_meter = microgrid.logical_meter()
150+
grid_recv = logical_meter.grid_power.new_receiver()
151+
grid_production_recv = logical_meter.grid_production_power.new_receiver()
152+
grid_consumption_recv = logical_meter.grid_consumption_power.new_receiver()
153+
154+
await mockgrid.mock_resampler.send_meter_power([2.5, 3.5, 4.0])
155+
assert (await grid_recv.receive()).value == Power.from_watts(10.0)
156+
assert (await grid_production_recv.receive()).value == Power.from_watts(0.0)
157+
assert (await grid_consumption_recv.receive()).value == Power.from_watts(10.0)
158+
159+
await mockgrid.mock_resampler.send_meter_power([3.0, -3.0, -4.0])
160+
assert (await grid_recv.receive()).value == Power.from_watts(-4.0)
161+
assert (await grid_production_recv.receive()).value == Power.from_watts(4.0)
162+
assert (await grid_consumption_recv.receive()).value == Power.from_watts(0.0)
163+
139164
async def test_chp_power(self, mocker: MockerFixture) -> None:
140165
"""Test the chp power formula."""
141166
mockgrid = MockMicrogrid(grid_meter=False)
@@ -267,6 +292,23 @@ async def test_producer_power_no_chp(self, mocker: MockerFixture) -> None:
267292
await mockgrid.mock_resampler.send_meter_power([2.0, 3.0])
268293
assert (await producer_power_receiver.receive()).value == Power.from_watts(5.0)
269294

295+
async def test_producer_power_no_pv_no_consumer_meter(
296+
self, mocker: MockerFixture
297+
) -> None:
298+
"""Test the producer power formula without pv and without consumer meter."""
299+
mockgrid = MockMicrogrid(grid_meter=False)
300+
mockgrid.add_chps(1)
301+
await mockgrid.start(mocker)
302+
303+
logical_meter = microgrid.logical_meter()
304+
producer_power_receiver = logical_meter.producer_power.new_receiver()
305+
306+
# As there is only one meter in the microgrid, the formula interprets it
307+
# as main meter instead of chp meter, so it reads the power from the
308+
# chp component directly.
309+
await mockgrid.mock_resampler.send_chp_power([2.0])
310+
assert (await producer_power_receiver.receive()).value == Power.from_watts(2.0)
311+
270312
async def test_producer_power_no_pv(self, mocker: MockerFixture) -> None:
271313
"""Test the producer power formula without pv."""
272314
mockgrid = MockMicrogrid(grid_meter=False)

0 commit comments

Comments
 (0)