myAverage in textfile schreiben

Begonnen von ernst1024, 24 Februar 2016, 15:31:39

Vorheriges Thema - Nächstes Thema

ernst1024

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 ...
Gruß Ernst

crusader

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.

ernst1024

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.
Gruß Ernst

crusader


ernst1024

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.
Gruß Ernst

crusader

FileLog schreibt in eine Textdatei.

Hans Franz

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
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

ernst1024

Stirnklatsch!

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

Danke
Gruß Ernst