1919from frequenz .sdk .microgrid import connection_manager
2020from frequenz .sdk .microgrid .component import ComponentCategory , ComponentMetricId
2121from frequenz .sdk .timeseries import Sample
22+ from frequenz .sdk .timeseries ._quantities import Quantity
2223from frequenz .sdk .timeseries ._resampling import Resampler , ResamplerConfig , Sink , Source
2324
2425HOST = "microgrid.sandbox.api.frequenz.io"
@@ -33,11 +34,11 @@ async def _calculate_average(source: Source, sink: Sink) -> None:
3334 count += 1
3435 if sample .value is None :
3536 continue
36- avg = avg * (count - 1 ) / count + sample .value / count
37- await sink (Sample (datetime .now (timezone .utc ), avg ))
37+ avg = avg * (count - 1 ) / count + sample .value . base_value / count
38+ await sink (Sample (datetime .now (timezone .utc ), Quantity ( avg ) ))
3839
3940
40- async def _print_sample (sample : Sample ) -> None :
41+ async def _print_sample (sample : Sample [ Quantity ] ) -> None :
4142 print (f"\n Resampled average at { sample .timestamp } : { sample .value } \n " )
4243
4344
@@ -105,7 +106,7 @@ async def run() -> None: # pylint: disable=too-many-locals
105106 )
106107
107108 # Create a channel to calculate an average for all the data
108- average_chan = Broadcast [Sample ]("average" )
109+ average_chan = Broadcast [Sample [ Quantity ] ]("average" )
109110
110111 second_stage_resampler = Resampler (
111112 ResamplerConfig (resampling_period = timedelta (seconds = 3.0 ))
@@ -117,7 +118,7 @@ async def run() -> None: # pylint: disable=too-many-locals
117118 average_sender = average_chan .new_sender ()
118119
119120 # Needed until channels Senders raises exceptions on errors
120- async def sink_adapter (sample : Sample ) -> None :
121+ async def sink_adapter (sample : Sample [ Quantity ] ) -> None :
121122 await average_sender .send (sample )
122123
123124 print ("Starting..." )
0 commit comments