Skip to main content

MeteredInterval

Struct MeteredInterval 

Source
pub struct MeteredInterval {
    pub obis_code: Option<String>,
    pub melo_id: Option<String>,
    pub dtm_from: String,
    pub dtm_to: String,
    pub quantity: String,
    pub unit: Option<String>,
    pub qualifier: String,
}
Expand description

One decoded metered value from an MSCONS SG9/SG10 group.

§Why this lives here

Both MSCONS-receiving workflows — mako-gpke’s Strom Messwerte and mako-geli-gas’s Gas Messdaten — need to carry the values they received to the ERP, and makod decodes them from one MsconsMessage shape for both. A type per crate would be two decoders that drift; this is the one both depend on already.

§What is kept raw

qualifier is SG10 QTY DE 6063 exactly as it arrived — 220 Wahrer Wert, 67 Ersatzwert, Z18 Vorläufiger Wert (MSCONS AHB 3.1g §11.2). The translation into the quality vocabulary the ERP and edmd share is MeteredInterval::quality, applied when the payload is built. An inbound value stays representable so a message carrying an unexpected qualifier can still be recorded and refused, rather than being coerced at the boundary.

Fields§

§obis_code: Option<String>

SG9 PIA DE 7140 — the OBIS register the value belongs to.

§melo_id: Option<String>

SG6 LOC+172 DE 3225 — the Messlokation, when the series names one.

§dtm_from: String

SG10 DTM+163 — interval start, RFC 3339.

§dtm_to: String

SG10 DTM+164 — interval end, RFC 3339.

§quantity: String

SG10 QTY DE 6060 — the quantity, as written on the wire.

A string, not a float: [906] allows three decimal places and a settlement quantity must not acquire a binary rounding error in transit.

§unit: Option<String>

SG10 QTY DE 6411 — the unit, normally KWH.

§qualifier: String

SG10 QTY DE 6063, verbatim.

Implementations§

Source§

impl MeteredInterval

Source

pub fn quality(&self) -> &'static str

The MSCONS DE 6063 qualifier in the quality vocabulary the ERP event and edmd share.

DE 6063MSCONS AHB 3.1gQuality
220Wahrer WertMEASURED
67ErsatzwertSUBSTITUTED
Z18Vorläufiger WertPRELIMINARY

Anything else is UNKNOWN, which downstream treats as not billable — the safe reading for a qualifier this release does not know.

Trait Implementations§

Source§

impl Clone for MeteredInterval

Source§

fn clone(&self) -> MeteredInterval

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 MeteredInterval

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MeteredInterval

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for MeteredInterval

Source§

impl PartialEq for MeteredInterval

Source§

fn eq(&self, other: &MeteredInterval) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for MeteredInterval

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for MeteredInterval

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> 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 = !

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