Aktuelles Logfile als Mail-Anhang schicken

Begonnen von Ponto68, 16 Februar 2016, 15:29:28

Vorheriges Thema - Nächstes Thema

Ponto68

Hallo Fhem-Gemeinde,

ich bin neu hier, habe schon einiges durch das Form gelernt und erfolgreich ausprobiert. So auch das einrichten der Mail-Funktion aus Fhem. Jetzt habe ich allerdings ein Problem mein tägliches Logfile mit aktuellem Datum als Anhang zu senden. Wie kann ich das Format -%d,-%m.log in den Anhang einbinden,dass jeden Tag die richtige Datei gesendet wird?  ::)

Gruß

Kai

Ellert

Der aktuelle Logfilename steht in "global" im Internal "currentlogfile", das kanst Du mit einer Funktion InternalVal abfragen, s. Commandref, Perl-Besonderheiten.

Ponto68

Hallo Ellert,

Ich glaube, ich habe mich schlecht ausgedrückt. Ich meinte, dass ich täglich einen Logfile mit Wetterdaten erstelle und diese Aufzeichnung automatisiert täglich einer Mail anhängen möchte. Das heisst,dass die Datei ./log/wetter-2016-02-18.log im Anhang ohne weiteres raus geht, aber eben die automatisierte Version ./log/wetter-%y-%m-%d.log nicht funktioniert. Ich bin aber nicht sehr fündig geworden und kenne mich ehrlich gesagt auch nicht besonders gut aus in Perl. In den Perl-Specials habe ich schon geschaut, kann da aber nichts erkennen,was mein Problem lösen würde. :-\

Gruss
Kai

Ellert

Dann hast Du die Zeit und Datumsvariablen ($month, $year, ...) übersehen, die könntest Du nutzen.

In den Geräten vom Typ FileLog findest Du auch "currentlogfile".

Ponto68

Jetzt hab ich's kapiert.

Es funktioniert. Danke für den Hinweis.

stenumer

Moin Kai,
ich möchte auch eine Log-Datei als Anlage per email versenden. Habe mich deshalb auch dankbar auf deinen Beitrag gestürzt.
Aber was soll ich sagen: Ich bekomme das nicht hin!
Wie hast Du letztendlich das Problem bei dir lösen können?
Bin über jeden Hinweis dankbar, eventuell teilst du netterweise deine Programmierung mit mir / uns.
Gruß Ulf
FHem 5.8 auf NUC
HM: 1xLAN-CFG; 1xLC-SW1-PL2; 1xSEC-SC-2
LaCrosse: myJeeLink cul_868; 6xTX29DHT-IT; 4xTX29-IT; 2xTX29_Umbau
PCA301: myJeeLink cul_868; 5xSteckdose
ESP8266 (Tasmota&ESPEasy FW): 8xSonoff; 2xWeMos

dev0

Wenn Du auch mitteilen würdest an welcher Stelle es hapert, dann könnte man Dir schneller/einfacher helfen ohne bei Adam und Eva anzufangen.

parabacus

Hallo!

Ich grabe mal diesen alten Thread wieder aus, da ich genau gleiches Problem habe, jedoch die Lösung leider nicht konkret hinterlassen wurde, um's für mich ohne Frage auch selbst hin zu bekommen.

Ich hab einen Stromzähler einen Monats-Log gebastelt, den ich mir zum Monatswechsel per Mail automatisch zusenden lassen möchte.
Das Versenden von Mails funktioniert bereits problemlos - auch mit Anhängen.

In meiner Naivität hab ich es für den Monatslog auch erst mal mit %y und %m als "Wildcard" versucht, was ja nicht funktioniert.

Aktuell hab ich es so mit einem DOIF gemacht - was ja nicht funktioniert, aber verdeutlicht, was ich erreichen möchte:
([00:05] and $mday==1) ({DebianMail('<ZIELMAILADRESSE>','Monatsbericht','Monatsbericht','/opt/fhem/log/Monatsbericht-%Y-%m.log.txt)')})

Wie ich gesehen und verstanden habe, gibt's ja für das Logfile in internal "currentlogfile", das genau den aktuellen Logfile-Namen enthält - konkret steht da aktuell "./log/Monatsbericht-2019-11.log".

Das heisst doch, dass ich mir einen String, bestehend aus erstem Teil des Absolutpfades /opt/fhem/ und zweiten Teil aus Internal currentlogfile, zusammenbauen muss, das ich dann zusammen als Pfadangabe mitgeben muss - also sinngemäss "/opt/fhem/sprintf(ReadingsVal('FileLog_Monatsbericht','currentlogfile'))".

