FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: errazzor am 21 März 2017, 16:45:35

Titel: Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 21 März 2017, 16:45:35
Hi,

ich möchte innerhalb von FHEM den kompletten Inhalt einer Textdatei auf Knopfdruck ausgeben lassen.
Die Ansicht sollte so sein, wie es beispielsweise beim UpdateCheck dargestellt wird.

Geht das irgendwie?

Ich habe bisher nur ein Beispiel gefunden, indem der Inhalt der Textdatei über einen Dummy in dessen Readings geschrieben wird:


define WLANResetStatus notify WLAN.Reset:on { fhem("setreading WLAN.Reset myReading ".`cat /home/pi/reconnect.log`) }


Allerdings möchte ich es nicht in einem Reading, sondern als einfache Textausgabe auf dem Bildschirm in FHEMWeb.

Für Hilfe wäre ich dankbar.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: igami am 21 März 2017, 17:15:55
Mit FileLog (https://fhem.de/commandref.html#FileLog) geht das.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: DeeSPe am 21 März 2017, 17:20:51
Zitat von: errazzor am 21 März 2017, 16:45:35
Hi,

ich möchte innerhalb von FHEM den kompletten Inhalt einer Textdatei auf Knopfdruck ausgeben lassen.
Die Ansicht sollte so sein, wie es beispielsweise beim UpdateCheck dargestellt wird.

Geht das irgendwie?

Ich habe bisher nur ein Beispiel gefunden, indem der Inhalt der Textdatei über einen Dummy in dessen Readings geschrieben wird:


define WLANResetStatus notify WLAN.Reset:on { fhem("setreading WLAN.Reset myReading ".`cat /home/pi/reconnect.log`) }


Allerdings möchte ich es nicht in einem Reading, sondern als einfache Textausgabe auf dem Bildschirm in FHEMWeb.

Für Hilfe wäre ich dankbar.

Ich denke eher so:

define WLANResetStatus notify WLAN.Reset:on {my $log=`cat /home/pi/reconnect.log`;; fhem "setreading WLAN.Reset myReading $log"}


Bei großen Dateien könnte das aber schon merkbar blockieren.

Gruß
Dan
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: KernSani am 21 März 2017, 17:29:20
oder du nimmst das weblink modul mit Perl Code
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 21 März 2017, 17:38:26
Okay danke,aber ich komme ohne Beispiele nicht weiter.

Mit Filelog, wie? Die Datei liegt außerhalb vom FHEM Verzeichnis.

Wäre jemand so nett mir das nötige Command zu Posten?

Die Datei liegt hier:  /home/pi/reconnect.log  und soll einfach nur auf Knopfdruck angezeigt werden.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: KernSani am 21 März 2017, 18:01:42
ungetestet
define gedoens weblink htmlCode {qw("cat /home/pi/reconnect.log")}
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: DeeSPe am 21 März 2017, 18:03:02
Hast Du aus FHEM heraus auch die richtigen Berechtigungen an der Datei?
Funktioniert das in der FHEM Eingabezeile?
{`cat /home/pi/reconnect.log`}

Gruß
Dan
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 21 März 2017, 18:27:40
Ja,die Zugriffsrechtes passen,über die Eingabefelder geht es.

Aber wenn ich es so mache:


define WLANResetStatus notify WLAN.Reset:on {system  ("cat /home/pi/reconnect.log")}


...landet die Ausgabe im FHEM Logfile und nicht auf dem Bildschirm.

Das Weblink Beispiel geht auch nicht, da zeigt er den Link nur als Text an,also es erscheint einfach nur "/home/pi/reconnect.log" auf der Seite
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: igami am 21 März 2017, 18:28:38
Zitat von: errazzor am 21 März 2017, 17:38:26
Mit Filelog, wie? Die Datei liegt außerhalb vom FHEM Verzeichnis.
So wie in der commandref beschrieben ;)

Für mein alexa Log:

defmod alexa_FileLog FileLog ./log/alexa.log .* readonly

