FHEM Tutorial-Reihe - Part 53: Fahrzeit berechnen mit Google Maps
In diesem Tutorial möchten wir einmal die Fahrtzeit von A nach B mit Hilfe der Google Maps API herausbekommen. Das heißt, dass wir anhand von Adressdaten Google fragen, wie lange man von A nach B braucht. Das geht natürlich einerseits für Daten mit dem Auto, als auch zu Fuß oder mit den öffentlichen Verkehrsmitteln. Ich zeige hier die Variante mit dem Auto - für die anderen muss einfach nur ein Parameter in der URL abgeändert werden. Diese Funktion ist sehr praktisch um einmal kurz zu prüfen wie die Verkehrslage aktuell ist. So könnte man sich die Infos am Morgen aufs Smartphone liefern lassen, oder den Wecker automatisch weiter nach vorne stellen, wenn die Fahrtzeit sehr lang ist und man pünktlich auf der Arbeit sein muss. All dies ist möglich!
Was wird benötigt?
- Eine FHEM-Installation
- Einen Google-Account
Video
Befehle
Hier müssen wir die API freischalten und einen API-Key generieren: Google Cloud Console
Nachdem die Schritte im Video befolgt wurden, kann man den Aufruf ganz einfach testen.
https://maps.googleapis.com/maps/api/distancematrix/json?origins=Paderborn,Bahnhofstra%C3%9Fe+1&destinations=Hamburg,Jungfernstieg&mode=driving&language=de-DE&departure_time=now&key=AIzaSyC3i_oRByxPuF-P7Y5p1dBscrdmU_2Mi9Y
define WEB_GoogleMaps HTTPMOD https://maps.googleapis.com/maps/api/distancematrix/json?origins=Paderborn,Bahnhofstra%C3%9Fe+1&destinations=Hamburg,Jungfernstieg&mode=driving&language=de-DE&departure_time=now&key=AIzaSyC3i_oRByxPuF-P7Y5p1dBscrdmU_2Mi9Y 1800
attr WEB_GoogleMaps userattr reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading04OExpr reading05JSON reading05Name reading05OExpr requestHeader1
attr WEB_GoogleMaps enableControlSet 1
attr WEB_GoogleMaps reading01JSON rows_01_elements_01_duration_text
attr WEB_GoogleMaps reading01Name fahrzeit
attr WEB_GoogleMaps reading02JSON rows_01_elements_01_duration_in_traffic_text
attr WEB_GoogleMaps reading02Name fahrzeit-verkehr
attr WEB_GoogleMaps reading03JSON rows_01_elements_01_distance_text
attr WEB_GoogleMaps reading03Name distanz
attr WEB_GoogleMaps reading04JSON rows_01_elements_01_duration_value
attr WEB_GoogleMaps reading04Name fahrzeit-hhmmss
attr WEB_GoogleMaps reading04OExpr strftime("%T", gmtime($val))
attr WEB_GoogleMaps reading05JSON rows_01_elements_01_duration_in_traffic_value
attr WEB_GoogleMaps reading05Name fahrzeit-verkehr-hhmmss
attr WEB_GoogleMaps reading05OExpr strftime("%T", gmtime($val))
attr WEB_GoogleMaps requestHeader1 Content-Type: application/json
Die komplette Dokumentation für die Maps-API ist hier zu finden. Mit der API kann man außerdem
- Mehrere Routen mit einer Abfrage auf einmal berechnen lassen
- Die Fahrtzeit mit der Bahn zu einer bestimmten Uhrzeit berechnen lassen (mode: transit / transit_mode: train)