Nach dem Abruf der Google Maps Informationen hatte ich mich erinnert, dass VRN ebenso einen Abfahrtsmonitor anbietet. Diesen wollte ich natürlich auch auf jeden Fall in FHEM anbinden.
Achtung: Dieser Beitrag benötigt eine noch experimentelle Version von HTTPMOD aus diesem Forumsthread
Zunächst muss die Haltestelle herausgefunden werden. Am besten geht man dazu auf den Abfahrtsmonitor und sucht sich die Wunschhaltestelle. In meinem Falle nehme ich die „Lindenhof (MA), Windeckstraße“:
Nun kann man noch die Richtung auswählen:
Schlussendlich bekommt man eine URL wie diese:
http://efa9-5.vrn.de/dm_rbl/XSLT_DM_REQUEST?language=de&itdLPxx_dmlayout=dm&itdLPxx_realtime=1&useRealtime=1&itdLPxx_dmRefresh=1&timeOffset=3&limit=12&includeCompleteStopSeq=1&depType=stopEvents&typeInfo_dm=stopID&nameInfo_dm=6002500&mode=direct&line=VRN:08003:s:H&itdLPxx_ie6layout=;
Für die Anzeige in FHEM muss man nun in der URL relativ zu Beginn die Zeichenfolge „dm_rbl
“ gegen „lite
“ tauschen, wodurch bei Aufruf im Browser (am besten Chrome nehmen) eine JSON-Anzeige gestartet wird. Diese URL muss im define
statt der unten stehenden verwendet werden. Ich habe hier 1800 als Abrufintervall eingetragen, was man natürlich ändern kann. Die definition des Devices folgt wie immer meiner Namenskonvention:
define INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE HTTPMOD http://efa9-5.vrn.de/lite/XSLT_DM_REQUEST?language=de&itdLPxx_dmlayout=gadget&itdLPxx_realtime=1&useRealtime=1&itdLPxx_dmRefresh=1&timeOffset=3&limit=12&includeCompleteStopSeq=1&depType=stopEvents&typeInfo_dm=stopID&nameInfo_dm=6002500&mode=direct&line=VRN:08003:s:H&itdLPxx_ie6layout=; 1800 attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading11Name departures_01_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading11JSON departures_01_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading12Name departures_01_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading12JSON departures_01_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading13Name departures_01_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading13JSON departures_01_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading14Name departures_01_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading14JSON departures_01_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading21Name departures_02_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading21JSON departures_02_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading21Name departures_02_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading22JSON departures_02_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading23Name departures_02_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading23JSON departures_02_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading24Name departures_02_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading24JSON departures_02_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading31Name departures_03_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading31JSON departures_03_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading32Name departures_03_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading32JSON departures_03_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading33Name departures_03_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading33JSON departures_03_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading34Name departures_03_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading34JSON departures_03_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading41Name departures_04_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading41JSON departures_04_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading42Name departures_04_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading42JSON departures_04_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading43Name departures_04_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading43JSON departures_04_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading44Name departures_04_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading44JSON departures_04_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading51Name departures_05_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading51JSON departures_05_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading52Name departures_05_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading52JSON departures_05_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading53Name departures_05_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading53JSON departures_05_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading54Name departures_05_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading54JSON departures_05_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading61Name departures_06_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading61JSON departures_06_dateTime_rtTime attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading62Name departures_06_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading62JSON departures_06_dateTime_rtDate attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading63Name departures_06_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading63JSON departures_06_mode_destination attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading64Name departures_06_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE reading64JSON departures_06_mode_delay attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE stateFormat departures_01_dateTime_rtTime +departures_01_mode_delay (departures_01_mode_destination / departures_01_dateTime_rtDate) attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE readingMaxAge 300 attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE readingMaxAgeReplacement - attr INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE readingMaxAgeReplacementMode text
Im STATE des Geräts wird die nächste Abfahrt mit einer eventuellen Verspätung angezeigt. Schlussendlich hat man die nächsten sechs Abfahrten und kann diese dann weiterverarbeiten, beispielsweise in einer readingsGroup. Hier sieht man nun schön den Vorteil einer ordentlichen Namenskonvention, da sich das DEVICE nur um den Typ unterscheidet:
define INF_RGRP_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE readingsGroup <Richtung>,<Abfahrt>,<Verspätung (Abfahrt)>,<Datum> INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_01_mode_destination,departures_01_dateTime_rtTime,departures_01_mode_delay,departures_01_dateTime_rtDate INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_02_mode_destination,departures_02_dateTime_rtTime,departures_02_mode_delay,departures_02_dateTime_rtDate INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_03_mode_destination,departures_03_dateTime_rtTime,departures_03_mode_delay,departures_03_dateTime_rtDate INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_04_mode_destination,departures_04_dateTime_rtTime,departures_04_mode_delay,departures_04_dateTime_rtDate INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_05_mode_destination,departures_05_dateTime_rtTime,departures_05_mode_delay,departures_05_dateTime_rtDate INF_HTM_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE:departures_06_mode_destination,departures_06_dateTime_rtTime,departures_06_mode_delay,departures_06_dateTime_rtDate attr INF_RGRP_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE alias Abfahrtmonitor STR3 Ab Windeckstrasse attr INF_RGRP_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE nonames 1 attr INF_RGRP_ABFAHRTSMONITOR_STR3_WINDECKSTRASSE valueStyle {(substr($READING, -5) eq "delay")?($VALUE ne "0")?'style="color:red;;font-weight:bold"':'style="color:green;;font-weight:bold"':''}
Ganz praktisch
Versions Historie:
- 2016-01-10 – Update mit MaxAge, da ab und an keine Daten für bestimmte Zeiten gezogen werden.
Related posts:
- FHEM: Fahrzeiten mit Verkehr mittels Google Maps API anzeigen
- FHEM: Making of CUL V3
- FHEM update – Wie funktionieren Updates für Fehlerkorrekturen in FHEM?
- Extend devStateIcon in FHEM kurz erläutert
- MQTT für FHEM einrichten
This feed is for personal, non-commercial use only.
The use of this feed on other websites without attribution to the author and notification of the author breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint: d2a576b5311479d89eff39b7ca886f6b)