2525from frequenz .channels import Broadcast , Receiver , Sender
2626from google .protobuf .empty_pb2 import Empty # pylint: disable=no-name-in-module
2727
28+ from ..._internal ._constants import RECEIVER_MAX_SIZE
2829from ..component import (
2930 BatteryData ,
3031 Component ,
@@ -90,6 +91,7 @@ async def connections(
9091 async def meter_data (
9192 self ,
9293 component_id : int ,
94+ maxsize : int = RECEIVER_MAX_SIZE ,
9395 ) -> Receiver [MeterData ]:
9496 """Return a channel receiver that provides a `MeterData` stream.
9597
@@ -99,6 +101,7 @@ async def meter_data(
99101
100102 Args:
101103 component_id: id of the meter to get data for.
104+ maxsize: Size of the receiver's buffer.
102105
103106 Returns:
104107 A channel receiver that provides realtime meter data.
@@ -108,6 +111,7 @@ async def meter_data(
108111 async def battery_data (
109112 self ,
110113 component_id : int ,
114+ maxsize : int = RECEIVER_MAX_SIZE ,
111115 ) -> Receiver [BatteryData ]:
112116 """Return a channel receiver that provides a `BatteryData` stream.
113117
@@ -117,6 +121,7 @@ async def battery_data(
117121
118122 Args:
119123 component_id: id of the battery to get data for.
124+ maxsize: Size of the receiver's buffer.
120125
121126 Returns:
122127 A channel receiver that provides realtime battery data.
@@ -126,6 +131,7 @@ async def battery_data(
126131 async def inverter_data (
127132 self ,
128133 component_id : int ,
134+ maxsize : int = RECEIVER_MAX_SIZE ,
129135 ) -> Receiver [InverterData ]:
130136 """Return a channel receiver that provides an `InverterData` stream.
131137
@@ -135,6 +141,7 @@ async def inverter_data(
135141
136142 Args:
137143 component_id: id of the inverter to get data for.
144+ maxsize: Size of the receiver's buffer.
138145
139146 Returns:
140147 A channel receiver that provides realtime inverter data.
@@ -144,6 +151,7 @@ async def inverter_data(
144151 async def ev_charger_data (
145152 self ,
146153 component_id : int ,
154+ maxsize : int = RECEIVER_MAX_SIZE ,
147155 ) -> Receiver [EVChargerData ]:
148156 """Return a channel receiver that provides an `EvChargeData` stream.
149157
@@ -153,6 +161,7 @@ async def ev_charger_data(
153161
154162 Args:
155163 component_id: id of the ev charger to get data for.
164+ maxsize: Size of the receiver's buffer.
156165
157166 Returns:
158167 A channel receiver that provides realtime ev charger data.
@@ -440,6 +449,7 @@ async def _expect_category(
440449 async def meter_data (
441450 self ,
442451 component_id : int ,
452+ maxsize : int = RECEIVER_MAX_SIZE ,
443453 ) -> Receiver [MeterData ]:
444454 """Return a channel receiver that provides a `MeterData` stream.
445455
@@ -452,6 +462,7 @@ async def meter_data(
452462
453463 Args:
454464 component_id: id of the meter to get data for.
465+ maxsize: Size of the receiver's buffer.
455466
456467 Returns:
457468 A channel receiver that provides realtime meter data.
@@ -463,11 +474,12 @@ async def meter_data(
463474 return self ._get_component_data_channel (
464475 component_id ,
465476 MeterData .from_proto ,
466- ).new_receiver ()
477+ ).new_receiver (maxsize = maxsize )
467478
468479 async def battery_data (
469480 self ,
470481 component_id : int ,
482+ maxsize : int = RECEIVER_MAX_SIZE ,
471483 ) -> Receiver [BatteryData ]:
472484 """Return a channel receiver that provides a `BatteryData` stream.
473485
@@ -480,6 +492,7 @@ async def battery_data(
480492
481493 Args:
482494 component_id: id of the battery to get data for.
495+ maxsize: Size of the receiver's buffer.
483496
484497 Returns:
485498 A channel receiver that provides realtime battery data.
@@ -491,11 +504,12 @@ async def battery_data(
491504 return self ._get_component_data_channel (
492505 component_id ,
493506 BatteryData .from_proto ,
494- ).new_receiver ()
507+ ).new_receiver (maxsize = maxsize )
495508
496509 async def inverter_data (
497510 self ,
498511 component_id : int ,
512+ maxsize : int = RECEIVER_MAX_SIZE ,
499513 ) -> Receiver [InverterData ]:
500514 """Return a channel receiver that provides an `InverterData` stream.
501515
@@ -508,6 +522,7 @@ async def inverter_data(
508522
509523 Args:
510524 component_id: id of the inverter to get data for.
525+ maxsize: Size of the receiver's buffer.
511526
512527 Returns:
513528 A channel receiver that provides realtime inverter data.
@@ -519,11 +534,12 @@ async def inverter_data(
519534 return self ._get_component_data_channel (
520535 component_id ,
521536 InverterData .from_proto ,
522- ).new_receiver ()
537+ ).new_receiver (maxsize = maxsize )
523538
524539 async def ev_charger_data (
525540 self ,
526541 component_id : int ,
542+ maxsize : int = RECEIVER_MAX_SIZE ,
527543 ) -> Receiver [EVChargerData ]:
528544 """Return a channel receiver that provides an `EvChargeData` stream.
529545
@@ -536,6 +552,7 @@ async def ev_charger_data(
536552
537553 Args:
538554 component_id: id of the ev charger to get data for.
555+ maxsize: Size of the receiver's buffer.
539556
540557 Returns:
541558 A channel receiver that provides realtime ev charger data.
@@ -547,7 +564,7 @@ async def ev_charger_data(
547564 return self ._get_component_data_channel (
548565 component_id ,
549566 EVChargerData .from_proto ,
550- ).new_receiver ()
567+ ).new_receiver (maxsize = maxsize )
551568
552569 async def set_power (self , component_id : int , power_w : int ) -> Empty :
553570 """Send request to the Microgrid to set power for component.
0 commit comments