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","") ,);
Hi Ralph,
mir ist unklar, wo dein Problem liegt... Kannst du das etwas genauer erläutern?
Grüße,
Oli
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
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?
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.
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.
qx(cat /opt/fhem/log/dsl.txt) sollte auch funktionieren.
Gruß Jens
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 ?