Skip to content

Commit c71fd23

Browse files
committed
WIP
1 parent d8a06bd commit c71fd23

File tree

78 files changed

+3916
-2677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+3916
-2677
lines changed

benchmarks/power_distribution/power_distributor.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from frequenz.channels import Broadcast
1515
from frequenz.client.common.microgrid.components import ComponentId
16-
from frequenz.client.microgrid import Component, ComponentCategory
16+
from frequenz.client.microgrid.component import Battery
1717
from frequenz.quantities import Power
1818

1919
from frequenz.sdk import microgrid
@@ -116,8 +116,7 @@ async def run_test( # pylint: disable=too-many-locals
116116
battery_status_channel = Broadcast[ComponentPoolStatus](name="battery-status")
117117
power_result_channel = Broadcast[Result](name="power-result")
118118
async with PowerDistributingActor(
119-
component_category=ComponentCategory.BATTERY,
120-
component_type=None,
119+
component_type=Battery,
121120
requests_receiver=power_request_channel.new_receiver(),
122121
results_sender=power_result_channel.new_sender(),
123122
component_pool_status_sender=battery_status_channel.new_sender(),
@@ -143,10 +142,10 @@ async def run() -> None:
143142
ResamplerConfig2(resampling_period=timedelta(seconds=1.0)),
144143
)
145144

146-
all_batteries: set[Component] = connection_manager.get().component_graph.components(
147-
component_categories={ComponentCategory.BATTERY}
145+
all_batteries = connection_manager.get().component_graph.components(
146+
filter_by_types={Battery},
148147
)
149-
batteries_ids = {c.component_id for c in all_batteries}
148+
batteries_ids = {c.id for c in all_batteries}
150149
# Take some time to get data from components
151150
await asyncio.sleep(4)
152151
with open("/dev/stdout", "w", encoding="utf-8") as csvfile:

benchmarks/timeseries/benchmark_datasourcing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from typing import Any
1818

1919
from frequenz.channels import Broadcast, Receiver, ReceiverStoppedError
20-
from frequenz.client.microgrid import ComponentMetricId
20+
from frequenz.client.microgrid.metrics import Metric
2121

2222
from frequenz.sdk import microgrid
2323
from frequenz.sdk._internal._channels import ChannelRegistry
@@ -37,9 +37,9 @@
3737
sys.exit(1)
3838

3939
COMPONENT_METRIC_IDS = [
40-
ComponentMetricId.CURRENT_PHASE_1,
41-
ComponentMetricId.CURRENT_PHASE_2,
42-
ComponentMetricId.CURRENT_PHASE_3,
40+
Metric.AC_CURRENT_PHASE_1,
41+
Metric.AC_CURRENT_PHASE_2,
42+
Metric.AC_CURRENT_PHASE_3,
4343
]
4444

4545

examples/battery_pool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from frequenz.sdk import microgrid
1414
from frequenz.sdk.timeseries import ResamplerConfig2
1515

16-
MICROGRID_API_URL = "grpc://microgrid.sandbox.api.frequenz.io:62060"
16+
MICROGRID_API_URL = "grpc://microgrid.sandbox.api.frequenz.io:61060"
1717

1818

1919
async def main() -> None:

src/frequenz/sdk/microgrid/_data_pipeline.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from frequenz.channels import Broadcast, Sender
2020
from frequenz.client.common.microgrid.components import ComponentId
21-
from frequenz.client.microgrid import ComponentCategory, InverterType
21+
from frequenz.client.microgrid.component import Battery, EvCharger, SolarInverter
2222

2323
from frequenz.sdk.microgrid._power_managing._base_classes import Algorithm, DefaultPower
2424

@@ -105,23 +105,22 @@ def __init__(
105105
self._channel_registry,
106106
api_power_request_timeout=api_power_request_timeout,
107107
power_manager_algorithm=Algorithm.SHIFTING_MATRYOSHKA,
108-
component_category=ComponentCategory.BATTERY,
109108
default_power=DefaultPower.ZERO,
109+
component_class=Battery,
110110
)
111111
self._ev_power_wrapper = PowerWrapper(
112112
self._channel_registry,
113113
api_power_request_timeout=api_power_request_timeout,
114114
power_manager_algorithm=Algorithm.MATRYOSHKA,
115-
component_category=ComponentCategory.EV_CHARGER,
116115
default_power=DefaultPower.MAX,
116+
component_class=EvCharger,
117117
)
118118
self._pv_power_wrapper = PowerWrapper(
119119
self._channel_registry,
120120
api_power_request_timeout=api_power_request_timeout,
121121
power_manager_algorithm=Algorithm.MATRYOSHKA,
122-
component_category=ComponentCategory.INVERTER,
123-
component_type=InverterType.SOLAR,
124122
default_power=DefaultPower.MIN,
123+
component_class=SolarInverter,
125124
)
126125

127126
self._logical_meter: LogicalMeter | None = None
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# License: MIT
22
# Copyright © 2022 Frequenz Energy-as-a-Service GmbH
33

4-
"""The DataSourcingActor."""
4+
"""Data sourcing actor."""
55

6-
from ._component_metric_request import ComponentMetricId, ComponentMetricRequest
6+
from frequenz.client.microgrid.metrics import Metric
7+
8+
from ._component_metric_request import ComponentMetricRequest
79
from .data_sourcing import DataSourcingActor
810

911
__all__ = [
10-
"ComponentMetricId",
12+
"Metric",
1113
"ComponentMetricRequest",
1214
"DataSourcingActor",
1315
]

src/frequenz/sdk/microgrid/_data_sourcing/_component_metric_request.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
from datetime import datetime
88

99
from frequenz.client.common.microgrid.components import ComponentId
10-
from frequenz.client.microgrid import ComponentMetricId
10+
from frequenz.client.microgrid.metrics import Metric
1111

12-
__all__ = ["ComponentMetricRequest", "ComponentMetricId"]
12+
from frequenz.sdk.microgrid._old_component_data import TransitionalMetric
13+
14+
__all__ = ["ComponentMetricRequest", "Metric"]
1315

1416

1517
@dataclass
@@ -25,7 +27,7 @@ class ComponentMetricRequest:
2527
metric. For example, requesters can use different `namespace` values to subscribe to
2628
raw or resampled data streams separately. This ensures that each requester receives
2729
the appropriate type of data without interference. Requests with the same
28-
`namespace`, `component_id`, and `metric_id` will use the same channel, preventing
30+
`namespace`, `component_id`, and `metric` will use the same channel, preventing
2931
unnecessary duplication of data streams.
3032
3133
The requester and provider must use the same channel name so that they can
@@ -40,7 +42,7 @@ class ComponentMetricRequest:
4042
component_id: ComponentId
4143
"""The ID of the requested component."""
4244

43-
metric_id: ComponentMetricId
45+
metric: Metric | TransitionalMetric
4446
"""The ID of the requested component's metric."""
4547

4648
start_time: datetime | None
@@ -60,7 +62,7 @@ def get_channel_name(self) -> str:
6062
"component_metric_request<"
6163
f"namespace={self.namespace},"
6264
f"component_id={self.component_id},"
63-
f"metric_id={self.metric_id.name}"
65+
f"metric={self.metric.name}"
6466
f"{start}"
6567
">"
6668
)

0 commit comments

Comments
 (0)