Hallo,
ich nutze die Funktion movingAverage (https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen). Bisher habe ich FHEM täglich neu gestartet (so gegen 5 Uhr), dann würde ich jedoch alle Werte von movingAverage verlieren. Wie oft startet ihr den FHEM neu? Oder kann ich movingAverage überreden, die Daten persistent zu speichern?
ZitatDas erste Programm macht dies für beliebige Readings beliebiger Devices, das zweite Programm greift auf beliebige File- oder DbLogs zurück.
aus https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen (https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen)
Ich vermute Du benutzt das erste.
Nimm doch das zweite (sowie ich), dann ist Dein Problem weg.
Hatte ich mir auch schon angeschaut, habe aber die Parameter irgendwie nicht verstanden. Im Detail den dritten. Hast Du mal ein Beispiel für mich?
Warum startest du FHEM täglich neu? Ohne einen konkreten Grund/Kontext ist das recht sinnlos.
Zum Parameter: FileLog oder DBLog? Dazu würde ich auf jeden Fall empfehlen, dich über die Logs schlau zu machen. Dann verstehst du automatisch diesen Parameter.
Hin und wieder hängt sich was auf, wie z.B. die aktuelle Beta vom iRobot.
Gegeben:
2017-04-25_03:16:11 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_03:21:06 NetAtmo.Aussen.Regen rain: 0
2017-04-25_03:46:18 NetAtmo.Aussen.Regen rain_hour: 0.14274258219727
2017-04-25_03:46:18 NetAtmo.Aussen.Regen rain_day: 0.14274258219727
2017-04-25_04:11:31 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_04:36:43 NetAtmo.Aussen.Regen rain: 0.285
2017-04-25_04:41:51 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_04:46:46 NetAtmo.Aussen.Regen rain: 0
2017-04-25_04:46:46 NetAtmo.Aussen.Regen rain_hour: 1.1419406575782
2017-04-25_04:46:46 NetAtmo.Aussen.Regen rain_day: 1.2846832397755
2017-04-25_04:56:48 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_05:06:49 NetAtmo.Aussen.Regen rain: 0
2017-04-25_05:17:05 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_05:37:09 NetAtmo.Aussen.Regen rain: 0
2017-04-25_05:47:11 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_05:47:11 NetAtmo.Aussen.Regen rain_hour: 0.99919807538091
2017-04-25_05:47:11 NetAtmo.Aussen.Regen rain_day: 2.2838813151564
2017-04-25_05:52:07 NetAtmo.Aussen.Regen rain: 0
2017-04-25_05:57:14 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_06:02:22 NetAtmo.Aussen.Regen rain: 0
2017-04-25_06:07:17 NetAtmo.Aussen.Regen rain_hour: 0.85645549318364
2017-04-25_06:07:17 NetAtmo.Aussen.Regen rain_day: 2.4266238973536
2017-04-25_06:12:24 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_06:22:27 NetAtmo.Aussen.Regen rain: 0.285
2017-04-25_06:27:22 NetAtmo.Aussen.Regen rain: 0.143
2017-04-25_06:37:24 NetAtmo.Aussen.Regen rain: 0
2017-04-25_07:07:44 NetAtmo.Aussen.Regen rain_day: 3.2830793905373
2017-04-25_08:07:57 NetAtmo.Aussen.Regen rain_hour: 0
Versuch soll mir den Durchschnitt der letzten 12 Stunden liefern. Liefert aber 0. Selbst wenn ich den ausgeschriebenen LOGFile-Namen angebe geht es nicht.
{myAverage("43200", "./log/Regen-%Y-%m.log", "rain")}
Filelog oder DB?
ZitatmyAverage("43200", "./log/Regen-%Y-%m.log", "rain")}
probiere mal
myAverage("43200", "FileLog_Klima_Aussen", "rain")}
;)
Natürlich mit dem Namen deines Logfiles
Ach dort wird der Name vom Log erwartet und nicht der (physikalische) Dateiname selbst? :-[
nein, genauso wie es im Wiki steht.
ZitatFunktion myAverage() aufrufen und nutzen
Jetzt kann die Funktion myAverage(<offset>, <logfile>, <column-spec>) ganz normal auf der FHEM-Konsole (telnet localhost 7072) genutzt werden. Hier z.B. die Ausgabe des Mittelwertes des Windsensors, eines KS300, über die letzten drei Stunden (Angabe in 3*3600s) oder der Temperaturmittelwert der letzten 24 Stunden.
Mit FileLog:
fhem> {myAverage("10800", "FileLog_KS300", "8:::")}
6.3
fhem> {myAverage("86400", "FileLog_KS300", "4:::")}
-2.7
fhem>
Anyway ... vielen Dank, das scheint zu funktionieren und löst eines meiner (künstlich geschaffenen) Probleme
Ich würde zudem noch an der Wurzel ansetzen. In einer Produktivumgebung sollte man keine instabilen Module einsetzen.
Habe den Neustart auch erstmal rausgenommen. Habe damals bei der Installation einfach nen automatischen Neustart reingebaut, genau wie ins Linux selbst (Macht der Gewohnheit). Jetzt, wo ich genauer drüber nachgedacht habe, hat es wirklich wenig Sinn ergeben. Wenn FHEM nicht mehr reagiert, kann ein vom FHEM selbst getriggerter Neustart auch wenig ausrichten.
So ist es. Dafür gibt es aber diverse watchdog-Lösungen.
Vielleicht könntest Du mir nochmal auf die Sprünge helfen? Die Daten passen nicht.
Gegeben siehe oben. Ausgabe ist bei {myAverageByLog("3600", "FileLog_Regen", "rain")} z.B. 38.7, das passt in keinster Weise.
Im Log steht:
Argument "rain" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 704, <GEN37> line 20.
Use of uninitialized value in concatenation (.) or string at ./FHEM/92_FileLog.pm line 916.
2017.04.26 09:36:21 4: myAverage: File: FileLog_Regen, Field: rain, Period: 2017-04-26_08:36:21 bis 2017-04-26_09:36:21, Count: 1, Cum: 38.7, Average: 38.7
Ich bin dem Problem ein wenig näher gekommen. Wenn ich "get FileLog_Regen - - 2017-04-26_00:00:00 2017-04-26_11:00:00 :rain:" aufrufe, dann listet er auch Werte, die nicht "rain" sind, z.B. "rain_avg1h". Vielleicht ist die Frage ja blöd, aber was muss als letzter Parameter eingetragen werden? Aus dem Wiki zu "get" (die Beispiele am Ende) bin ich auch nicht sonderlich schlau geworden.