also einfach nur Pfad (bei dir dann absolut statt relativ) mit dem Zusatz readonly
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: DeeSPe am 21 März 2017, 18:46:39
Zitat von: errazzor am 21 März 2017, 18:27:40
Ja,die Zugriffsrechtes passen,über die Eingabefelder geht es.

Aber wenn ich es so mache:


define WLANResetStatus notify WLAN.Reset:on {system  ("cat /home/pi/reconnect.log")}


...landet die Ausgabe im FHEM Logfile und nicht auf dem Bildschirm.

Klar, denn das entspricht nicht dem Code den ich empfohlen hatte.
Bei mir klappt es jedenfalls so ein Reading mit den Inhalt der Datei zu schreiben.
Wenn Du das so nicht möchtest musst Du Dir einen anderen Weg suchen!

Gruß
Dan
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: betateilchen am 21 März 2017, 19:01:08
Warum wollt Ihr denn eigentlich alle den Umweg über das Betriebssystem gehen, anstatt die FHEM-internen Mechanismen zu benutzen?

Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: igami am 21 März 2017, 19:05:14
Zitat von: betateilchen am 21 März 2017, 19:01:08
Warum wollt Ihr denn eigentlich alle den Umweg über das Betriebssystem gehen, anstatt die FHEM-internen Mechanismen zu benutzen?
FileRead? (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#FileRead)
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: betateilchen am 21 März 2017, 19:47:44
jepp.

In der 99_myUtils.pm:


sub test {
  my (undef,@text) = FileRead({FileName => "/tmp/testfile.txt", ForceType => "file"});
  return join "\n",@text;
}


dann liefert ein {test} in der FHEMWEB Oberfläche die Anzeige wie im Screenshot.

Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 21 März 2017, 20:15:25
Zitat von: DeeSPe am 21 März 2017, 18:46:39
Klar, denn das entspricht nicht dem Code den ich empfohlen hatte.
Bei mir klappt es jedenfalls so ein Reading mit den Inhalt der Datei zu schreiben.
Wenn Du das so nicht möchtest musst Du Dir einen anderen Weg suchen!

Gruß
Dan

Ich möchte doch eben gar kein Reading schreiben, sondern einfach nur den Inhalt der Datei auf dem Bildschirm ausgeben. Du hast mich offenbar falsch verstanden.

Die anderen genannten Möglichkeiten muss ich noch testen,hätte ehrlich gesagt nicht gedacht,dass sowas so aufwändig ist. Mit myutils hab ich noch nie gearbeitet,da muss ich auch wieder erst mal lesen.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: betateilchen am 21 März 2017, 20:18:29
Zitat von: errazzor am 21 März 2017, 20:15:25
sondern einfach nur den Inhalt der Datei auf dem Bildschirm ausgeben.

Es kommt drauf an, aus welchem Kontext heraus Du das tun möchtest - also was Du mit "auf Knopfdruck ausgeben" meinst.

Zitat von: errazzor am 21 März 2017, 20:15:25
da muss ich auch wieder erst mal lesen.

Lesen und sich fortbilden ist immer gut.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 21 März 2017, 20:20:51
Zitat von: betateilchen am 21 März 2017, 20:18:29
Es kommt drauf an, aus welchem Kontext heraus Du das tun möchtest - also was Du mit "auf Knopfdruck ausgeben" meinst.



Eine Schaltfläche, ein Button oder ähnliches.
Deswegen habe ich es in meinem Versuchen bisher mit einem Dummy gemacht,weil ich keine andere Möglichkeit für einen "Button" kenne.
Titel: Antw:Inhalt eines Textfiles ausgeben lassen?
Beitrag von: errazzor am 22 März 2017, 09:59:58
Zitat von: igami am 21 März 2017, 18:28:38
So wie in der commandref beschrieben ;)

Für mein alexa Log:

defmod alexa_FileLog FileLog ./log/alexa.log .* readonly

also einfach nur Pfad (bei dir dann absolut statt relativ) mit dem Zusatz readonly

Vielen Dank, es funktioniert und genau so wollte ich es.

:)