Hallo,
ich muss mir ein paar Werte (historisch bis aktuell in FHEM merken (nicht log).
Hier benötige ich so etwas wie eine Queue wo ich einen aktuellen werte hineinschiebe und der letzte also älteste Wert wird dann aus der Queue entfernt.
Also LIFO (Last in First Out) Prinzip.
Ich muss auch auf alle Werte dann zugreifen können und diese dann miteinander verrechnen.
Gibt es da schon ein generisches Modul in FHEM?
Danke Andreas
readingsHistory ... schau das mal an. Gibt ein woki dazu
ZitatHier benötige ich so etwas wie eine Queue wo ich einen aktuellen werte hineinschiebe und der letzte also älteste Wert wird dann aus der Queue entfernt.
Das ist eher FIFO...
readingsHistory ist dann ein guter Tipp.
Danke für die Antworten.
ReadingsHistory habe ich schon verwendet. Mein Problem hier ist bloß dass ich ein eigenes Modul geschrieben habe.
Kann ich da einfach readingsHistory einbinden oder benutzen.
Gibt es da ein Beispiel für?
Danke Andreas
Verwalte die Werte im Modulhash als Array mit push und pop.
Hallo,
ich bin jetzt doch wieder zurück auf ReadingsHistory habe aber das Problem dass ich auf die
Reading nicht weiss wie ich darauf zugreifen kann:
Meine HistoryEinträge sehen so aus:
Mon 00:58 myRain rain_ltr_per_min: 0.550939393939394
Mon 00:57 myRain rain_ltr_per_min: 0
Mon 00:56 myRain rain_ltr_per_min: 0
Mon 00:55 myRain rain_ltr_per_min: 0
Mon 00:54 myRain rain_ltr_per_min: 0
Mon 00:53 myRain rain_ltr_per_min: 0
Mon 00:52 myRain rain_ltr_per_min: 0
Mon 00:51 myRain rain_ltr_per_min: 0
Mon 00:50 myRain rain_ltr_per_min: 0.275469696969697
Mon 00:49 myRain rain_ltr_per_min: 0
Mon 00:48 myRain rain_ltr_per_min: 0
Mon 00:47 myRain rain_ltr_per_min: 0
Mein Code (den ich in einem Blog gefunden hatte) sieht derzeit wie folgt aus.
FHEM.cfg:
define myRain_History_60min_ltr readingsHistory myRain:rain_ltr_per_min
attr myRain_History_60min_ltr icon weather_thunderstorm
attr myRain_History_60min_ltr room System
attr myRain_History_60min_ltr rows 60
attr myRain_History_60min_ltr timestampFormat %a %R
define at_RegenmengeHour at +*00:01:00 {\
computeLtrPerHour();;\
}
attr at_RegenmengeHour group Grp-System-At
attr at_RegenmengeHour icon time_timer
attr at_RegenmengeHour room 9.6_System
myUtils:
sub computeLtrPerHour() {
Log 2, ("computeLtrPerHour");
my @rainLtrPerMinArray = (0.0) x 60; #Array Mit default-welten initialisieren
my $outputFhem = fhem("get myRain_History_60min_ltr history"); # Holt die letzten 5 Werte aus history
my @terms = split /\n/, $outputFhem; # split auf neue Zeile
my $i = 0;
foreach my $loopVar (@terms) { # Einzelne Werte des Lichtsensors auslesen
$rainLtrPerMinArray[$i] = substr $loopVar, ????<don´t know>????
$i++;
Log 2, ("rainLtrPerMinArray[$i]: $rainLtrPerMinArray[$i]")
}
# start activities here
Log 2, ("Ende ComputeLtrPerHour");
}
Könnt Ihr mir da weiterhelfen?
Danke Andreas