1. Startseite
  2. Forum
  3. Auto
  4. Audi
  5. Audi E-Autos
  6. Audi Q8 e-tron
  7. API für online services?

API für online services?

Audi e-tron GE

Hallo,
ok ok, API ist vielleicht etwas zuviel verlang bei einem Dinosaurier wie Audi, aber gibt es ein Web-Portal mit dem man auf sein Fahrzeug zugreifen kann? Mich interessiert vor allem der aktuelle Ladestand. Möchte diesen per scraper abgreifen und auf meiner KNX-Visu anzeigen.
Viele Grüße,
Klayman

Beste Antwort im Thema

Hallo Zusammen,
Ich habe schon bevor ich den e-tron bekommen habe mit dem Q7 ein bisschen gespielt und es ist recht simpel. Habe es gerade nochmal gecheckt und z.B. den Ladestand abgerufen. Wobei ich nicht glaube, dass die API offiziell ist. Auf der anderen Seite hat Audi wohl kaum Möglichkeiten die API zu ändern, ohne Updates auf alle Fahrzeuge und Apps zu übertragen.

Anwendungsfall ist z.B. die Daten in ein Hausautomatisierungssystem zu übertragen, um z.B. den Ladestatus des Autos auf einem Infodisplay anzeigen zu lassen. Mir persönlich ist die App für solche Sachen viel zu träge.
Dann ergeben sich weitere Möglichkeiten, z.B. die Wallbox aktivieren (z.B. go-e charger mit offener API), wenn die PV Anlage gerade ordentlich liefert...

Man muss einen MyAudi Account haben, dann meldet man sich in der API mit seinen Zugangsdaten an, bekommt ein Authorisierungstoken, kann dann statusinformationen. Die API ist RESTful.
Ich habe die benötigten Aufrufe in cURL Aktionen notiert, sodass technisch versierte die Problemlos in die Entwicklungsumgebung es Vertrauens adaptieren können.
Authorisierung:
curl --header "Content-Type: application/x-www-form-urlencoded" --data 'grant_type=password&username=Username deines MyAudi Account&password=Passwort deines MyAudi Account' --request POST https://msg.audi.de/fs-car/core/auth/v1/Audi/DE/token
In der Response findet mann dann das access_token.

Abruf Fahrzeugliste (Falls Fahrgestellnummer nicht bekannt)
curl --header "Accept: application/json" --header "X-App-Name: eRemote" --header "X-App-Version: 1.0.0" --header "User-Agent: okhttp/2.3.0" --header "Authorization: AudiAuth 1 access_token" https://msg.audi.de/fs-car/usermanagement/users/v1/Audi/DE/vehicles
Abruf Statusinformationen
curl --header "Accept: application/json" --header "X-App-Name: eRemote" --header "X-App-Version: 1.0.0" --header "User-Agent: okhttp/2.3.0" --header "Authorization: AudiAuth 1 access_token" https://msg.audi.de/fs-car/bs/vsr/v1/Audi/DE/vehicles/FAHRGESTELLNUMMER/status
Abruf Ladeinformationen
curl --header "Accept: application/json" --header "X-App-Name: eRemote" --header "X-App-Version: 1.0.0" --header "User-Agent: okhttp/2.3.0" --header "Authorization: AudiAuth 1 access_token" https://msg.audi.de/fs-car/bs/batterycharge/v1/Audi/DE/vehicles/FAHRGESTELLNUMMER/charger

Den aktuellen Ladestand findet man dann z.B. im JSON unter: charger/status/batteryStatusData/stateOfCharge/content
Ich weiß allerdings nicht, in welchem Interval das Auto die Daten selbst an den Audiserver sendet. Es gibt ja in der App auch dieses zweifelhafte Funktion, dass man dann nochmal separat die Daten vom Auto Abruft. Ich denke es wird nicht aktueller sein als die App, die bei mir zumindest uralt Daten hat.
Es sind anscheinend auch noch weitere Zugriffe möglich. Denke sogar Standheizung einschalten etc. habe ich aber noch nicht probiert. Vielleicht hat man auch über die API dann die Möglichkeit die neuesten Daten vom Auto abholen zu lassen. Wer in die Richtung weiter forschen möchte sollte mal nach https://msg.volkswagen.de/fs-car/ bzw. https://msg.audi.de/fs-car/ googeln. Da gibt es zum teil schon einige Projekte auf GitHub.
Viele Grüße

51 weitere Antworten
Ähnliche Themen
51 Antworten

Ich finde das auch sehr spannend und würde das gerne in meiner Homematic Steuerung zu Hause einbinden, zum Beispiel um das Auto vor der Fahrt zu klimatisieren, usw.

