Skip to main content

PvPool

Struct PvPool 

Source
pub struct PvPool { /* private fields */ }
Expand description

A pool of PV inverters in the microgrid.

Created with Microgrid::pv_pool, passing either an explicit set of PV inverter component IDs or None to cover every PV inverter in the microgrid. It exposes:

The bounds and snapshot streams share a telemetry tracker that is started on first use and reused while it still has live receivers.

§Example

use chrono::TimeDelta;
use frequenz_microgrid::{LogicalMeterConfig, Microgrid};

let microgrid = Microgrid::try_new(
    "grpc://localhost:50051",
    LogicalMeterConfig::new(TimeDelta::try_seconds(1).unwrap()),
)
.await?;

// A pool over every PV inverter in the microgrid.
let mut pv_pool = microgrid.pv_pool(None)?;

// Subscribe to the pool's aggregated active-power bounds.
let mut bounds_rx = pv_pool.power_bounds();
while let Ok(bounds) = bounds_rx.recv().await {
    println!("PV pool active-power bounds: {bounds:?}");
}

Implementations§

Source§

impl PvPool

Source

pub fn power(&mut self) -> Result<Formula<Power>, Error>

Returns a formula for the active power of the PV pool.

Source

pub fn power_bounds(&mut self) -> Receiver<Vec<Bounds<Power>>>

Returns a receiver for the aggregated active-power bounds of the pool, updated on each snapshot.

Reuses the running bounds tracker if one exists and still has active receivers; otherwise starts a new one (which also starts or reuses the underlying telemetry tracker).

Source

pub fn telemetry_snapshots(&mut self) -> Receiver<PvPoolSnapshot>

Returns a receiver for a stream of PvPoolSnapshot values, each reflecting the latest inverter telemetry partitioned into healthy and unhealthy sets.

Reuses the running tracker if one exists and still has active receivers (including any held by a bounds tracker); otherwise starts a new one.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more