Trait xmz_server::messzelle::Messzelle [−][src]
pub trait Messzelle: AsAny + Debug + Display { fn get_value(&self) -> Option<&(f64, SystemTime)>; fn get_values(&self) -> Vec<(f64, SystemTime)>; fn get_messzelle_type(&self) -> MesszelleType; fn average(&self, minutes: u64) -> Result<f64, MesszelleError>; fn update(&mut self); fn shrink_values(&mut self); }
Basis Trait das die Eigenschaften einer Messzelle beschreibt
Jede Messzelle hat einen Direktwert (get_value()
) sowie ein Mittelwert (average(minutes)
).
Der Mittelwert Funktion kann ein Parameter übergeben werden mit dem die Dauer des zu
berechnendem Mittelwertes angegeben werden kann.
Required Methods
fn get_value(&self) -> Option<&(f64, SystemTime)>
Aktueller Messzelle Wert und Timestamp der Ermittlung
Jede Messzelle verfügt über ein Liste mit einem oder mehreren Paaren, Messwerten und den
Timestamps die bei der Ermittlung dieses Messwertes erstellt werden.
Die Implementierung der get_value()
Funktion muss den letzten dieser Wertepaare ausgeben.
Ist kein Messwert vorhanden wird None
zurückgegeben.
fn get_values(&self) -> Vec<(f64, SystemTime)>
Liefert alle Werte zurück
Jede Messzelle verfügt über ein Liste mit einem oder mehreren Paaren, Messwerten und den
Timestamps die bei der Ermittlung dieses Messwertes erstellt werden.
Die Implementierung der get_values()
Funktion muss alle dieser Wertepaare, in
einem Vector zurück geben.
fn get_messzelle_type(&self) -> MesszelleType
Liefert den Typ der Messzelle
Der Typ der Messzelle kann in der Konfigurationsdatei nur als String angegben werden. Zudem ist der Typ aus den Trait Objekten nicht einfach zu ermitteln. Analog zu den Sensoren ist dieser Memeber eine Art Krückstock.
fn average(&self, minutes: u64) -> Result<f64, MesszelleError>
Mittelwert der letzten min
Minuten
Die Implementation dieser Funktion berechnet den Mittelwert aus den Werte.- Zeitstempel-
paaren des Messzelles.
Sind keine Werte vorhanden wird None
zurück gegeben.
Parameters
min
- Minuten aus denen der Mittelwert berechnet werden soll
fn update(&mut self)
Aktuellen Messzellewert ermitteln und speichern.
Die Implementation dieser Funktion muss den aktuellen Messzelle Wert ermitteln (BUS Abfrage, Berechnung bie Simulationssensoren, usw.).
Gleichzeitig muss in dieser Implementation die Länge der Werteliste values
angepasst werden. Gemäß den Vorgaben der Funktionsbeschreibung sind nur Werte
der letzten Stunde (max. Stundenmittelwert) nötig.
fn shrink_values(&mut self)
Entfernt alle Wert/Zeistempel Paare die älter als Messzelle::max_values_for_n_minutes
sind.
Diese Funktion besteht aus 2 Tests. Der erste Spezialfall tritt ein wenn nur ein Wert/Zeitstempel Paar vorhanden ist. Hier muss getestet werden ob dieses veraltete Daten enthält. Ist dem so werden alle Werte/Zeitstempel gelöscht. Der zweite Test sucht aus der Liste den Index Wert ab dem veraltet Wert/Zeitstempel Paare auftreten. Anschließend wird dieser Index Wert verwendet um den Wert/Zeitstempel Vector an dieser Stelle zu teilen. Altere Werte werden dabei verworfen.
Diese Funktion wird in aller Regel in der Implementierung der update()
Funktion
aufgerufen.
Implementors
impl Messzelle for MetzConnectCI4Analog420
impl Messzelle for RaGasCOMod
impl Messzelle for RaGasNO2Mod