Logfile mehrere Werte in eine Zeile

Begonnen von QuaGS, 09 November 2015, 19:01:30

Vorheriges Thema - Nächstes Thema

QuaGS

Guten Abend in die Runde.
Ich habe auf meinem Raspi2 ein ganz gut laufendes FHEM installiert und steuere damit meine MAX-Thermostate und Werte die Türkontakte aus. Alles noch ganz easy mit Bordmitteln erstellt. Nun habe ich noch 1-wire-Sensoren DS1820 hinzugefügt, die FHEM auch brav in dem Intervall wie gewünscht ausliest und die Egebnisse in das jeweils angegebene Logfile schreibt. Was mich dabei stört, ist, dass FHEM für jede Auslesung 2 Zeilen in das Logfile schreibt:

2015-11-09_00:13:49 TempBuero T: 18.875
2015-11-09_00:13:49 TempBuero temperature: 18.875

Momentan sind es nur 2 Sensoren zum Testen, aber es sollen ja mehr werden. Da stelle ich mir vor, das ein Logfile erstellt wird, das in der ersten Zeile das in den folgenden Zeilen verwendete Format beschreibt. Etwa so wie ein CSV-File - bin da einigermaßen flexibel:

Datum_Uhrzeit,Sensor1,Sensor2
2015-11-09_00:12:49,18.3,19.4
2015-11-09_00:13:49,18.6,19.9
2015-11-09_00:14:49,18.9,20.1
usw....


Nun habe ich schon mehrere Versuche unternommen das in einem Dummy zusammenzuführen, aber die Zeile bleibt leer, bzw. hat keine Werte sondern nur Nullen.

Hier meine Definitionen aus fhem.cfg:

define TempBuero GPIO4 28-000005ae7e6c
attr TempBuero model DS18S20
attr TempBuero pollingInterval 60
attr TempBuero room Test
define TempBuero2 GPIO4 28-000005aca1d9
attr TempBuero2 model DS 18S20
attr TempBuero2 pollingInterval 60
attr TempBuero2 room Test
define LogTempBuero2 FileLog ./log/LogTempBuero2-%Y.log TempBuero2
attr LogTempBuero2 room Test
define LogTempBuero FileLog ./log/LogTempBuero-%Y.log TempBuero
attr LogTempBuero room Test

// bis hierher funktioniert das ganz gut

define FileLog_multiCSV FileLog ./log/FileLog_multiCSV-%Y-%m.log multiCSV
attr FileLog_multiCSV logtype text
attr FileLog_multiCSV room Test
define multiCSV dummy
attr multiCSV room Test
define notify_multiCSV notify TempBuero:T { my $a = ReadingsVal("TempBuero","T",0$
define notify_multiCSV notify TempBuero:T { my $a = ReadingsVal("TempBuero","T",0) ;;  my $b = ReadingsVal("TempBuero2","T",0) ;; my $text = " $a, $b" ;; fhem ("set multiCSV $text") ;; }


Ich weiß, da fehlt auch noch eine Uhrzeit in dem notify, aber das löse ich vielleicht noch alleine, aber kann mir jemand helfen? Ich finde die Referenzen sind zu knapp dokumentiert und Beispiele gibt es leider auch zu wenige.
Vielen Dank im Voraus,
Ernst

Loredo

Das ist kein Logfile, das sind Events aus dem Event Monitor und das wird nirgends hingeschrieben.

Für jeden dieser Werte wird ein Event getriggert, worauf Notifies und DOIFs etc triggern können.

Wenn du auf bestimmte Werte keinen Trigger hast und dich die Ausgabe stört: siehe event-on-* Attribute. Gehört zu den Basics ;-)


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rudolfkoenig

Weiterhin kann man das FileLog regexp genauer waehlen (d.h. nur die T: Zeilen loggen), und auch mehrere Geraete in einem FileLog loggen, dabei hilft der Regexp-Wizard auf der FileLog Detail-Seite in FHEMWEB.

Mit etwas notify/userReadings-Bastelei kann man auch die vielen Zeilen zu einem zusammenfuehren, fuer die SVG-Plots aber bitte mit irgendeinem Text, damit der Filter greift, und Leerzeichen statt Komma getrennt. Ich wuerde mir die Muehe aber sparen, da alle Fehlerfaelle abzufangen nicht einfach ist.

QuaGS

nun, ich muss zugeben, dass ich nichts von dem verstanden habe, was ihr da geantwortet habt - trotzdem Danke.
Ich verstehe, dass es nicht leicht ist, sich mit solchen DAUs zu beschäftigen. Aber es gibt auch in den Dokumenten zu den "basics" immer wieder einen (oder mehrere) Punkt, an dem ich nicht weiter komme. So habe ich in diesem Fall auf das Wiki zurück gegriffen und versucht das Beispiel aus "Stromzähler und 1-Wire, OWServer, OWDevice" anzupassen. Leider war das auch ein Fehlschlag, aber warum?
Gruß, Ernst 

rudolfkoenig

Machs dir einfach: oeffne in FHEMWEB die Detail-Seite der FileLog, und experimentiere mit dem Regexp Filter (Ueberschrift: Regexp Parts).