Ich habe gehört, dass Teslas API inoffiziell verwendet werden kann, also habe ich sie sofort berührt Da Sie Fahrzeuginformationen erhalten können, lassen Sie uns diese vorerst mit Python abrufen und Slack benachrichtigen
Siehe unten für API-Dokumentation (inoffiziell)
https://tesla-api.timdorr.com/api-basics/authentication
Die Authentifizierungs-ID lautet wie unten beschrieben https://pastebin.com/pS7Z6yyP
Authentifizierungs-ID
TESLA_CLIENT_ID=81527cff06843c8634fdc09e8ac0abefb46ac849f38fe1e431c2ef2106796384
TESLA_CLIENT_SECRET=c7257eb71a564034f9419ee651c7d0e5f7aa6bfbd18bafb5c5c033b093bb2fa3
--Authentication ist "OAuth2Service"
config parser
teslaapi_test.py
def access_vehicle():
import json
from rauth import OAuth2Service #Für die TESLA-API
import configparser
config = configparser.ConfigParser()
config.read('config.conf')
section = 'development'
teslaID = config.get(section,'teslaID')
password = config.get(section,'password')
tesla = OAuth2Service(
client_id = config.get(section,'client_id'),
client_secret = config.get(section,'client_secret'),
access_token_url = "https://owner-api.teslamotors.com/oauth/token",
authorize_url = "https://owner-api.teslamotors.com/oauth/token",
base_url = "https://owner-api.teslamotors.com/",
)
data = {"grant_type": "password",
"client_id": config.get(section,'client_id'),
"client_secret": config.get(section,'client_secret'),
"email": teslaID,
"password": password}
session = tesla.get_auth_session(data=data, decoder=json.loads)
access_token = session.access_token
my_session = tesla.get_session(token=access_token)
url = 'https://owner-api.teslamotors.com/api/1/vehicles/'
vehicles = my_session.get(url).json()['response'][0]
mycar = vehicles['id_s']
return mycar,my_session
def get_vehicle_status():
import json
import datetime
from rauth import OAuth2Service #Für die TESLA-API
mycar,my_session = access_vehicle()
url_vehicle_state = "https://owner-api.teslamotors.com/api/1/vehicles/{:}/vehicle_data".format(mycar)
resp = my_session.get(url_vehicle_state).json()
return resp
config.conf
[development]
#tesla
teslaID = 'Benutzeridentifikation'
password = 'Passwort'
client_id = '81527cff06843c8634fdc09e8ac0abefb46ac849f38fe1e431c2ef2106796384'
client_secret = 'c7257eb71a564034f9419ee651c7d0e5f7aa6bfbd18bafb5c5c033b093bb2fa3'
Benachrichtigungen sind mit Incoming-Webhook einfach. https://api.slack.com/messaging/webhooks#posting_with_webhooks
Slack-Benachrichtigung
import slackweb
slack = slackweb.Slack(url="Webhook-URL")
slack.notify(text="Reisestrecke: {}[km]".format(resp['response']['battery_range'] * 1.60934))
Das Ergebnis sieht so aus
Um den Status zu erhalten und die Benachrichtigung regelmäßig zu senden, werde ich sie an GAE senden und mit cron auslösen oder die Weckverarbeitung aktivieren, damit sie auch dann abgerufen werden kann, wenn sich das Fahrzeug im Ruhezustand befindet.
Recommended Posts