@@ -124,3 +124,75 @@ async def test_grid_power_2(
124124
125125 assert len (results ) == 10
126126 assert results == meter_sums
127+
128+ async def test_battery_and_pv_power ( # pylint: disable=too-many-locals
129+ self ,
130+ mocker : MockerFixture ,
131+ ) -> None :
132+ """Test the battery power and pv power formulas."""
133+ mockgrid = await MockMicrogrid .new (mocker )
134+ mockgrid .add_batteries (3 )
135+ mockgrid .add_solar_inverters (2 )
136+ request_sender , channel_registry = await mockgrid .start ()
137+ logical_meter = LogicalMeter (
138+ channel_registry ,
139+ request_sender ,
140+ microgrid .get ().component_graph ,
141+ )
142+
143+ battery_power_recv = await logical_meter .battery_power ()
144+ pv_power_recv = await logical_meter .pv_power ()
145+
146+ bat_inv_receivers = [
147+ await self ._get_resampled_stream (
148+ logical_meter ,
149+ channel_registry ,
150+ request_sender ,
151+ meter_id ,
152+ )
153+ for meter_id in mockgrid .battery_inverter_ids
154+ ]
155+
156+ pv_inv_receivers = [
157+ await self ._get_resampled_stream (
158+ logical_meter ,
159+ channel_registry ,
160+ request_sender ,
161+ meter_id ,
162+ )
163+ for meter_id in mockgrid .pv_inverter_ids
164+ ]
165+
166+ battery_results = []
167+ pv_results = []
168+ battery_inv_sums = []
169+ pv_inv_sums = []
170+ for _ in range (10 ):
171+ bat_inv_sum = 0.0
172+ pv_inv_sum = 0.0
173+ for recv in bat_inv_receivers :
174+ val = await recv .receive ()
175+ assert val is not None and val .value is not None and val .value > 0.0
176+ bat_inv_sum += val .value
177+ battery_inv_sums .append (bat_inv_sum )
178+
179+ for recv in pv_inv_receivers :
180+ val = await recv .receive ()
181+ assert val is not None and val .value is not None and val .value > 0.0
182+ pv_inv_sum += val .value
183+ pv_inv_sums .append (pv_inv_sum )
184+
185+ val = await battery_power_recv .receive ()
186+ assert val is not None and val .value is not None
187+ battery_results .append (val .value )
188+
189+ val = await pv_power_recv .receive ()
190+ assert val is not None and val .value is not None
191+ pv_results .append (val .value )
192+
193+ await mockgrid .cleanup ()
194+
195+ assert len (battery_results ) == 10
196+ assert battery_results == battery_inv_sums
197+ assert len (pv_results ) == 10
198+ assert pv_results == pv_inv_sums
0 commit comments