Im Blogbeitrag zum Thema Tesla-API wurde beschrieben, wie die API des Fahrzeugs funktioniert und welche Funktionen darüber aufrufbar sind. Hier soll es nun um meine eigene Implementierung gehen und wie ich das Auto mit meinem Haus verbinde. Grundlage ist wiederum meine eigene Heimvernetzungslösung - also der sogenannte itemManager. Durch diese Software Schicht werden die Sensoren und Funktionen des Autos in das Smart Home integriert, als wären es lokale Geräte im Haus. Allerdings nutze ich nicht alle Funktionen, die über die API zur Verfügung gestellt werden, sondern zunächst eine kleine Auswahl die zukünftig immer noch leicht erweiterbar ist.
Basis für die Integration ist ein itemManager Modul für die Tesla API. Dieses verbindet sich nach der Authentifizierung mit der Status- und Commands-API und spricht darüber die Schnittstellen im Fahrzeug an. Durch die Software-Abstraktion verhalten sich dann die Sensoren im Auto wie normale Smart Home Geräte im Haus. Im Folgenden sind ein paar Beispiele beschrieben, welche Funktionen ich dabei eingebaut habe.
Die Temperatursensoren im und am Auto
Zur Steuerung der Heizung hat das Auto Sensoren zur Ermittlung der Temperatur im Fahrzeug und in der unmittelbaren Umgebung außen am Fahrzeug. Die Messwerte dieser Sensoren lassen sich auch über die API auslesen. Diese Werte übertrage ich in das Smart Home und ergänze damit die Temperaturüberwachung der Räume um den besonderen Raum "Auto". In späteren Use Cases kann man sich überlegen, ob man nicht zum Beispiel personenbezogene Lieblingstemperaturen zwischen Haus und Auto abgleicht. Der Außentemperatursensor erweitert die bereits vorhandenen Messfühler am Haus zur Vervollständigung eines Gesamtbildes rund ums Haus.
Der Fahrzeugstatus
Beim Fahrzeugstatus werden die folgenden Werte unterschieden:
- Parken: Das Fahrzeug ist abgestellt und lädt nicht. In diesem Zustand wird die Aktualisierungsfequenz der Datenabfragen gedrosselt (21 min), damit das Fahrzeug genügend Zeit hat um in den Standby Modus zu gehen.
- Fahren: Das Fahrzeug ist gerade im Fahrbetrieb und wird bewegt. Die Aktualisierungsfrequenz ist nun hoch (30sec), damit ein möglichst präzises Fahrtprofil erstellt werden kann.
- Laden: Das Fahrzeug ist an einer Ladestation angeschlossen. In der Zeit ist die Update-Frequenz mittelhoch (60sec), um eine hinreichend genaue Ladekurve ermitteln zu können.
- Schlafen: Das Fahrzeug ist im Standby-Modus. Die Update-Frequenz ist nun niedrig (21 min), um das Fahrzeug nicht unnötig aufzuwecken.
Die Fahrzeug-Position
Bei der Ermittlung der Position werden die GPS-Daten übertragen sowie die Fahrtrichtung (als Himmelsrichtung - Azimut). Das erlaubt eine Lokalisierung und Aufzeichnung von Fahrtstrecken. In einem späteren Use Case werden mithilfe einer Google-Maps API die Abstände der Fahrzeugposition vom Haus ermittelt (Luftlinie), um daraus die erwartete Ankunftszeit zu berechnen. Es ist auch denkbar, bestimmte Smart Home Funktionen nur dann auszuführen, wenn das Fahrzeug in der Nähe ist wie z.B. das Einschalten einer Ladesäule.
Der Kilometerzähler
Zur Ermittlung monatlicher Statistiken wird ebenso der Gesamtkilometerzähler ausgelesen. Jede Änderung führt zu einer Erhöhung eines Zählers ähnlich wie ein Stromzähler.
Der Batterieladestand (State of Charge - SoC)
Zuguterletzt wird noch der Batterieladestatus ermittelt. Insbesondere beim Laden und beim Fahren kann man aus den gemessenen Werten Statistiken erzeugen, die die Ladegeschwindigkeit bzw. den Stromverbrauch beim Stehen und Fahren zu ermitteln.
Fazit
Die Erfassung der Werte funktioniert bis dahin zuverlässig. Die folgende Darstellung zeigt die Aufzeichnungen der Sensoren über einen Beispielzeitraum von drei Tagen.
Man sieht schön den Zusammenhang zwischen der Innentemperatur und deren Verlauf während der Fahrzeiten sowie die Veränderung des Batteriestands beim Parken, Laden und Fahren.
In einem weiteren Schritt ist noch vorgesehen, auch direkt Funktionen aufzurufen wie das Öffnen von Türen und dem Kofferraum. Auch die Hupe und die Lichthupe können betätigt werden. Diese Use Cases werden aber erst zu einem späteren Zeitpunkt implementiert.