Inspiriert von einem Artikel, den ich hier gefunden habe, habe ich mir ebenfalls mal HTTPMOD mit der Google Maps Api angesehen. Die Grundzüge hat der Author schon erläutert – ich mache hier lediglich eine Vereinfachung und Update. Werbung
Achtung: Dieser Beitrag benötigt eine noch experimentelle Version von HTTPMOD aus diesem Forumsthread
Los gehts mit der Erstellung des API-Keys via Google Developer Console. Dort auf „APIs aktivieren und verwalten“:
Dann ein neues Projekt erstellen und einen Projektnamen vergeben (z.B. fhem-maps-api
):
Dann suche in der nächsten Übersicht nach „Google Maps Distance
“ und nimm die „Google Maps Distance Matrix API“:
Aktiviere diese:
Klicke dann links auf „Zugangsdaten“:
Wähle „Browser-Schlüssel“:
Nimm einen beliebigen Namen, welcher für dich Aussagekraft hat.
Nun ist dein API-Schlüssel erstellt. Diesen musst du kopieren.
Dann gehts in FHEM. Im untenstehenden Code muss YOURAPIKEY gegen den soeben erstellten API Key getauscht werden, ebenso natürlich dein Abfahrtsort (ORIGIN) und ZIEL (DESTINATION). Um letztere herauszufinden, würde ich eine Google Maps Suche machen und dann das Feld jeweils herauskopieren. Leerzeichen sollten durch %20 ersetzt werden, also beispielsweise wird aus: Robert-Schuman-Straße 8, 68519 Viernheim
dann Robert-Schuman-Straße%208,%2068519%20Viernheim
. Die definition des Devices folgt wie immer meiner Namenskonvention:
define INF_HTM_FAHRZEIT_HOME_WORK HTTPMOD https://maps.googleapis.com/maps/api/distancematrix/json?origins=ORIGIN&destinations=DESTINATION&mode=driving&language=de-DE&departure_time=now&key=YOURAPIKEY 3600 attr INF_HTM_FAHRZEIT_HOME_WORK reading01Name standard attr INF_HTM_FAHRZEIT_HOME_WORK reading01JSON rows_01_elements_01_duration_value attr INF_HTM_FAHRZEIT_HOME_WORK reading01Expr strftime("%T", gmtime $val) attr INF_HTM_FAHRZEIT_HOME_WORK reading02Name traffic attr INF_HTM_FAHRZEIT_HOME_WORK reading02JSON rows_01_elements_01_duration_in_traffic_value attr INF_HTM_FAHRZEIT_HOME_WORK reading02Expr strftime("%T", gmtime $val) attr INF_HTM_FAHRZEIT_HOME_WORK reading03Name distance attr INF_HTM_FAHRZEIT_HOME_WORK reading03JSON rows_01_elements_01_distance_value attr INF_HTM_FAHRZEIT_HOME_WORK reading03Expr sprintf("%.1f", $val/1000) attr INF_HTM_FAHRZEIT_HOME_WORK stateFormat Normal:standard Aktuell:traffic (distance km)
Vielen Dank nochmals an Jürgen für die Idee – sehr cool 🙂
Martin Chmielewski liked this on Facebook.
Christian Brang liked this on Facebook.
Kann es sein, dass das aktuelle 98_HTTPMOD.pm aus dem Repository noch nicht das Attribut „reading01JSON“ versteht?
Ich bekomme leider die Meldung „unknown attribute reading01JSON“
Woher ist der bei dir verwendete Stand der 98_HTTPMOD.pm?
Absolut korrekt, die Version kommt erst und wird hier gerade entwickelt – mein Fehler!
Viele Grüße,
Uli
Hi,
die Readings von reading01JSON und reading 02JSON sind beide „rows_01_elements_01_duration_in_traffic_value“
Müsste das reading01JSON nicht „rows_01_elements_01_duration_value“ heißen?
Gruß
nico
Gut aufgepasst – stimmt! Danke Nico!