API für online services?
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 Antworten
Zitat:
@Klayman schrieb am 26. November 2019 um 15:04:08 Uhr:
hat sich hier nochmal was getan?
Was sollte sich da tun? Unter anderem gibt es https://github.com/davidgiga1993/AudiAPI.
Hallo zusammen,
was Muskelkatermann am 12.07.2019 14:27 geschrieben hat, ist vollkommen korrekt!
Ich habe selber ein Android Widget geschrieben, welches die Fahrzeugdaten des Servers abruft und mir im Android Widget auf dem Smartphone anzeigt.
Die myAudi App hat den Nachteil, dass diese keine Notification sendet, wenn am Auto was ist. Man müsste jedes mal aktiv in die App schauen. Wer macht das schon alle 2 Minuten??!
Hintergrund: Ich hatte das Problem, dass laufend meine Heckklappe aufgegangen ist. Mit dem Widget wurde mir das mit einer kurzen Verzögerung zumindest angezeigt. (Außerdem macht was selbst bauen auch Spaß 😉)
Leider ist das was goingelectric beschrieben hat eingetreten. 🙁 Am 12.12.2019 16:30 Uhr wurde diese Schnittstelle (https://msg.audi.de/fs-car/) auf einen neuen Server umgeleitet (https://id.audi.com). Die alten Aufrufe funktionieren daher nicht mehr. Die neue Schnittstelle funktioniert ähnlich. Mir ist auch schon gelungen den Tokenabruf erfolgreich durchzuführen. Leider komme ich momentan beim Abruf der Fahrzeugdaten nicht weiter, da irgendwas mit der Authentifizierung noch nicht passt.
Wenn jemand hieran arbeitet oder nützliche Hinweise hat, wäre das prima!!
Und sollte jemand von Audi das lesen... liebes Auditeam, es ist Weihnachten, veröffentlicht doch die API an Interessierte! Die anderen Firmen wir google zeigen doch, dass es geht. Da kann man z.B. auch die googlemaps API konsumieren.
Schöne Weihnachten Allen! 🙂
Die Firma tronity arbeitet gerade dran. Die Mappen gerade die Daten. Ladestand klappt schon.
Ähnliche Themen
Zitat:
@NafIdua schrieb am 17. Dezember 2019 um 11:07:21 Uhr:
Hallo zusammen,was Muskelkatermann am 12.07.2019 14:27 geschrieben hat, ist vollkommen korrekt!
Ich habe selber ein Android Widget geschrieben, welches die Fahrzeugdaten des Servers abruft und mir im Android Widget auf dem Smartphone anzeigt.
Die myAudi App hat den Nachteil, dass diese keine Notification sendet, wenn am Auto was ist. Man müsste jedes mal aktiv in die App schauen. Wer macht das schon alle 2 Minuten??!
Hintergrund: Ich hatte das Problem, dass laufend meine Heckklappe aufgegangen ist. Mit dem Widget wurde mir das mit einer kurzen Verzögerung zumindest angezeigt. (Außerdem macht was selbst bauen auch Spaß 😉)Leider ist das was goingelectric beschrieben hat eingetreten. 🙁 Am 12.12.2019 16:30 Uhr wurde diese Schnittstelle (https://msg.audi.de/fs-car/) auf einen neuen Server umgeleitet (https://id.audi.com). Die alten Aufrufe funktionieren daher nicht mehr. Die neue Schnittstelle funktioniert ähnlich. Mir ist auch schon gelungen den Tokenabruf erfolgreich durchzuführen. Leider komme ich momentan beim Abruf der Fahrzeugdaten nicht weiter, da irgendwas mit der Authentifizierung noch nicht passt.
Wenn jemand hieran arbeitet oder nützliche Hinweise hat, wäre das prima!!
Und sollte jemand von Audi das lesen... liebes Auditeam, es ist Weihnachten, veröffentlicht doch die API an Interessierte! Die anderen Firmen wir google zeigen doch, dass es geht. Da kann man z.B. auch die googlemaps API konsumieren.
Schöne Weihnachten Allen! 🙂
Hallo zusammen, Update zu meinem Post vom 17.12.2019. Seit heute dem 19.12.2019 12:54 ist der Service wieder online. Keine Ahnung was Audi damit eine Woche gemacht hat.
Gibt es derzeit eine funktionierende API?
Die bisher bekannte (Muskelkatermann oben) funktioniert seit ca. September 2020 nicht mehr.
Ich hatte eine kleine App darauf basiert, läuft jetzt nicht mehr
Hi,
es gibt immer noch keine offizielle API, aber man kann die bekannte interne AUDI API immer noch benutzen.
AUDI hat im September die Authentifizierung auf ein gemeinsames System des VW Konzerns umgestellt. Deshalb gingen die inoffiziellen Bastellösungen erst mal nicht mehr. Aber mittlerweile sind auch die Details des neuen Systems bekannt und man kann die API wieder nutzen.
Ich verweise hier mal auf das Projekt EVCC (https://github.com/andig/evcc), das ich selbst nutze und das ich sehr gut gelungen finde.
Wer ein wenig fit in der Programmiersprache "go" ist kann sich hier anschauen, wie man sich an der API authentifiziert und die gewünschten Infos abruft: https://github.com/andig/evcc/blob/master/vehicle/audi.go
Grüße,
Matthias.
Zitat:
@GeTeIh schrieb am 15. Dezember 2020 um 12:04:49 Uhr:
Hi,
es gibt immer noch keine offizielle API, aber man kann die bekannte interne AUDI API immer noch benutzen.
AUDI hat im September die Authentifizierung auf ein gemeinsames System des VW Konzerns umgestellt. Deshalb gingen die inoffiziellen Bastellösungen erst mal nicht mehr. Aber mittlerweile sind auch die Details des neuen Systems bekannt und man kann die API wieder nutzen.
Ich verweise hier mal auf das Projekt EVCC (https://github.com/andig/evcc), das ich selbst nutze und das ich sehr gut gelungen finde.
Wer ein wenig fit in der Programmiersprache "go" ist kann sich hier anschauen, wie man sich an der API authentifiziert und die gewünschten Infos abruft: https://github.com/andig/evcc/blob/master/vehicle/audi.goGrüße,
Matthias.
Vielen Dank für die Links! Ich hatte bereits im Web gesucht, jedoch diese Seiten nicht gefunden.
Werde mir das über die Feiertage mal anschauen.
Hat hier jemand mal was gemacht? Ich komme irgendwie nicht weiter.
Ich kenne
https://github.com/davidgiga1993/AudiAPI
und
https://github.com/arjenvrh/audi_connect_ha
Mit https://github.com/davidgiga1993/AudiAPI bekomme ich nach Installieren der Dependencies und Anlegen der json:
Zitat:
Traceback (most recent call last):
File "C:\temp\AudiAPI-master\Run.py", line 23, in <module>
main()
File "C:\temp\AudiAPI-master\Run.py", line 14, in main
logon_service.login(data['user'], data['pass'])
File "C:\temp\AudiAPI-master\audiapi\Services.py", line 191, in login
token = self.__login_request(user, password)
File "C:\temp\AudiAPI-master\audiapi\Services.py", line 221, in __login_request
reply = self._api.post(self.url('/token'😉, data, use_json=False)
File "C:\temp\AudiAPI-master\audiapi\API.py", line 62, in post
return self.__handle_error(r.json())
File "C:\temp\AudiAPI-master\audiapi\API.py", line 68, in __handle_error
raise Exception('API error: ' + str(error) + '\n' + error_msg)
Exception: API error: invalid_request
Backend Failure
Mit
https://github.com/arjenvrh/audi_connect_hakomme ich etwas weiter. Ich habe kein Home Assistent und will es auch nicht haben. Ich will einfach nur in der Kommandozeile arbeiten - im Endeffekt nutze ich Node-Red.
Also habe ich im Source nach jeder Fehlermeldung die HA spezifischen Sachen rausgeschmissen und bekomme jetzt mit
Zitat:
import sys
import asyncio
import getopt
import jsonfrom audiconnect.audi_connect_account import AudiConnectAccount
from audiconnect.dashboard import Dashboard
from audiconnect.audi_services import AudiServicefrom aiohttp import ClientSession
def printHelp():
print("test.py --user <username> --password <password> --spin <spin> --country <region>"😉async def main(argv):
user = ""
password = ""
spin = ""
country = ""
try:
opts, _ = getopt.getopt(argv, "hu😛:s:r:", ["user=", "password=", "spin=", "country="])
except getopt.GetoptError:
printHelp()
sys.exit(2)
for opt, arg in opts:
if opt == "-h":
printHelp()
sys.exit()
elif opt in ("-u", "--user"😉:
user = arg
elif opt in ("-p", "--password"😉:
password = arg
elif opt in ("-s", "--spin"😉:
spin = arg
elif opt in ("-r", "--country"😉:
country = argif user == "" or password == "":
printHelp()
sys.exit()async with ClientSession() as session:
account = AudiConnectAccount(session, user, password, country, spin)await account.update(None)
#await account.update_vehicle_position(None)for vehicle in account._vehicles:
dashboard = Dashboard(account, vehicle, miles=False)
myJout={}
for instrument in dashboard.instruments:
myJout.update( {str(instrument) : instrument.str_state} )
print(json.dumps(myJout))if __name__ == "__main__":
task = main(sys.argv[1:])
res = asyncio.get_event_loop().run_until_complete(task)
Daten.
Mit
Zitat:
print(await account.set_vehicle_lock("WAUZZZFxxxxxxxx",True))
geht das Auto sogar zu (oder mit unlock auch auf).
ABER:
Die Position kann ich irgendwie nicht auslesen und ein manuelles Update der Daten vom Auto geht auch nicht. Ich bekomme nur die Daten die gerade noch auf dem Server sind. UND: komischerweise kommen immer weniger Daten. Gestern hatte ich noch km-Stand, Öl usw. Heute nur noch Tür-Status und Heizung.
Da ich mich mit PHP und Python nicht wirklich auskenne musste ich sehr viel probieren um bis zu dem Status zu kommen. Hat das irgendwer besser hinbekommen?
deleted, falscher Hinweis
Ah, anscheinend wurde die API geändert: https://github.com/arjenvrh/audi_connect_ha/issues/228
Also warten bis die das gelöst haben. Aber meine Frage bleibt: Wenn jemand helfen kann etwas aufzubauen was nur mit Python in der Kommandozeile (ohne HomeAssistant) läuft, bitte ich um Kontaktaufnahme.
hast du es schon mit GPT probiert?
Mit "jemand" hatte ich eigentlich einen Menschen gemeint 🙂
Bin Home Assistant user und bei mir ist es gerade ja leider auch kaputt. Ich schau gerade ob die maintainer da noch aktiv was machen oder ob ich selbst was starten muss.
https://github.com/cyr-ius/audiconnectpy -> das sollte doch genau das sein was du suchst, ohne home assistant
Edit: habs mal kurz getestet, klappt bei meinem RS3 nicht perfekt, da geht auch aktuell nur Fahrzeugname / Modell(jahr) :|