Hallo,
ich habe in der Mittagspause nochmal etwas weiter geschaut. Infos zur Klimaanlage bekomm man wie folgt:
Abruf Klimainformationen
curl --header "Accept: application/json" --header "X-App-Name: eRemote" --header "X-App-Version: 1.0.0" --header "User-Agent: okhttp/2.3.0" --header "Authorization: AudiAuth 1 ACCESSTOKEN" https://msg.audi.de/fs-car/bs/climatisation/v1/Audi/DE/vehicles/FAHRGESTELLNUMMER/climater
Temperatur ist z.B. climater/settings/targetTemperatrue/content
Bei dem Wert, so wie ich das auf GitHub gelesen habe, muss man nach dem dritten Zeichen ein Dezimaltrenner einsetzen und dann 273 abziehen. Beispiel 2945 = 294.5 - 2736 = 21.5

Dort habe ich auch den Befehl zum aktivieren der Klima gefunden, hat aber leider auf Anhieb nicht funktioniert. Haber aber noch eine andere Quelle gefunden, die aber eine andere API benutzt das schaue ich mir morgen mal an ;)

Brauche ich, um die Klimaanlage über API oder App anzusprechen eigentlich Standklimatisierung (Serie) oder Komfort-Standklimatisierung (Sonderausstattung)?

Die Serien-Standklima genügt hierfür. Über die Komfort kannst Du dann eben zusätzlich noch die Sitz- und Lenkradheizung mitaktivieren.

Also auf dem aktuellen Stand wäre der Aufruf für die Standheizung:
curl --header "Content-Type: application/vnd.vwg.mbb.climateraction_v1_0_0+xml" --header "Accept: application/json" --header "X-App-Name: eRemote" --header "X-App-Version: 1.0.0" --header "User-Agent: okhttp/2.3.0" --header "Authorization: AudiAuth 1 ACCESSTOKEN" --request POST --data '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><action xmlns:xsi="de.davidbs.android.modapp.model.jaxb.climate"><type>startClimatisation</type></action>' https://msg.audi.de/fs-car/bs/climatisation/v1/Audi/DE/vehicles/FAHRGESTELLNUMMER/climater/actions
Da kommt als Response allerdings climatisation.bs.notacceptable, was einige andere API User auf Github auch bestätigt haben.

Die andere API scheint VW spezifisch zu sein:
https://www.volkswagen-car-net.com/portal/user/username/passwort/-/emanager/trigger-climatisation
Habe aber leider keinen VW und eine passendes Audi Pendant habe ich nicht gefunden.

Ich habe versucht die Traffic vom iPhone über einen BURP Proxy abzugreifen, zumindest die iOS App scheint sich nicht auf den Proxy einzulassen. Hat hier jemand ein Android Device um das mal zu testen.
Man müsste die kostenlose BURP Version installieren, den Proxy für Android starten:
https://support.portswigger.net/.../...ndroid-device-to-work-with-burp
Und dann für HTTPS noch die CA auf dem Android hinterlegen:
https://support.portswigger.net/.../...talling%20CA%20Certificate.html
Danach müsste man in BURP alle request sichtbar haben.
Dann würde man die App einmal komplett öffnen, ins Klimamenü und dann erstmal in BURP die History löschen und anschließend in der App auf sofort starten gehen. Danach sollte BURP den zugehörigen Request anzeigen.
Diesen dann in RAW (Request und Response) post oder PN und nicht vergessen das ACCESS Token und etwaige Zugangsdaten zu entfernen.

Grüße

Wie es scheint haben wir hier einige Software-Spezialisten im Forum.
Ebenso herrscht hier, so glaube ich, Einigkeit darüber, dass die Planung der Ladestationen / Routen über das e-tron Navi mangelhaft ist.
Daher möchte ich hier nochmals den vor einiger Zeit von mir erstellen Thread:
API [On Board Diagnose (OBD)] für Integration von aBetterRoutePlanner (ABRP)
ins Spiel bringen und die Überschrift erweitern, da sich die API momentan als wahrscheinlichere Alternative anbietet.
Es geht darum die Nutzung des ABRP mit dem e-tron zu verbinden. So erhält der ABRP während der aktiven Navigation eine Rückmeldung über den Batteriestand (SOC) und den aktuellen Verbrauch. Damit wird nicht nur die Planung während der Fahrt zuverlässiger, sondern auch die Offline-Planung, weil die Daten wiederum zur Verbesserung des ABRP eingesetzt werden.
Nach meinem Verständnis würde über den ABRP-Login eine Verknüpfung mit der API des e-tron geben, damit die erwähnten Daten übertragen werden.
Da sich als User meine Fähigkeiten auf "copy & paste" beschränken, wäre sicherlich nicht nur ich demjenigen, oder dem Team, zu großem Dank verpflichtet, welches diese Großtat vollbringt! :D
Wenn wir den ABRP als wirklich funktionierende Routenplanung für den Audi an den Start bekämen und in diesem Punkt nicht Tesla und Hyundai hinterherfahren - das wäre... Gleichziehen durch Technik!
Der direkte Link zum Audi e-tron Alpha Forum des ABRP. Jegliche zielführende Beiträge die Planung für den e-tron zu verbessern sind sehr willkommen.
Grüße,
Ols

