Hallo,
irgendwie finde ich keinen Zugang und drehe mich im Kreis.
Ich möchte jeden Tag über ein at bestimmte Werte in ein Text file namens logs.log schreiben.
ein:
*23:59:00 { Log 1, myAverage("86400", "logdb", "f_Aussen:temperature::")}
schreibt mir die Ausgabe der Funktion wie gewünscht, allerdings in Fhem-2016-02.log
Ausgehend hiervon versuche ich nun in logs.log zu schreiben und da klemmt es.
ein:
*23:59:00 system({ my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;} ">> logs.log")
legt zwar logs.log an, aber ohne inhalt.
ein:
*23:59:00 { my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;;; fhem("$avg >> test.log") }
erzeugt in Fhem-2016-02.log einen Eintrag:
2016.02.23 23:59:00 3: 6.06 >> test.log : Unknown command 6.06, try help.
2016.02.23 23:59:00 3: t_avg_test2: Unknown command 6.06, try help.
wobei "6,06" schon das Ergebnis der Funktion ist.
Ich habe noch mehrere Kombinationen versucht, aber ohne Erfolg
*12:50:00 { my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;;; fhem("f_Aussen Average Temp: $avg >> test.log") }
2016.02.24 12:50:00 3: f_Aussen Average Temp: 6.04 >> test.log : Unknown command f_Aussen, try help.
*12:56:00 fhem({ my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;} ">> test.log")
2016.02.24 12:56:00 3: t_avg_test2: Unknown command fhem({, try help.
*13:03:00 { my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;;; system("f_Aussen Average Temp: $avg >> test.log") }
sh: 1: f_Aussen: not found
2016.02.24 13:03:00 3: t_avg_test2: -1
Tja, irgendeiner ne Idee wie man es richtig macht?
Danke schon mal ...
Um Logfiles zu schreiben, muß man keine Systemaufrufe bemühen.
Einfach den berechneten Wert in ein Dummy schreiben und das Dummy loggen oder mit dem 'trigger'-Kommando direkt ein Event erzeugen, das geloggt werden kann.
ja, nicht ganz. Ich will ja eben nicht in das reguläre logfile, hier 'logdb' schreiben, sondern eben aus den Daten in 'logdb' mittels der Funktion den Mittelwert berechnen und diesen dann in ein text file zu schreiben. In meinem Bsp vielleicht irreführend 'logs.log' genannt, kann aber auch xxx.txt oder sonstwie heissen.
siehe commandref FileLog
ich wiederhole mich aber es geht nicht um FileLog or dbLog, das läuft alles so wie es soll. Es geht darum den Rückgabewert einer Funktion in einen file zu schreiben.
FileLog schreibt in eine Textdatei.
Probier's mit echo:
*13:03:00 { my $avg = myAverage("86400", "logdb", "f_Aussen:temperature::");;;; system("echo f_Aussen Average Temp: $avg >> test.log") }
Gruß
Hans
Stirnklatsch!
Du bist der Größte. Klar, system muss ja auch wissen was es tun soll.
Danke