Inhalt eines Textfiles ausgeben lassen?

Begonnen von errazzor, 21 März 2017, 16:45:35

Vorheriges Thema - Nächstes Thema

errazzor

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.

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

KernSani

oder du nimmst das weblink modul mit Perl Code
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

errazzor

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.

KernSani

ungetestet
define gedoens weblink htmlCode {qw("cat /home/pi/reconnect.log")}
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

errazzor

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

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Warum wollt Ihr denn eigentlich alle den Umweg über das Betriebssystem gehen, anstatt die FHEM-internen Mechanismen zu benutzen?

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

igami

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?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

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.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

errazzor

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.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!