FHEM Forum

FHEM => Frontends => Thema gestartet von: fishware am 25 Oktober 2015, 15:15:00

Titel: ReadingsVal als weblink
Beitrag von: fishware am 25 Oktober 2015, 15:15:00
Hallo liebe Community.

Ich versuche seit einer Weile einen sich dynamisch ändernden Weblink als Link in FHEMWEB einzubinden.
Ich habe schon viel versucht und die Forensufu verwendet, aber so richtig weiter komm ich nicht.
Vielleicht kann mich ja jemand in die richtige Richtung schubsen.

Also die Ausgangsbasis:

Ich benutze das DBPlan Modul um mir eine Verbindung mit festem Start und Ziel, sowie aktueller Uhrzeit zu erstellen.
Das Ganze wird alle 5 Minuten aktualisiert.

define home_mdf_alltime DBPlan 300
attr home_mdf_alltime dbplan-time-selection arrive
attr home_mdf_alltime dbplan_base_url https://reiseauskunft.bahn.de/bin/query.exe/dox?S=departure&Z=destination&start=1&rt=1
attr home_mdf_alltime dbplan_departure Prenzlauer Allee/Ostseestr., Berlin
attr home_mdf_alltime dbplan_destination Michendorf
attr home_mdf_alltime dbplan_journey_prod Nahverkehr,S-Bahnen,Busse,U-Bahnen,Strassenbahnen


Damit gibt es das Reading home_mdf_alltime:travel_note_link_1
Dieses beinhaltet einen Link zu den Routeneinzelheiten in folgender Form
https://reiseauskunft.bahn.de/bin/query2.exe/dox?ld=15040&protocol=https:&n=1&i=o3.01922740.1445781468&rt=1&use_realtime_filter=1&co=C0-0&vca&HWAI=CONNECTION$C0-0!details=opened!& (https://reiseauskunft.bahn.de/bin/query2.exe/dox?ld=15040&protocol=https:&n=1&i=o3.01922740.1445781468&rt=1&use_realtime_filter=1&co=C0-0&vca&HWAI=CONNECTION$C0-0!details=opened!&)