Nur scheitere ich bisher dran...  >:(

Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Stütti

Zitat von: parabacus am 04 November 2019, 15:10:35
Wie ich gesehen und verstanden habe, gibt's ja für das Logfile in internal "currentlogfile", das genau den aktuellen Logfile-Namen enthält - konkret steht da aktuell "./log/Monatsbericht-2019-11.log".

Das heisst doch, dass ich mir einen String, bestehend aus erstem Teil des Absolutpfades /opt/fhem/ und zweiten Teil aus Internal currentlogfile, zusammenbauen muss, das ich dann zusammen als Pfadangabe mitgeben muss - also sinngemäss "/opt/fhem/sprintf(ReadingsVal('FileLog_Monatsbericht','currentlogfile'))".

Nur scheitere ich bisher dran...  >:(

Hallo,

hast du es mal nur mit dem Value von currentlogfile ausprobiert? Von FHEM aus, sollte es ja genau an der Stelle erreichbar sein.

Gruß
Stütti
FHEM auf Pi 4 + FTUI auf Pi 3, Eltako 14, SignalESP, JeeLink, EasyESP, ArduCounter, eBus-Koppler, openDTU

parabacus

So - ich komme der Sache näher..  ;D

Ich hab jetzt mittels at den Inhalt von currentlogfile auslesen können:

Damit ist zumindest schon mal der Inhalt von currentlogfile "./log/Monatsbericht-2019-11.log" in Reading Logfile da!  ;D

Internals:
   COMMAND    setreading Monats_Log Logfile {(InternalVal("FileLog_Monatsbericht","currentlogfile","none"))}
   DEF        *21:10:00 setreading Monats_Log Logfile {(InternalVal("FileLog_Monatsbericht","currentlogfile","none"))}
   FUUID      5dc08557-f33f-869f-b3cf-e0b1e857d6709d0b
   NAME       Monats_Log
   NR         1328
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 21:10:00
   TIMESPEC   21:10:00
   TRIGGERTIME 1572984600
   TRIGGERTIME_FMT 2019-11-05 21:10:00
   TYPE       at
   READINGS:
     2019-11-04 21:10:00   Logfile         ./log/Monatsbericht-2019-11.log
     2019-11-04 21:10:00   state           Next: 21:10:00
Attributes:


Dann müsste man doch das Reading Logfile mittels ReadingsVal("Monats_Log","Logfile","none") verwenden können.

Wie baue ich mir aber jetzt den erforderlichen Absolutpfad zusammen? Ich brauche ja /opt/fhem/log/Monatsbericht-2019-11.log

Ich muss wohl den Punkt aus dem String eliminieren und dann mit /opt/fhem/ verknüpfen!?

...wer eine gute Idee bis morgen hat, kann sie gerne hierlassen.  ;) Ich bin froh heute soweit gekommen zu sein.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Otto123

#10
Hi,

warum gehst Du davon aus, dass der relative Pfad nicht brauchbar ist? Du willst doch die Datei einfach als Anhang, also mach es doch einfach so. Der relative Pfad wird ordentlich aufgelöst, keine Sorge. Ich habe es getestet :)
([00:05] and $mday==1) ({DebianMail('<ZIELMAILADRESSE>','Monatsbericht','Monatsbericht',ReadingsVal("Monats_Log","Logfile","none"))})

Wobei Du den Umweg nicht brauchst, Du kannst auch InternalVal("FileLog_Monatsbericht","currentlogfile","none") direkt verwenden.
([00:05] and $mday==1) ({DebianMail('<ZIELMAILADRESSE>','Monatsbericht','Monatsbericht',InternalVal("FileLog_Monatsbericht","currentlogfile","none"))})

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

parabacus

Oh man... - der Lösung so nah und doch vorbei.... - ist ja klasse! So funktioniert's ja auch!!!

Da hab ich mich wohl irritieren lassen. Im anderen Fall, in dem ich mir eine Mail mit Anhang senden lasse, hab ich einen Absolutpfad verwendet. Daher dachte ich, dass ich das auch jetzt brauche. So gefällt mir das aber fast noch besser.  ;D

Danke Otto...! Wieder mal was (von dir) gelernt!
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Otto123

Zitat von: parabacus am 04 November 2019, 22:01:55
Ich muss wohl den Punkt aus dem String eliminieren und dann mit /opt/fhem/ verknüpfen!?
Brauchst Du ja hier jetzt nicht, aber das ginge in der Art:
{my $var="./log/Monatsbericht-2019-11.log";;$var=~s/^.//;;return "/opt/fhem".$var}
Der Code ist jetzt nur zum schnellen Test in der FHEM Kommandozeile, die Funktion ist hier:
Lösche erstes Zeichen: $var=~s/^.//
"concatenation" Strings: "/opt/fhem".$var
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

parabacus

..und nochmal danke - werde ich mir hoffentlich merken, da ich das ganz sicher irgendwann mal brauchen werde.
Am Löschen des ersten Zeichens hätte ich mir wohl noch lange die Zähne ausgebissen - zusammensetzten hätte ich schon geschafft.  ;)
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy