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.
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.
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', "")}
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
Dr sprintf Befehl ist nicht vollständig.
Gesendet von meinem GT-I9295
Ich habe bei mir ReadingsVal im Einsatz um mir in einer Karte Lokalisationen anzeigen zu lassen.
Gesendet von meinem GT-I9295
ZitatZitat 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? :-\
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.
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
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