Skip to content

Commit bde35b8

Browse files
Change energy to use energy_consumed and energy_delivered
Signed-off-by: Flora <[email protected]>
1 parent 4ae42cf commit bde35b8

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

RELEASE_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
## New Features
1313

1414
* Add Readme information
15+
* Use energy_consumed and energy_delivered
1516

1617
## Bug Fixes
1718

src/frequenz/reporting/_reporting.py

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,26 +95,46 @@ async def cumulative_energy(
9595
production += last_value_production
9696

9797
else:
98-
# Directly use energy values if using AC_ACTIVE_ENERGY
99-
consumption = sum(
100-
m2.value - m1.value
101-
for m1, m2 in zip(metric_samples, metric_samples[1:])
102-
if m2.value - m1.value > 0
103-
)
104-
production = sum(
105-
m2.value - m1.value
106-
for m1, m2 in zip(metric_samples, metric_samples[1:])
107-
if m2.value - m1.value < 0
98+
# Fetch energy consumption and production metrics separately
99+
consumption_samples = [
100+
sample
101+
async for sample in client.list_microgrid_components_data(
102+
microgrid_components=[(microgrid_id, [component_id])],
103+
metrics=Metric.AC_ACTIVE_ENERGY_CONSUMED,
104+
start_dt=start_time,
105+
end_dt=end_time,
106+
resampling_period=resampling_period,
107+
)
108+
]
109+
110+
production_samples = [
111+
sample
112+
async for sample in client.list_microgrid_components_data(
113+
microgrid_components=[(microgrid_id, [component_id])],
114+
metrics=Metric.AC_ACTIVE_ENERGY_DELIVERED,
115+
start_dt=start_time,
116+
end_dt=end_time,
117+
resampling_period=resampling_period,
118+
)
119+
]
120+
121+
consumption = (
122+
sum(
123+
m2.value - m1.value
124+
for m1, m2 in zip(consumption_samples, consumption_samples[1:])
125+
)
126+
if len(consumption_samples) > 1
127+
else float("nan")
108128
)
109129

110-
if len(metric_samples) > 1:
111-
last_value_diff = metric_samples[-1].value - metric_samples[-2].value
112-
if last_value_diff > 0:
113-
consumption += last_value_diff
114-
elif last_value_diff < 0:
115-
production += last_value_diff
116-
else:
117-
consumption = production = float("nan")
130+
production = (
131+
sum(
132+
m2.value - m1.value
133+
for m1, m2 in zip(production_samples, production_samples[1:])
134+
)
135+
if len(production_samples) > 1
136+
else float("nan")
137+
)
118138

119139
return CumulativeEnergy(
120140
start_time=start_time,

0 commit comments

Comments
 (0)