FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ralph am 26 Januar 2018, 16:41:00

Titel: ? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: Ralph am 26 Januar 2018, 16:41:00
Hallo allerseits, ich bitte um Hilfe,
habe mich soweit durchgekämpft, dass meine DSL-Unzuverlässigkeit protokolliert wird.


Internals:
.
.
.
Attributes:
   IODev      CUL_0
   room       U_DSL
   userReadings dsltxt { my ($error, @content) = FileRead({FileName => "/opt/fhem/log/dsl.txt", ForceType => "file"}); return join("\n", @content)}



Der Befehl ist in userReadings da und funktioniert auch.

Oder gibts womöglich eine bessere Lösung ?
Der Inhalt von "/opt/fhem/log/dsl.txt" soll im Body einer DebianMail verschickt werden, etwa wie:

DebianMail('meine@mail.adr',"DSL-Protokoll",ReadingsVal("DSLon", "dsltxt","") ,);
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: KernSani am 26 Januar 2018, 23:36:55
Hi Ralph,

mir ist unklar, wo dein Problem liegt... Kannst du das etwas genauer erläutern?

Grüße,

Oli
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: Ralph am 26 Januar 2018, 23:46:12
Hi Oli,
danke für die Rückmeldung.

Nun ja, mir scheint der Weg etwas umständlich.
Daher die Frage, ob es auch etwas "direkter" geht ?

Die einzulesende Datei ist intern schon richtig als Text formatiert und könnte in einem Rutsch in das Bodytextfeld der Mail importiert werden.
Wenn ich nur wüsste, wie ?

Gruß Ralph
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: KernSani am 26 Januar 2018, 23:55:28
Sorry, ich verstehe es immernoch nicht... Du hast ja ein Coding angegeben, das grundsätzlich mal nicht schlecht aussieht
DebianMail('meine@mail.adr',"DSL-Protokoll",ReadingsVal("DSLon", "dsltxt","") ,);
wo hängt's denn jetzt?
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: Ralph am 27 Januar 2018, 14:52:25
Mein Wunsch wäre
nämliche Inhalt der Datei eben nicht in FHEM zuwischenzubunkern und dort abzurufen, sondern
diesen direkt in einem Aufruf einzuhängen, z. B. wie bei einen ,,cat dateiname".

Mein Problem ist nämlich der zeitliche Verlauf.
Unmittelbar vor dem Aufruf wird noch etwas in die Datei geschrieben.
Bei der jetzigen Methode kommt das oft nicht mit.
Würde ich es direkt aufrufen können, dann käme es mit.
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: KernSani am 27 Januar 2018, 16:07:47
Ahso, jetzt verstehe ich... ich würde in der myUtils sowas in der Art anlegen:


sub sendeDatei() {
my ($error, @content) = FileRead({FileName => "/opt/fhem/log/dsl.txt", ForceType => "file"});
DebianMail('meine@mail.adr',"DSL-Protokoll",join("\n", @content),);
}

(das ist jetzt ohne Prüfung aus deinem Code kopiert)
Die sub kannst du dann in einem notify (oder wie auch immer das Mail ausgelöst werden soll) aufrufen.
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: JensS am 27 Januar 2018, 18:43:32
qx(cat /opt/fhem/log/dsl.txt) sollte auch funktionieren.

Gruß Jens
Titel: Antw:? Text aus Datei im DebianMailBody verschicken ?
Beitrag von: Ralph am 29 Januar 2018, 13:43:03
Moin,
bitte verzeiht die späte Antwort, war auf Reisen.

Danke, die sub aus Antwort #5 funktioniert. Die muß ich noch aufbohren, so dass ich den subject-text und den Dateinamen der zu sendenden Datei an die sub übergeben kann.

Danke, mit qx aus Antwort #6 habe ich mal auf der Befehlszeile herumlaboriert.
Mich verwirrt, dass bei
{qx(cat /opt/fhem/log/dsl.txt)}
der Inhalt der Datei angezeigt wird, jedoch bei Einbau in den Aufruf

{DebianMail('meine@mail.adr',"DSL wieder ON mit ".ReadingsVal("FB_Link", "state", 0),{qx(cat /opt/fhem/log/dsl.txt)},"")}

nicht der Inhalt der Datei, sondern ein Hash-Code im Mail-Body steht.
Ich hätte da auch den Inhalt erwartet.

Oder ich kapiere wieder mal was nicht ?