FHEM Forum

FHEM => fhem-users => Thema gestartet von: Guest am 22 Februar 2012, 15:24:55

Titel: Events mit Notify in Datei ausgeben
Beitrag von: Guest am 22 Februar 2012, 15:24:55
Originally posted by: <email address deleted>

Hallo zusammen,

ich möchte gerne bestimmte Events meiner HMS100TF-Geräte in eine Datei schreiben. Das Event soll dann in /Pfad/Name_GERAET.UNIXTS stehen.

GERAET ist der Gerätename (@) und UNIXTS die Sekunden seit 1970. Hintergrund ist, dass ich diese Struktur auch bei Digitemp habe und die Daten aus Fhem genauso verarbeiten möchte. Dank der Doku hab ich es folgendermaßen innerhalb Fhem lösen können:

define RRDFeedPgm                notify       h..100tf_.*T:.*H:.*             "/usr/local/bin/process-fhem-hms100tf-data "@" "%""

Das aufgerufene Perlskript schreibt das Event in die entsprechende Datei. Es müsste aber auch einfacher gehen - ohne zusätzliches Skript. Ich hab verschiedene Ansätze versucht. Das Ergebnis ist immer gleich:
Die Datei wird angelegt, bleibt aber leer. Rechte scheinen zu passen, da es mit dem Perlskript ja auch funktioniert.

Meine Fehlversuche (Auszug):

#define RRDFeedPgm        notify       h..100tf_.*T:.*H:.*       "echo "%" >> "/var/lib/fhem/fhem_@.$(date +%%s)""
#define RRDFeedPgm2       notify       h..100tf_.*T:.*H:.*       "echo "%" >> "/var/lib/fhem/fhem_222""
#define RRDFeedPgm3       notify       h..100tf_.*T:.*H:.*       "echo "%" >> "/var/lib/fhem/fhem_333.$(date +%%s)""
#define RRDFeedPgm        notify       h..100tf_.*T:.*H:.*       "date > '/var/lib/fhem/fhem_bla'"

Die Programme echo oder auch date werden tatsächlich ausgeführt, allerdings landet die Ausgabe immer in der Logdatei (attr global logfile /var/log/fhem/master.log). Ein zusätzliches 2>&1 machte keinen Unterschied.

Was funktioniert:
- Datei wird angelegt unter dem gewünschten Namen, also @ und auch $(...) passen
- % wird aufgelöst, da das Event in der Logdatei steht (also geht auch der Aufruf von echo)
- Die Regexp passt, da Dateien angelegt werden

Ich hab das Gefühl, irgendetwas übersehe ich, deshalb schreibe ich an die Gruppe. Was mache ich nur falsch?

Die Fehlversuche habe ich wieder auskommentiert, deshalb steht das #-Zeichen am Anfang.

Die Regexp könnte auch mit hms100 anfangen, da ich ein Gerät allerdings noch nicht umbenannt habe, arbeite ich mit h..100.

Meine Version ist "5.2 from 2011-12-31" auf Ubuntu.

Viele Grüße,
Bernd

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Events mit Notify in Datei ausgeben
Beitrag von: rudolfkoenig am 22 Februar 2012, 16:44:00
                                                   

> Die Programme echo oder auch date werden tatsächlich ausgeführt, allerdings
> landet die Ausgabe immer in der Logdatei (attr global logfile
> /var/log/fhem/master.log). Ein zusätzliches 2>&1 machte keinen Unterschied.

Damit irgendwelche Skript-Fehler/Ausgaben nicht verlorengehen, wird an das
Skript eine Standard-Umleitung angehaengt:
  "..." >> $currlogfile 2>&1
Damit Deine Umleitung funktioniert, musst Du es in einem subshell starten:
  "(echo "%" >> /var/...)"

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Events mit Notify in Datei ausgeben
Beitrag von: Guest am 22 Februar 2012, 18:50:50
Originally posted by: <email address deleted>

> > Die Programme echo oder auch date werden tats�chlich ausgef�hrt,
> allerdings
> > landet die Ausgabe immer in der Logdatei (attr global logfile
> > /var/log/fhem/master.log). Ein zus�tzliches 2>&1 machte keinen
> Unterschied.
>
> Damit irgendwelche Skript-Fehler/Ausgaben nicht verlorengehen, wird an das
> Skript eine Standard-Umleitung angehaengt:
>   "..." >> $currlogfile 2>&1
> Damit Deine Umleitung funktioniert, musst Du es in einem subshell starten:
>   "(echo "%" >> /var/...)"
>

Vielen Dank für die Lösung, Rudi. Genau so funktioniert es jetzt bei mir!

define RRDFeedPgm      notify    h..100tf_.*T:.*H:.*       "(echo "%" >
"/var/lib/fhem/fhem_@.$(date +%%s)")"

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com