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.
Mit FileLog (https://fhem.de/commandref.html#FileLog) geht das.
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
oder du nimmst das weblink modul mit Perl Code
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.
ungetestet
define gedoens weblink htmlCode {qw("cat /home/pi/reconnect.log")}
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
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
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
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
Warum wollt Ihr denn eigentlich alle den Umweg über das Betriebssystem gehen, anstatt die FHEM-internen Mechanismen zu benutzen?
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)
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.
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.
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.
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.
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.
:)