Skip to content

Commit a23314b

Browse files
committed
Update example to include a voltage coalesce formula
Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
1 parent 1c4e664 commit a23314b

2 files changed

Lines changed: 25 additions & 5 deletions

File tree

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ tonic = "0.13"
1919
tracing = { version = "0.1" }
2020
tracing-subscriber = { version = "0.3" }
2121

22+
[dev-dependencies]
23+
tracing-subscriber = { version = "0.3", features = ["std", "env-filter"] }
2224

2325
[build-dependencies]
2426
tonic-build = "0.13"

examples/logical_meter.rs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,17 @@ use chrono::TimeDelta;
55
use frequenz_microgrid::{
66
Error, Formula, LogicalMeterConfig, LogicalMeterHandle, MicrogridClientHandle, metric,
77
};
8+
use tracing_subscriber::{
9+
EnvFilter,
10+
fmt::{self},
11+
prelude::*,
12+
};
813

914
#[tokio::main]
1015
async fn main() -> Result<(), Error> {
11-
tracing_subscriber::fmt::fmt()
12-
.with_file(true)
13-
.with_line_number(true)
16+
tracing_subscriber::registry()
17+
.with(EnvFilter::new("info,frequenz_microgrid=debug"))
18+
.with(fmt::layer().with_file(true).with_line_number(true))
1419
.init();
1520

1621
let client = MicrogridClientHandle::new("http://[::1]:8800");
@@ -36,7 +41,7 @@ async fn main() -> Result<(), Error> {
3641
let mut battery_rx = formula_battery.subscribe().await?;
3742
let mut consumer_rx = formula_consumer.subscribe().await?;
3843

39-
for _ in 0..10 {
44+
for _ in 0..3 {
4045
let sample = rx.recv().await.unwrap();
4146
let grid_sample = grid_rx.recv().await.unwrap();
4247
let battery_sample = battery_rx.recv().await.unwrap();
@@ -49,9 +54,22 @@ async fn main() -> Result<(), Error> {
4954
sample.value().unwrap()
5055
);
5156
}
57+
let formula_grid_voltage = logical_meter
58+
.battery(None, metric::AcVoltagePhase1N)?
59+
.coalesce(logical_meter.pv(None, metric::AcVoltagePhase1N)?)?;
5260

53-
let formula_grid_voltage = logical_meter.grid(metric::AcVoltagePhase1N)?;
61+
tracing::info!("formula_grid_voltage: {}", formula_grid_voltage);
5462
let mut grid_voltage_rx = formula_grid_voltage.subscribe().await?;
63+
for _ in 0..3 {
64+
let sample = grid_voltage_rx.recv().await.unwrap();
65+
tracing::info!("grid voltage: {}", sample.value().unwrap());
66+
}
67+
68+
drop(rx);
69+
drop(grid_rx);
70+
drop(battery_rx);
71+
drop(consumer_rx);
72+
5573
loop {
5674
let sample = grid_voltage_rx.recv().await.unwrap();
5775
tracing::info!("grid voltage: {}", sample.value().unwrap());

0 commit comments

Comments
 (0)