Diesen Link möchte ich mir mittels
define next_travel_all_link weblink htmlCode (ReadingsVal('home_mdf_alltime', 'travel_note_link_1', ""))
anzeigen lassen. Das hat leider keinen Erfolg!
Es wird im FHEMWEB
Zitat(ReadingsVal('home_mdf_alltime', 'travel_note_link_1', "")
angezeigt.
Nun gut, also habe ich mir eine Funktion gebastelt
sub DBAsHtml()
{

my $link = sprintf(ReadingsVal('home_mdf_alltime', 'travel_note_link_1', ""));
return $link;
}

Das ganze habe ich als 99_myUtils_DBAsHtml.pm gespeichert

Diese Funktion rufe ich nun über
define next_travel_all_link weblink htmlCode {DBAsHtml()}

Das Ergebnis ist schon besser. Im FHEMWEB wird nun
Zitathttps://reiseauskunft.bahn.de/bin/query2.exe/dox?ld=15076&protocol=https:&n=1&i=1m.02386576.1445781834&rt=1&use_realtime_filter=1&co=C0-0&vca&HWAI=CONNECTION$C0-0!details=opened!&
angezeigt.

Allerdings läßt sich der Link nicht anklicken, um auf die entsprechende DB Seite zu gelangen.
Wie läßt sich das realisieren.

Später soll noch eine Parameterübergabe an die Subfunktion stattfinden, da mit jeder Anfrage die nächsten 3 möglichen Verbindungen abgeholt werden. Diese werden dann in travel_note_link_1,travel_note_link_2,travel_note_link_3 abgelegt. Ich möchte dann bestimmen, welche im FHEMWEB als Link angezeigt werden soll. Aber das ist, denke ich erstmal nicht relevant.

Ich bin für jeden Hinweis dankbar.

Habt alle ein schönes Wochende.

Liebe Grüße fishware

ps. Sollten noch Informationen fehlen werde ich diese nachreichen.
Titel: Antw:ReadingsVal als weblink
Beitrag von: betateilchen am 25 Oktober 2015, 15:56:23
Für Bahnauskünfte gibst viel einfachere Möglichketen (angeboten von der Bahn) um sich Informationen anzeigen zu lassen.
Bei mir ist z.B. folgender weblink im Einsatz:


define bahn weblink iframe https://iris.noncd.db.de/wbt/js/index.html?bhf=KM&impressum=0&termsofuse=0
attr bahn htmlattr width="1024" height="600"


(http://up.picr.de/23504608os.jpg)

Und das aktualisiert sich auch automatisch.
Titel: Antw:ReadingsVal als weblink
Beitrag von: stromer-12 am 25 Oktober 2015, 16:02:59
Zitat von: fishware am 25 Oktober 2015, 15:15:00
Diesen Link möchte ich mir mittels
define next_travel_all_link weblink htmlCode (ReadingsVal('home_mdf_alltime', 'travel_note_link_1', ""))
anzeigen lassen. Das hat leider keinen Erfolg!

Probier mal:
define next_travel_all_link weblink htmlCode {ReadingsVal('home_mdf_alltime', 'travel_note_link_1', "")}
Titel: Antw:ReadingsVal als weblink
Beitrag von: fishware am 25 Oktober 2015, 18:40:14
Vielen Dank erstmal für die schnellen Antworten

@betateilchen
Das sieht ja echt cool aus und ich werde es bestimmt mal an anderer Stelle verwenden. An der Stelle erfüllt es seinen Zweck aber nicht, da ich eine explizite Verbindung beobachten möchten, und über den Link der komplette Reiseplan zur Verfügung gestellt wird, inkl. allen Umstiegen, Gleisnummern, evtl. Behinderungen.

@stromer-12
mit dem Code wird leider garnichts mehr in FHEMWEB angezeigt, so als ob der weblink garnicht definiert wurde. Schade
Trage ich Deinen Vorschlag in meine sub ein
sub DBAsHtml()
{

my $link = sprintf{ReadingsVal('home_mdf_alltime', 'travel_note_link_1', "")};
return $link;
}
1;

und rufe das Ganze über
define next_travel_all_link weblink htmlCode {DBAsHtml()}
auf, wird auch nichts im FHEMWEB angezeigt.

Wenn ich allerdings {DBAsHtml ()} oder {DBAsHtml} über FHEMWEB aufrufe, bekomme ich folgendes zurück
HASH(0x2990dd0)

Liebe Grüße
Titel: Antw:ReadingsVal als weblink
Beitrag von: stromer-12 am 25 Oktober 2015, 19:24:43
Dr sprintf Befehl ist nicht vollständig.

Gesendet von meinem GT-I9295

Titel: Antw:ReadingsVal als weblink
Beitrag von: stromer-12 am 25 Oktober 2015, 19:27:57
Ich habe bei mir ReadingsVal im Einsatz um mir in einer Karte Lokalisationen anzeigen zu lassen.

Gesendet von meinem GT-I9295

Titel: Antw:ReadingsVal als weblink
Beitrag von: fishware am 25 Oktober 2015, 19:31:39
Zitat
Zitat von: stromer-12 am 25 Oktober 2015, 19:24:43
Dr sprintf Befehl ist nicht vollständig.

Gesendet von meinem GT-I9295
Okeh. Und wie wäre er vollständig?  :-\
Titel: Antw:ReadingsVal als weblink
Beitrag von: stromer-12 am 25 Oktober 2015, 19:49:05
Da fehlt die Formatangabe und du haust die verschiedenen Klammerarten durcheinander:
my $link = sprintf("%s",ReadingsVal('home_mdf_alltime', 'travel_note_link_1', ""));

Edith: Du kannst auch einfach:
my $link = ReadingsVal('home_mdf_alltime', 'travel_note_link_1', "");
benutzen, kommt aufs gleiche raus.
Titel: Antw:ReadingsVal als weblink
Beitrag von: fishware am 25 Oktober 2015, 20:04:18
Die Klammern hatte ohne weiter darüber nachzudenken einfach übernommen. :-\

Mit der letzten Variante wird zwar der Link als Text angezeigt, es ist aber kein Hyperlink zum draufklicken und Seite laden. Das ist mein Ziel.

Liebe Grüße
Titel: Antw:ReadingsVal als weblink
Beitrag von: fishware am 26 Oktober 2015, 22:14:16
So, nach einigem probieren habe ich eine Lösung gefunden. Diese möchte ich noch kurz vorstellen. Damit kann das "Problem" als gelöst betrachtet werden.

Den Weblink für FHEMWEB definiere ich nun folgendermaßen:
define next_travel_all_link weblink htmlCode {DBAsHtml()}

Die Routine DBAsHtml() sieht so aus:
sub DBAsHtml()
{
my $link = sprintf('<a href="');
$link .= sprintf(ReadingsVal('home_mdf_alltime', 'travel_note_link_1', ""));
$link .= sprintf('" >DBLink</a>');
return $link;
}
1;

Grüße fishware