FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ernst1024 am 24 Februar 2016, 15:31:39

Titel: myAverage in textfile schreiben
Beitrag von: ernst1024 am 24 Februar 2016, 15:31:39
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 ...
Titel: Antw:myAverage in textfile schreiben
Beitrag von: crusader am 24 Februar 2016, 18:19:17
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.
Titel: Antw:myAverage in textfile schreiben
Beitrag von: ernst1024 am 24 Februar 2016, 19:55:21
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.
Titel: Antw:myAverage in textfile schreiben
Beitrag von: crusader am 25 Februar 2016, 00:46:30
siehe commandref FileLog
Titel: Antw:myAverage in textfile schreiben
Beitrag von: ernst1024 am 25 Februar 2016, 00:59:42
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.
Titel: Antw:myAverage in textfile schreiben
Beitrag von: crusader am 25 Februar 2016, 02:11:31
FileLog schreibt in eine Textdatei.
Titel: Antw:myAverage in textfile schreiben
Beitrag von: Hans Franz am 25 Februar 2016, 10:45:30
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
Titel: Antw:myAverage in textfile schreiben
Beitrag von: ernst1024 am 25 Februar 2016, 11:26:45
Stirnklatsch!

Du bist der Größte. Klar, system muss ja auch wissen was es tun soll.

Danke