HERE Routing und Verkehrsdaten:
Kurz vorab zu Erklärung
Es wird ein Developer Konto bei here.com benötigt (kostenfrei bis 250k Aufrufe/Monat) Ich schaffe so im Schnitt, da ich die Verkehrsdaten nur zwischen 7:30 – 9:00 Uhr alle 5 min hole, auf nicht einmal 2%
-> Bebilderte Anleitung unter
https://github.com/BuZZy1337/ioBroker. ... /README.md
Achtet bitte darauf, wenn ihr Screenshots bei Fragen zu diesem Thema von eurem TWS hier postet, dass euer privater API Key in der URL ist und vorher unkenntlich zu machen ist!
Alles wichtige zu dieser Abfrage findet ihr (wenn ihr dann bei HERE angemeldet seid) unter:
https://developer.here.com/documentatio ... s/via.html
Natürlich könnt ihr hier x verschiedene Arten der http Abfragen euch bauen. Aber jetzt erstmal was ich nutze.
1. Ich lasse mir meine Route von zu Hause berechnen
2. Diese mit und ohne Verkehrsdaten
3. 2 weitere Alternativen mit Angabe über welche Hauptwege (Autobahn, Landstr. etc.)
4. Angabe über Distanz, Dauer mit Verkehr und ohne (Basetime)
Daraus kann ich schnell sehen, bzw. errechnen, welchen Weg ich nehmen sollte und wieviel Verzögerungen gerade anstehen.
Beispiel: 31km über Autobahn A100 & A115 31 Min. üblich 28 Min. ODER 17km über L77 und B1 bzw. 19km Goerzallee & A103 alles mit Zeitangaben. Da ich die Strecken kenne, kann ich mit einem Blick morgens schon sehen wie ich am besten ins Büro komme und ob mal wieder Schulanfang oder Ferien sind
So nun zum technischen:
1. Über Subsysteme legst du ein neues an (wenn nicht vorhanden). Ich habe meins „HTTP-API Interface extern“ genannt.
2. Über den Ressourcen Manager wechsle ich ggf. in das passende Subsystem im Reiter oben.
3. Dort füge ich einen neuen http-API Server hinzu mit folgenden Daten:
Bezeichnung: HERE (oder wie ihr wollt)
https://route.ls.hereapi.com
Autorisierung: KEINE <- Wird über den API Key per GET erledigt
Server Zertifikat: Kein Haken
4. Neue Ressource hinzufügen:
a) Bezeichung: HERE Route (ober was euch passt)
b) Ressource URI: /routing/7.2/calculateroute.json?apiKey=<HIER EUREN APIKEY>&waypoint0=geo!<GEODATEN START>&waypoint1=geo!<GEODATEN ZIEL>&mode=fastest;car;traffic:enabled&alternatives=2&routeattributes=labels
c) GET
d) Trigger: erstmal auf 10 Minuten (Rest nachher)
<HIER EUREN APIKEY> = Ersetzt diesen Teil (also auch < > die Klammer müssen weg sein) mit eurem API Key von der HERE Seite.
<GEODATEN START> & <GEODATEN ZIEL> = Ersetzt diese mit euren Daten wie folgt:
Googlemaps aufrufen und Adresse eingeben. Dann in der Karte rechte Maustaste auf den roten Marker (Howto:
https://de.wikihow.com/Marker-in-Google-Maps-setzen) und mit links auf die Zahlen (Geodaten 1. Zeile tippen -> werden dann in die Zwischenablage gepackt.
Diese dann im Link einfügen und das eine Leerzeichen nach dem komma zwischen den Zahlen löschen:
z.B. 52.50350415248919, 13.279196331721325 -> 52.50350415248919,13.279196331721325
Beispiel:
/routing/7.2/calculateroute.json?apiKey=
LKnCB3245iuj1djz6t6SHp9iHS1QMD3er2oKd_asQTl8&waypoint0=geo!
48.02643308223957,12.038227620825444&waypoint1=geo!
52.50350415248919,13.279196331721325&mode=fastest;car;traffic:enabled&alternatives=2&routeattributes=labels
Dann sollte auch schon die JSON Daten bei euch aufschlagen.
Folgende Daten ziehe ich mir aus dem JSON – Feld Selektor:
1. Distanz: response.route[0].summary.distance (Meter / INT)
2. Zeit mit Verkehr: response.route[0].summary.trafficTime (Sekunden / INT)
3. Zeit ohne Verkehr: response.route[0].summary.baseTime (Sekunden / INT)
4. Routen Label A: response.route[0].label[0] (Text / Straßenangabe über…)
5. Routen Label B: response.route[0].label[1]
Wenn ihr jetzt wie ich, zwei alternative Routen berechnen lasst, müsst ihr die 0 von route[0] durch 1 bzw. 2 etc. ersetzten um die Daten der anderen Routen zu bekommen.
Über eine Logik könnt ihr jetzt die Sekunden in Minuten umrechnen und ggf. nur bei starker Abweichung, also üblich sind es 30 Min. aber HERE ermittelt 45 Minuten, entsprechende Infos ausgeben lassen, das man früher losfahren sollte. Oder die Daten mit km, Zeit & Steckeninfo Angaben auf die VISU packen.
Ihr findet auf der DEV Seite von HERE diverse Möglichkeiten, alle habe ich nicht durch, nur diese war mir pers. die passende.
Es geht auch ohne Alternativen:
https://router.hereapi.com/v8/routes?tr ... oKd_asQTl8
Selektor für Fahrzeitmit Verkehr: routes[0].sections[0].summary.duration
Selektor für Distanz: routes[0].sections[0].summary.length
Fazit: Ich bekomme alle meine Daten die ich benötige, muss aber zur Zeit zu oft triggern (alle 5 Min.) und habe damit unnötig Traffic und CPU Last. Wenn ich es raushabe, wie ich den Trigger nur bei Auslösung nur durch Objektänderung hinbekomme, würde ich zu den gewünschten Zeiten einfach ein dafür passendes Objekt triggern. Also z.B. zwischen 7-9 Uhr.
Braucht ihr noch Bilder oder habt Fragen, einfach melden
VG Hiele