Tesla Model S und X per PowerShell fernsteuern, mithilfe der Restful WebAPI von TESLA
Ich liebe meinen Tesla Model S und ich liebe PowerShell. Na dann bringe ich doch mal beides zusammen. 😀
Für die Anmeldung beim Tesla Restful Webservice müssen Sie dieselben Anmeldeinformationen (Benutzername und Kennwort), wie auf mytesla (https://my.teslamotors.com/de_DE/user/login) angeben. Also zunächst mal zur Authentifizierung:
# Fenster für Anmeldeinfos anzeigen
$Credential=Get-Credential
# Kennwort für die SSL-gesicherte Übergabe „vorbereiten“
$ptr=[Runtime.InteropServices.Marshal]::SecureStringToBSTR($Credential.Password)
$pwd=[Runtime.InteropServices.Marshal]::PtrToStringAuto($Ptr)
# Notwendige Anmeldeinformationen zusammensetzen
$LoginInfo=@{
‚grant_type‘ = ‚password‘
‚client_id‘ = „e4a9949fcfa04068f59abb5a658f2bac0a3428e4652315490b659d5ab3f35a9e“
‚client_secret‘ = „c75f14bbadc8bee3a7594412c31416f8300256d7668ea7e6e7f06727bfb9d220“
‚email‘ = $Credential.UserName
‚password‘ = $pwd
}
Dann können Sie die Verbindung unter Angabe der Anmeldeinfos herstellen:
$Connect = Invoke-RestMethod -Uri „https://owner-api.teslamotors.com/oauth/token“ -Method Post -Body $LoginInfo
Als Rückgabewert erhalten Sie dann einen Zugriffsschlüssel (Token) mit dem alle weiteren Aktionen durchgeführt werden können:
$Token=$Connect.access_token
Hier noch ein paar allgemeine, notwendige http Header Informationen zusammen schrauben:
$Header=@{
„Authorization“=“Bearer $Token“
„Accept-Encoding“=“gzip,deflate“
}
Gehen wir mal davon aus, Sie haben nur einen Tesla, dann finden Sie mit dem nachfolgenden Kommando in $car allgemeine Informationen zu Ihrem Fahrzeug wie Farbe, Name u.v.a.m.
$car = (Invoke-RestMethod -Uri „https://owner-api.teslamotors.com/api/1/vehicles“ -Method Get -Headers $Header).response
Falls Ihr Dornröschen noch schläft, müssen Sie es erst mal wach küssen:
if ($car.state -ne „online“) {Invoke-RestMethod -Uri „https://owner-api.teslamotors.com/api/1/vehicles/$($car.id)/wake_up“ -Method Post -Headers $Header}
Jetzt können Sie Ihren Liebling mal etwas genauer untersuchen, wie z.B. die eingestellten Einheiten (gui_settings) abfragen:
(Invoke-RestMethod -Uri „https://owner-api.teslamotors.com/api/1/vehicles/$($car.id)/data_request/gui_settings“ -Method Get -Headers $Header).response
Den Teil gui_settings können Sie gegen die folgenden Begriffe austauschen:
charge_state = Zeigt den Akkustatus an
climate_state = Klima Anlage
drive_state = GPS Infos
vehicle_state = Zustandsinformationen: km-Stand, Schiebedach auf? etc…
Sie dürfen natürlich auch gerne Einstellungen vornehmen (z.B. hupen):
Invoke-RestMethod -Uri „https://owner-api.teslamotors.com/api/1/vehicles/$($car.id)/command/honk_horn“ -Method Post -Headers $Header
Auch hier gibt’s wieder einen ganzen Sack voll weiterer Begriffe, die Sie gegen honk_horn austauschen können:
flash_lights = Lichthupe
charge_port_door_open = Ladeanschluß öffnen
charge_standard = Ladelimit auf Standard setzen
charge_max_range = Ladelimit auf max. Reichweite (100%) setzen
set_charge_limit?percent=75 = Ladelimit beliebig einstellen
charge_start und charge_stop = Ladevorgang starten bzw. beenden
door_lock und door_unlock = Türen auf bzw. zu
set_temps?driver_temp=23.7&passenger_temp=18.1 = wie warm soll’s darf’s denn sein?
auto_conditioning_start und auto_conditioning_stop = Klima an bzw. aus
sun_roof_control?state=open&percent=50 = Schiebedach steuern
remote_start_drive?password=StrengGeheim = Kennwort für den Start ohne Schlüssel im Fahrzeug festlegen. Verfällt nach 2 Minuten, wenn das Fahrzeug nicht bis dahin gestartet wird.
Schreibe einen Kommentar zu Anonymous Antworten abbrechen