1717from typing import Iterable , Iterator , List , Optional , Tuple
1818
1919import grpc
20+ from frequenz .api .common .components_pb2 import (
21+ COMPONENT_CATEGORY_BATTERY ,
22+ COMPONENT_CATEGORY_EV_CHARGER ,
23+ COMPONENT_CATEGORY_INVERTER ,
24+ COMPONENT_CATEGORY_METER ,
25+ ComponentCategory ,
26+ InverterType ,
27+ )
28+ from frequenz .api .common .metrics .electrical_pb2 import AC
29+ from frequenz .api .common .metrics_pb2 import Metric , MetricAggregation
2030from frequenz .api .microgrid .battery_pb2 import Battery
2131from frequenz .api .microgrid .battery_pb2 import Data as BatteryData
22- from frequenz .api .microgrid .common_pb2 import AC , Metric , MetricAggregation
23- from frequenz .api .microgrid .ev_charger_pb2 import EVCharger
32+ from frequenz .api .microgrid .ev_charger_pb2 import EvCharger
2433from frequenz .api .microgrid .inverter_pb2 import Inverter
25- from frequenz .api .microgrid .inverter_pb2 import Type as InverterType
34+ from frequenz .api .microgrid .inverter_pb2 import Metadata as InverterMetadata
2635from frequenz .api .microgrid .meter_pb2 import Data as MeterData
2736from frequenz .api .microgrid .meter_pb2 import Meter
2837from frequenz .api .microgrid .microgrid_pb2 import (
29- COMPONENT_CATEGORY_BATTERY ,
30- COMPONENT_CATEGORY_EV_CHARGER ,
31- COMPONENT_CATEGORY_INVERTER ,
32- COMPONENT_CATEGORY_METER ,
3338 Component ,
34- ComponentCategory ,
3539 ComponentData ,
3640 ComponentFilter ,
3741 ComponentIdParam ,
3842 ComponentList ,
3943 Connection ,
4044 ConnectionFilter ,
4145 ConnectionList ,
46+ MicrogridMetadata ,
4247 PowerLevelParam ,
4348 SetBoundsParam ,
49+ SetPowerActiveParam ,
50+ SetPowerReactiveParam ,
4451)
4552from frequenz .api .microgrid .microgrid_pb2_grpc import (
4653 MicrogridServicer ,
@@ -76,20 +83,21 @@ def __init__(
7683 if connections is not None :
7784 self .set_connections (connections )
7885
79- self ._latest_charge : Optional [PowerLevelParam ] = None
80- self ._latest_discharge : Optional [PowerLevelParam ] = None
86+ self ._latest_power : Optional [SetPowerActiveParam ] = None
8187
8288 def add_component (
8389 self ,
8490 component_id : int ,
8591 component_category : ComponentCategory .V ,
86- inverter_type : InverterType .V = InverterType .TYPE_UNSPECIFIED ,
92+ inverter_type : InverterType .V = InverterType .INVERTER_TYPE_UNSPECIFIED ,
8793 ) -> None :
8894 """Add a component to the mock service."""
8995 if component_category == ComponentCategory .COMPONENT_CATEGORY_INVERTER :
9096 self ._components .append (
9197 Component (
92- id = component_id , category = component_category , inverter = inverter_type
98+ id = component_id ,
99+ category = component_category ,
100+ inverter = InverterMetadata (type = inverter_type ),
93101 )
94102 )
95103 else :
@@ -116,14 +124,9 @@ def set_connections(self, connections: List[Tuple[int, int]]) -> None:
116124 )
117125
118126 @property
119- def latest_charge (self ) -> Optional [ PowerLevelParam ] :
127+ def latest_power (self ) -> SetPowerActiveParam | None :
120128 """Get argumetns of the latest charge request."""
121- return self ._latest_charge
122-
123- @property
124- def latest_discharge (self ) -> Optional [PowerLevelParam ]:
125- """Get arguments of the latest discharge request."""
126- return self ._latest_discharge
129+ return self ._latest_power
127130
128131 def get_bounds (self ) -> List [SetBoundsParam ]:
129132 """Return the list of received bounds."""
@@ -159,7 +162,7 @@ def ListConnections(
159162 connections = filter (lambda c : c .end in request .ends , connections )
160163 return ConnectionList (connections = connections )
161164
162- def GetComponentData (
165+ def StreamComponentData (
163166 self , request : ComponentIdParam , context : grpc .ServicerContext
164167 ) -> Iterator [ComponentData ]:
165168 """Return an iterator for mock ComponentData."""
@@ -194,40 +197,52 @@ def next_msg() -> ComponentData:
194197 if component .category == COMPONENT_CATEGORY_INVERTER :
195198 return ComponentData (id = request .id , inverter = Inverter ())
196199 if component .category == COMPONENT_CATEGORY_EV_CHARGER :
197- return ComponentData (id = request .id , ev_charger = EVCharger ())
200+ return ComponentData (id = request .id , ev_charger = EvCharger ())
198201 return ComponentData ()
199202
200203 num_messages = 3
201204 for _ in range (num_messages ):
202205 msg = next_msg ()
203206 yield msg
204207
205- def SetBounds (
206- self , request_iterator : Iterator [ SetBoundsParam ] , context : grpc .ServicerContext
208+ def SetPowerActive (
209+ self , request : SetPowerActiveParam , context : grpc .ServicerContext
207210 ) -> Empty :
208- """/nitrogen.Nitrogen/SetBounds method stub."""
209- for bound in request_iterator :
210- self ._bounds .append (bound )
211+ """/nitrogen.Nitrogen/SetPowerActive method stub."""
212+ self ._latest_power = request
211213 return Empty ()
212214
213- def Charge (self , request : PowerLevelParam , context : grpc .ServicerContext ) -> Empty :
214- """/nitrogen.Nitrogen/Charge method stub."""
215- self ._latest_charge = request
216- return Empty ()
217-
218- def Discharge (
219- self , request : PowerLevelParam , context : grpc .ServicerContext
215+ def SetPowerReactive (
216+ self , request : SetPowerReactiveParam , context : grpc .ServicerContext
220217 ) -> Empty :
221- """/nitrogen.Nitrogen/Discharge method stub."""
222- self ._latest_discharge = request
218+ """/nitrogen.Nitrogen/SetPowerReactive method stub."""
223219 return Empty ()
224220
221+ def GetMicrogridMetadata (
222+ self , request : Empty , context : grpc .ServicerContext
223+ ) -> MicrogridMetadata :
224+ """/nitrogen.Nitrogen/GetMicrogridMetadata method stub."""
225+ return MicrogridMetadata ()
226+
225227 def CanStreamData (
226228 self , request : ComponentIdParam , context : grpc .ServicerContext
227229 ) -> BoolValue :
228230 """/nitrogen.Nitrogen/CanStreamData method stub."""
229231 return BoolValue (value = True )
230232
233+ def AddExclusionBounds (
234+ self , request : SetBoundsParam , context : grpc .ServicerContext
235+ ) -> Timestamp :
236+ """/nitrogen.Nitrogen/AddExclusionBounds method stub."""
237+ return Timestamp ()
238+
239+ def AddInclusionBounds (
240+ self , request : SetBoundsParam , context : grpc .ServicerContext
241+ ) -> Timestamp :
242+ """/nitrogen.Nitrogen/AddExclusionBounds method stub."""
243+ self ._bounds .append (request )
244+ return Timestamp ()
245+
231246 def HotStandby (
232247 self , request : ComponentIdParam , context : grpc .ServicerContext
233248 ) -> Empty :
0 commit comments