weblink patch zur Nutzung von Perl Expressions in "links"

Begonnen von Tobias, 07 Mai 2013, 11:00:24

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
anbei ein Patch für 98_weblink.pm für den weblinktyp "link".
Damit ist es nun auch möglich Perl Expressions auszuwerten. Zb. um im Link als Parameter immer das aktuelle Datum zu übergeben.

Ich benötige es, um analog zu den FileLog Anzeigen eine DbLog Anzeige zum Device für den aktuellen Tag/Woche anzuzeigen.

Problem allerdings noch: wenn ich den link im pgm2 ohne Zeilenumbruch definiere funktioniert es, mit Zeilenumbruch wird die Expression nicht interpretiert

So funktioniert es: {my $ttt="/fhem?cmd=get+DbLog+-+-+2013-01-01+2013-12-31+Pumpe%3Adata";$ttt;}
Das kommt im HTML raus: <a href="/fhem?cmd=get+DbLog+-+-+2013-01-01+2013-12-31+Pumpe%3Adata">Pumpe_Log</a>

Und so nicht: {\ my $t="/fhem?cmd=get+DbLog+-+-+2013-01-01+2013-12-31+Pumpe%3Adata";\ $t;\ }
Dann wird nämlich der Link uninterpretiert und auch noch völlig durcheinander ausgegeben: <a }"="" $t;\="" fhem?cmd="get+DbLog+-+-+2013-01-01+2013-12-31+Pumpe%3Adata&quot;;\" href="{\
my $t=">Pumpe_Log</a>


--- ../98_weblink.pm    2013-05-07 08:36:30.000000000 +0200
+++ 98_weblink.pm       2013-05-07 08:37:18.000000000 +0200
@@ -128,6 +128,7 @@
     $ret = $link;

   } elsif($wltype eq "link") {
+    $link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/);
     $ret = "<a href=\"$link\" $attr>$d</a>"; # no FW_pH, open extra browser

   } elsif($wltype eq "image") {


Jemand der Wissenden eine Idee?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

>  Ich benötige es, um analog zu den FileLog Anzeigen eine DbLog Anzeige zum Device für den aktuellen Tag/Woche anzuzeigen.

Fuer solche Zwecke sollten die neuen FW_summaryFn / FW_detailFn Funktionen verwendet werden.

Tobias

Hi Rudi,
der "patch" bezieht sich ja auf die Funktion "weblink_FwFn($$$$)" die widerrum ein Kind von "FW_detailFn" ist.
Anonsten versteh ich noch nicht so ganz... :(
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

Meine Meinung: Wenn man fuer DbLog spezielle Sachen haben will, dann sollte man das in DbLogs summaryFn einbauen, und nicht in weblink, um danach den Benutzer zu bitten, dass er eine Perl-Zeile als Attribut setzt.

Tobias

hmm, was ich möchte ist ja, das sich wie bei Filelog in der Textansicht, sich das Log präsentiert.
Oder ich habe die fn_detailFn noch nicht verstanden. mehr als einen Thread hier im Forum hab ich noch nicht gefunden
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

> hmm, was ich möchte ist ja, das sich wie bei Filelog in der Textansicht, sich das Log präsentiert.

Dann am besten das summaryFn/DetailFn bei FileLog abschauen, und es angepasst in DbLog.pm nachbauen.

> mehr als einen Thread hier im Forum hab ich noch nicht gefunden

Richtig, ist aber auch nicht so schwierig:
- FW_summaryFn liefert das, was als Status in der Raum-Ansicht angezeigt wird zurueck.
- FW_detailFn etwas, was vor Readings/Attribute in Detail-Ansicht angezeigt wird.
Man kann auch die gleiche Funktion fuer beide Aufgaben verwenden.

Tobias

Hi Rudi,
ein Argument hab ich noch was gegen dem Einbau im DbLog spricht.
Und zwar ist DbLog nur 1x im ganzen FHEM definiert was mittels Regexp alles loggt. Ganz im Gegensatz zum Filelog welches ja i.d.R. pro Device definiert ist.
Ich möchte aber "Log-Seiten" pro definierbarem Device haben. Das widerrum würde für die weblink Variante sprechen.
Hast du unter diesem Umstand auch einen Ratschlag?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

Das uebliche Verfahren fuer solche Faelle sind Attribute, wie z.Bsp. das webCmd oder devStateIcon von FHEMWEB.