Skip to main content

Sect14aModul3Interval

Struct Sect14aModul3Interval 

Source
pub struct Sect14aModul3Interval {
    pub period_from: OffsetDateTime,
    pub period_to: OffsetDateTime,
    pub menge_kwh: Decimal,
    pub nne_rate_ct_per_kwh: Decimal,
    pub epex_spot_ct_per_kwh: Option<Decimal>,
}
Expand description

One controlled dispatch interval for §14a Modul 3 (Spotpreis-Netzentgelt).

Each interval represents a 15-min period during which the DSO exercised load control and the NNE rate is derived from the day-ahead spot price via the formula published in PreisblattNetznutzung.lastvariablePreispositionen.

§Calculation

Einsatzkosten = menge_kwh × nne_rate_ct_per_kwh / 100

The NB computes one InvoicePosition per interval, allowing the LF (and their customers) to see the exact tariff breakdown for each dispatch event.

§Caller responsibility

The caller (service layer) must:

  1. Fetch the EPEX Spot day-ahead price for each 15-min interval from tarifbd or the PreisblattNetznutzung formula.
  2. Apply the formula from lastvariablePreispositionen to derive nne_rate_ct_per_kwh.
  3. Fetch menge_kwh from edmd Lastgang for the interval.

grid-billing receives pre-calculated rates — it does NOT query EPEX or edmd.

§Regulatory basis

BNetzA BK6-22-300 Anlage 2 §3 — Modul 3: Spotpreis-Netzentgelt. The NNE varies per 15-min interval based on the spot market price. All controllable loads ≥ 3.7 kW registered under §14a must have Modul 1 at minimum; Modul 3 is the opt-in premium variant (lower NNE when spot prices are low).

Fields§

§period_from: OffsetDateTime

UTC start of this controlled dispatch interval (ISO-8601).

Typically the start of a 15-min settlement slot.

§period_to: OffsetDateTime

UTC end of this controlled dispatch interval (ISO-8601).

Typically period_from + 15 min.

§menge_kwh: Decimal

Energy consumption (or reduction) during this interval in kWh.

Sourced from edmd Lastgang for the MaLo during the interval window.

§nne_rate_ct_per_kwh: Decimal

Effective NNE rate in ct/kWh for this interval.

Derived from the LastvariablePreisposition formula applied to the applicable EPEX Spot day-ahead price. Pre-calculated by the caller.

§epex_spot_ct_per_kwh: Option<Decimal>

EPEX Spot day-ahead price in ct/kWh used to derive nne_rate_ct_per_kwh.

Stored in the CalculationTrace.explanation for audit transparency. None when the rate was determined by a fixed formula without market reference.

Trait Implementations§

Source§

impl Clone for Sect14aModul3Interval

Source§

fn clone(&self) -> Sect14aModul3Interval

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Sect14aModul3Interval

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.