Skip to content

Commit 6d5ec59

Browse files
committed
Provide access to new API using new v1alpha8 module
Introduces a new module `v1alpha8` that provides all the updates/changes that the common-api introduces. Signed-off-by: Mathias L. Baumann <[email protected]>
1 parent 954aa61 commit 6d5ec59

File tree

6 files changed

+731
-0
lines changed

6 files changed

+731
-0
lines changed

src/frequenz/client/common/v1alpha8/__init__.py

Whitespace-only changes.
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# License: MIT
2+
# Copyright © 2024 Frequenz Energy-as-a-Service GmbH
3+
4+
"""Module to define the metrics used with the common client."""
5+
6+
from enum import Enum
7+
from typing import Self
8+
9+
# pylint: disable=no-name-in-module
10+
from frequenz.api.common.v1alpha8.metrics.metrics_pb2 import Metric as PBMetric
11+
12+
# pylint: enable=no-name-in-module
13+
14+
15+
class Metric(Enum):
16+
"""List of supported metrics.
17+
18+
AC energy metrics information:
19+
* This energy metric is reported directly from the component, and not a
20+
result of aggregations in our systems. If a component does not have this
21+
metric, this field cannot be populated.
22+
* Components that provide energy metrics reset this metric from time to
23+
time. This behaviour is specific to each component model. E.g., some
24+
components reset it on UTC 00:00:00.
25+
* This energy metric does not specify the timestamp since when the energy
26+
was being accumulated, and therefore can be inconsistent.
27+
"""
28+
29+
# Default value
30+
UNSPECIFIED = PBMetric.METRIC_UNSPECIFIED
31+
32+
# DC electricity metrics
33+
DC_VOLTAGE = PBMetric.METRIC_DC_VOLTAGE
34+
DC_CURRENT = PBMetric.METRIC_DC_CURRENT
35+
DC_POWER = PBMetric.METRIC_DC_POWER
36+
37+
# General AC electricity metrics
38+
AC_FREQUENCY = PBMetric.METRIC_AC_FREQUENCY
39+
AC_VOLTAGE = PBMetric.METRIC_AC_VOLTAGE
40+
AC_VOLTAGE_PHASE_1_N = PBMetric.METRIC_AC_VOLTAGE_PHASE_1_N
41+
AC_VOLTAGE_PHASE_2_N = PBMetric.METRIC_AC_VOLTAGE_PHASE_2_N
42+
AC_VOLTAGE_PHASE_3_N = PBMetric.METRIC_AC_VOLTAGE_PHASE_3_N
43+
AC_VOLTAGE_PHASE_1_PHASE_2 = PBMetric.METRIC_AC_VOLTAGE_PHASE_1_PHASE_2
44+
AC_VOLTAGE_PHASE_2_PHASE_3 = PBMetric.METRIC_AC_VOLTAGE_PHASE_2_PHASE_3
45+
AC_VOLTAGE_PHASE_3_PHASE_1 = PBMetric.METRIC_AC_VOLTAGE_PHASE_3_PHASE_1
46+
AC_CURRENT = PBMetric.METRIC_AC_CURRENT
47+
AC_CURRENT_PHASE_1 = PBMetric.METRIC_AC_CURRENT_PHASE_1
48+
AC_CURRENT_PHASE_2 = PBMetric.METRIC_AC_CURRENT_PHASE_2
49+
AC_CURRENT_PHASE_3 = PBMetric.METRIC_AC_CURRENT_PHASE_3
50+
51+
# AC power metrics
52+
AC_POWER_APPARENT = PBMetric.METRIC_AC_POWER_APPARENT
53+
AC_POWER_APPARENT_PHASE_1 = PBMetric.METRIC_AC_POWER_APPARENT_PHASE_1
54+
AC_POWER_APPARENT_PHASE_2 = PBMetric.METRIC_AC_POWER_APPARENT_PHASE_2
55+
AC_POWER_APPARENT_PHASE_3 = PBMetric.METRIC_AC_POWER_APPARENT_PHASE_3
56+
AC_POWER_ACTIVE = PBMetric.METRIC_AC_POWER_ACTIVE
57+
AC_POWER_ACTIVE_PHASE_1 = PBMetric.METRIC_AC_POWER_ACTIVE_PHASE_1
58+
AC_POWER_ACTIVE_PHASE_2 = PBMetric.METRIC_AC_POWER_ACTIVE_PHASE_2
59+
AC_POWER_ACTIVE_PHASE_3 = PBMetric.METRIC_AC_POWER_ACTIVE_PHASE_3
60+
AC_POWER_REACTIVE = PBMetric.METRIC_AC_POWER_REACTIVE
61+
AC_POWER_REACTIVE_PHASE_1 = PBMetric.METRIC_AC_POWER_REACTIVE_PHASE_1
62+
AC_POWER_REACTIVE_PHASE_2 = PBMetric.METRIC_AC_POWER_REACTIVE_PHASE_2
63+
AC_POWER_REACTIVE_PHASE_3 = PBMetric.METRIC_AC_POWER_REACTIVE_PHASE_3
64+
65+
# AC power factor
66+
AC_POWER_FACTOR = PBMetric.METRIC_AC_POWER_FACTOR
67+
AC_POWER_FACTOR_PHASE_1 = PBMetric.METRIC_AC_POWER_FACTOR_PHASE_1
68+
AC_POWER_FACTOR_PHASE_2 = PBMetric.METRIC_AC_POWER_FACTOR_PHASE_2
69+
AC_POWER_FACTOR_PHASE_3 = PBMetric.METRIC_AC_POWER_FACTOR_PHASE_3
70+
71+
# AC energy metrics - Please be careful when using and check Enum docs
72+
AC_ENERGY_APPARENT = PBMetric.METRIC_AC_ENERGY_APPARENT
73+
AC_ENERGY_APPARENT_PHASE_1 = PBMetric.METRIC_AC_ENERGY_APPARENT_PHASE_1
74+
AC_ENERGY_APPARENT_PHASE_2 = PBMetric.METRIC_AC_ENERGY_APPARENT_PHASE_2
75+
AC_ENERGY_APPARENT_PHASE_3 = PBMetric.METRIC_AC_ENERGY_APPARENT_PHASE_3
76+
AC_ENERGY_ACTIVE = PBMetric.METRIC_AC_ENERGY_ACTIVE
77+
AC_ENERGY_ACTIVE_PHASE_1 = PBMetric.METRIC_AC_ENERGY_ACTIVE_PHASE_1
78+
AC_ENERGY_ACTIVE_PHASE_2 = PBMetric.METRIC_AC_ENERGY_ACTIVE_PHASE_2
79+
AC_ENERGY_ACTIVE_PHASE_3 = PBMetric.METRIC_AC_ENERGY_ACTIVE_PHASE_3
80+
AC_ENERGY_ACTIVE_CONSUMED = PBMetric.METRIC_AC_ENERGY_ACTIVE_CONSUMED
81+
AC_ENERGY_ACTIVE_CONSUMED_PHASE_1 = (
82+
PBMetric.METRIC_AC_ENERGY_ACTIVE_CONSUMED_PHASE_1
83+
)
84+
AC_ENERGY_ACTIVE_CONSUMED_PHASE_2 = (
85+
PBMetric.METRIC_AC_ENERGY_ACTIVE_CONSUMED_PHASE_2
86+
)
87+
AC_ENERGY_ACTIVE_CONSUMED_PHASE_3 = (
88+
PBMetric.METRIC_AC_ENERGY_ACTIVE_CONSUMED_PHASE_3
89+
)
90+
AC_ENERGY_ACTIVE_DELIVERED = PBMetric.METRIC_AC_ENERGY_ACTIVE_DELIVERED
91+
AC_ENERGY_ACTIVE_DELIVERED_PHASE_1 = (
92+
PBMetric.METRIC_AC_ENERGY_ACTIVE_DELIVERED_PHASE_1
93+
)
94+
AC_ENERGY_ACTIVE_DELIVERED_PHASE_2 = (
95+
PBMetric.METRIC_AC_ENERGY_ACTIVE_DELIVERED_PHASE_2
96+
)
97+
AC_ENERGY_ACTIVE_DELIVERED_PHASE_3 = (
98+
PBMetric.METRIC_AC_ENERGY_ACTIVE_DELIVERED_PHASE_3
99+
)
100+
AC_ENERGY_REACTIVE = PBMetric.METRIC_AC_ENERGY_REACTIVE
101+
AC_ENERGY_REACTIVE_PHASE_1 = PBMetric.METRIC_AC_ENERGY_REACTIVE_PHASE_1
102+
AC_ENERGY_REACTIVE_PHASE_2 = PBMetric.METRIC_AC_ENERGY_REACTIVE_PHASE_2
103+
AC_ENERGY_REACTIVE_PHASE_3 = PBMetric.METRIC_AC_ENERGY_REACTIVE_PHASE_3
104+
105+
# AC harmonics
106+
AC_TOTAL_HARMONIC_DISTORTION_CURRENT = (
107+
PBMetric.METRIC_AC_TOTAL_HARMONIC_DISTORTION_CURRENT
108+
)
109+
AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_1 = (
110+
PBMetric.METRIC_AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_1
111+
)
112+
AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_2 = (
113+
PBMetric.METRIC_AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_2
114+
)
115+
AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_3 = (
116+
PBMetric.METRIC_AC_TOTAL_HARMONIC_DISTORTION_CURRENT_PHASE_3
117+
)
118+
119+
# General BMS metrics
120+
BATTERY_CAPACITY = PBMetric.METRIC_BATTERY_CAPACITY
121+
BATTERY_SOC_PCT = PBMetric.METRIC_BATTERY_SOC_PCT
122+
BATTERY_TEMPERATURE = PBMetric.METRIC_BATTERY_TEMPERATURE
123+
124+
# General inverter metrics
125+
INVERTER_TEMPERATURE = PBMetric.METRIC_INVERTER_TEMPERATURE
126+
INVERTER_TEMPERATURE_CABINET = PBMetric.METRIC_INVERTER_TEMPERATURE_CABINET
127+
INVERTER_TEMPERATURE_HEATSINK = PBMetric.METRIC_INVERTER_TEMPERATURE_HEATSINK
128+
INVERTER_TEMPERATURE_TRANSFORMER = PBMetric.METRIC_INVERTER_TEMPERATURE_TRANSFORMER
129+
130+
# EV charging station metrics
131+
EV_CHARGER_TEMPERATURE = PBMetric.METRIC_EV_CHARGER_TEMPERATURE
132+
133+
# General sensor metrics
134+
SENSOR_WIND_SPEED = PBMetric.METRIC_SENSOR_WIND_SPEED
135+
SENSOR_WIND_DIRECTION = PBMetric.METRIC_SENSOR_WIND_DIRECTION
136+
SENSOR_TEMPERATURE = PBMetric.METRIC_SENSOR_TEMPERATURE
137+
SENSOR_RELATIVE_HUMIDITY = PBMetric.METRIC_SENSOR_RELATIVE_HUMIDITY
138+
SENSOR_DEW_POINT = PBMetric.METRIC_SENSOR_DEW_POINT
139+
SENSOR_AIR_PRESSURE = PBMetric.METRIC_SENSOR_AIR_PRESSURE
140+
SENSOR_IRRADIANCE = PBMetric.METRIC_SENSOR_IRRADIANCE
141+
142+
@classmethod
143+
def from_proto(cls, metric: PBMetric.ValueType) -> Self:
144+
"""Convert a protobuf Metric value to Metric enum.
145+
146+
Args:
147+
metric: Metric to convert.
148+
Returns:
149+
Enum value corresponding to the protobuf message.
150+
"""
151+
if not any(m.value == metric for m in cls):
152+
return cls(Metric.UNSPECIFIED)
153+
154+
return cls(metric)
155+
156+
def to_proto(self) -> PBMetric.ValueType:
157+
"""Convert a Metric object to protobuf Metric.
158+
159+
Returns:
160+
Protobuf message corresponding to the Metric object.
161+
"""
162+
return self.value

src/frequenz/client/common/v1alpha8/microgrid/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)