Moin!
Das wäre wirklich sehr gut!
Aber leider hat ABRP keinerleit Traffic-Infos. Somit ist der nur für die grobe Vorabplanung wirklich nutzbar.
Im Fahrzeug sind (gerade jetzt in den Ferien) die Traffic-Onlinedaten unverzichtbar...
Oder gibt es da Erweiterungen für den ABRP?

Du kannst die am ABRP geplante Route als Link für Waze, Google und Konsorten ausgeben. Dann hast du deine Live Navigation über Apple CarPlay. Gleichzeitig kann über die oben genannte Rückmeldung ABRP die Route dynamisch anpassen, je nachdem ob du mehr verbrauchst oder aus anderen Gründen eine andere Lade Station anfahren möchtest.

Asset.JPG

Mion!
Das hört sich schon mal gut an.
Ich hatte gestern nur das Problem, dass das Navi aufgrund einer Autobahnsprerrung (während der Fahrt) eine komplett andere Route vorgeschlagen hat.
Somit musste ich erst mal im ABRP schauen, welche Ladepunkte da so möglich sind...
Da die Ladepunkte ja als feste Zwischenziele ans Navi übergeben werden, würde das wohl nicht automatisch passieren, oder doch?

Bei Waze funktioniert es so das von ABRP immer der nächste Ladepunkt als Ziel übergeben wird. Damit erreichst du die Ladestation auch auf dynamisch von Waze generierten Umwegen/Ausweichrouten. Sollte Dein Batteriestand bei erreichen anders als geplant sein, würde ABRP unter Umständen bei Bedarf eine andere nächste Station vorschlagen.
Bei Navigation über Google werden alle Zwischenziele, also die wird gesamte Route übergeben. Müsste aber genauso funktionieren.

@Muskelkatermann: kennst Du Dich mit NodeRed aus? Ich versuche gerade die grundlegenden Statusinformationen in NodeRed zu bekommen. Access token bekomme ich, aber die folgenden Anfragen werden mit malformed request für gw.error.authentication abgewiesen. Scheint als hätte ich die Header nicht richtig konfiguriert.
Hier der code für den function node zum header setzen:

Code:
msg.headers = {};
msg.headers['Accept'] = 'application/json';
msg.headers['X-App-Name'] = 'eRemote';
msg.headers['X-App-Version'] = '1.0.0';
msg.headers['User-Agent'] = 'okhttp/2.3.0';
msg.headers['Authorization'] = "AudiAuth 1 kOPNdikbkdie8hIPSo9LEWZ71idtzv0j72AcyL219rVgQC";
msg.payload = "";
return msg;

Dann ein HTTP request node mit der Methode GET und der URL

https://msg.audi.de/.../status

Das Access Token trage ich derzeit noch manuell ein um nicht zu viele Logins zu erzeugen, hat ja eine recht lange Laufzeit. Aber irgendwie scheint mir was am Header faul zu sein oder er wird nicht richtig übergeben, oder oder oder...

Viele Grüße,

Klayman

ok geht jetzt. Keine Ahnung woran es lag...

@Muskelkatermann Hast Du mal versucht das Attribut "heaterSource":"electric" hinzuzufügen? Es könnte evtl. so aussehen (pseudocode):

Code:
<action>
<type>startClimatisation</type>
<settings>
<heaterSource>electric</heaterSource>
</settings>
</action>

edit: Mit folgender payload bekomme ich ein HTTP202:

{"action":{"type":"startClimatisation","settings":{"heaterSource":"electric"}}}

Im Antwortobjekt ist auch eine action ID enthalten. Den Status der action kann ich wiederum abfragen, erhalte dann aber folgendes Antwortobjekt mit einem Fehler:

{"action":{"type":"startClimatisation","actionId":25726892,"actionState":"failed","errorCode":2}}

Scheint als sei mein Fahrzeug nicht erreichbar, zumindest kann ich die Standklimatisierung auch nicht über die App starten. Seltsamerweise kann ich aber aktuelle Daten vom Fahrzeug über die App abrufen...

VG,

Klayman

hallo zusammen, über die App kann man sich ja die Verbrauchsstatistik anschauen. auf der webseite klappt das leider nivht - hat bereits jemand ein script geschrieben, um die Verbrauchsdaten nutzbar zu machen? Z.B. als stukturierter Datensatz zur weitern Auswertung oder Visualisierung?

hat sich hier nochmal was getan?

Deine Antwort
Ähnliche Themen