[Modul] Tessie – Tesla-Fahrzeuge in IP-Symcon (Steuerung, Telemetrie & Kachel)

Hallo zusammen,

ich möchte euch mein Modul Tessie for IP-Symcon vorstellen, das ab sofort im Module Store verfügbar ist (einfach im Store nach Tessie suchen).

Worum geht es?

Das Modul bindet Tesla-Fahrzeuge über die Tessie-API in IP-Symcon ein – mit Steuerung per REST und Live-Telemetrie per WebSocket. Statt sich von Hand durch APIs und Datenpunkte zu hangeln, legt ein Konfigurator die Fahrzeuge automatisch an; die relevanten Werte erscheinen als saubere, deutschsprachige Variablen und lassen sich direkt schalten.


Die mitgelieferte Kachel: Ladestand, Reichweite, Temperaturen, Status, Lade-Details und Standort auf einen Blick – inkl. Bedien-Buttons.

Wozu braucht man das?

Wer ein Tesla-Fahrzeug und IP-Symcon hat, will beides natürlich verheiraten. Typische Anwendungsfälle:

  • Visualisieren – Ladestand, Reichweite, Innen-/Außentemperatur, Verriegelung und Ladestatus auf einen Blick.

  • Automatisieren – das Laden ans eigene PV-/Batteriesystem oder an dynamische Stromtarife koppeln, Ladelimit/Ladestrom regeln, vor der Abfahrt vorklimatisieren, Aktionen je nach Standort (zu Hause/unterwegs).

  • Archivieren – Ladevorgänge, Verbrauch und Reichweite über die Zeit loggen.

  • Überwachen – z. B. melden, wenn das Auto unverriegelt ist oder ein Ladevorgang endet.

Bei mir läuft das Fahrzeug zusammen mit PV, Batterie und einem Energiemanagement – da ist das Laden einer der größten und am besten verschiebbaren Verbraucher.

Das Highlight: praktikabel über Tessie – ohne Nutzungskosten der Tesla-API

Das ist für mich der entscheidende Punkt. Die offizielle Tesla Fleet API verlangt von Drittanbietern eine eigene Entwickler-/Domain-Registrierung mit hinterlegtem Public Key und rechnet nutzungsabhängige Gebühren ab (pro Befehl/Abruf) – für eine private Heimautomatisierung unverhältnismäßig aufwändig und potenziell teuer.

Tessie kapselt das: Mit dem Tessie-Abo bekommt man ein einfaches Token, über das sowohl REST-Steuerung als auch Live-Telemetrie laufen – ohne zusätzliche Pro-Nutzung-Kosten der Tesla-API und mit minimalem Setup. Genau das macht die Anbindung in Symcon überhaupt erst alltagstauglich.

Schicke Kachel inklusive

Mitgeliefert wird ein eigenes Modul TessieVehicleTile – eine eigenständige HTML-Kachel für die Kacheln-Visualisierung (Akku-Ring, Reichweite, Temperaturen, Lade-Details, Standort, Bedien-Buttons). Die Datenquelle wird automatisch erkannt, Farben/Schrift sind frei einstellbar, ansonsten übernimmt die Kachel das IP-Symcon-Theme (hell/dunkel). Sie ist bewusst von der Datenlogik getrennt – ein Problem in der Kachel kann die Datenverbindung nicht stören.

Funktionsumfang


Die Konfiguration: deutschsprachige Datenpunkte mit Gruppen-Zuordnung und Anzeige der empfangenen Werte, ein-/ausblendbar und per Drag & Drop sortierbar. Darunter der ausklappbare Bereich für die Linkstruktur.

  • Steuerung (REST): Ver-/Entriegeln, Klima ein/aus, Solltemperaturen, Sitz-/Lenkradheizung, Laden starten/stoppen, Ladelimit, Ladestrom, Ladeport, Fenster lüften/schließen, Hupe/Lichthupe, Sentry-/Valet-Modus, vorderer Kofferraum/Heckklappe, HomeLink, Innenraum-Überhitzeschutz, Klimahaltung u. v. m.

  • Live-Telemetrie über den Tessie-WebSocket-Stream – Werte in Echtzeit statt reinem Polling.

  • Automatische Variablen mit lesbarer Aufbereitung: Enum-Zustände als Klartext, metrische Einheiten (km/h, km, °C, bar), Zeitstempel als Datum, GPS mit ausreichend Nachkommastellen.

  • Datenpunkt-Auswahl: jeden Datenpunkt ein-/ausblenden (abgewählte werden nur versteckt – Objekt-ID und Archivdaten bleiben erhalten), Spalte „Empfangen" zeigt aktive Werte.

  • Sortierung per Drag & Drop mit sinnvoller Standard-Reihenfolge.


Optional erzeugt das Modul einen aufgeräumten Kategoriebaum (Laden, Klima, Sicherheit, Sonstiges) mit voll bedienbaren Links.

  • Optionale Linkstruktur: gruppierter Kategoriebaum an einem frei wählbaren Ort.

  • IP-Symcon-9.0-Presentations für die Darstellung (Schalter/Slider/Auswahl).

  • Vollständig deutsche Übersetzung.

Voraussetzungen

  • IP-Symcon ab Version 9.0

  • Ein Tessie-Konto mit API-Token (deckt REST und Telemetrie ab)

Einrichtung in Kürze

  1. Instanz Tessie Configurator anlegen, den Tessie-Token eintragen.

  2. Die gefundenen Fahrzeuge anlegen – TessieVehicle und WebSocket-Client werden automatisch erzeugt.

  3. Optional eine Instanz TessieVehicleTile für die Kachel-Visualisierung anlegen.

Open Source, Marken & Haftung

Der Code steht unter der MIT-Lizenz und liegt offen auf GitHub: GitHub - DG65/Tessie · GitHub

Inoffizielles Community-Modul – keine Verbindung zu Tesla, Inc. oder Tessie. Wichtig: Die Nutzung erfolgt auf eigenes Risiko. Das Modul schickt echte Befehle an das Fahrzeug (Verriegeln, Fenster, Kofferraum, Laden, Klima). Ich übernehme keine Haftung für Schäden oder Folgeschäden – sicherheitsrelevante Aktionen bitte nicht ungeprüft automatisieren.

Feedback

Über Rückmeldungen, Ideen und Erfahrungsberichte freue ich mich – gern hier im Thread.

Viele Grüße

Dietmar

1 „Gefällt mir“

Changelog

Alle nennenswerten Änderungen an diesem Modul. Format angelehnt an Keep a Changelog.

[2.6.1] - 2026-06-21

Korrigiert (Review-Anpassung)

  • Translate() wird jetzt korrekt mit englischen Quellbegriffen aufgerufen („On the road“, „Away“) und die deutschen Uebersetzungen („Unterwegs“, „Abwesend“) stehen in der locale.json. Vorher wurden die deutschen Begriffe direkt als Quellstring uebergeben.

[2.6.0] - 2026-06-20

Hinzugefuegt

  • Standort-Erkennung: Bleibt „Standort Zuhause“ leer, wird automatisch der Systemstandort aus der Kern-Instanz „Location Control“ uebernommen (dort ist das Zuhause bei der Symcon-Installation ohnehin gepflegt). Eine eigene Angabe im Modul hat weiterhin Vorrang.

[2.5.0] - 2026-06-19

Hinzugefuegt

  • Standort-Erkennung mit mehreren Geofences: Zusaetzlich zum Zuhause-Standort koennen beliebige weitere Standorte (Name, Kartenposition, Radius) als Liste konfiguriert werden. Je Standort entsteht eine Boolean-Variable (stat_geo_*), dazu eine neue Textvariable „Aktueller Standort“ (stat_location_name) mit dem Namen des naechsten passenden Standorts bzw. „Unterwegs“. Bei ueberlappenden Zonen gewinnt der naechstgelegene Standort. Nicht mehr konfigurierte Geofence-Variablen werden ausgeblendet statt geloescht.

Geaendert

  • Panel „Zuhause-Erkennung“ heisst jetzt „Standort-Erkennung (Geofence)“; die Variable „Zu Hause“ (stat_at_home) bleibt unveraendert kompatibel.

[2.4.0] - 2026-06-18

Hinzugefuegt

  • Zuhause-Erkennung (Geofence): Neue optionale Status-Variable „Zu Hause“ (stat_at_home). Aus der GPS-Position (Telemetrie „Fahrzeugposition“) und einem konfigurierbaren Standort + Radius wird per Haversine-Distanz automatisch true/false gesetzt. Konfiguration ueber neues aufklappbares Panel „Zuhause-Erkennung“ (Aktivierung, Standort per Karte, Radius in Metern). Ersetzt externe Skript-/Ereignis-Loesungen (Bounding-Box). Variable bleibt bei Deaktivierung erhalten (nur ausgeblendet), Auswertung unabhaengig von der Auto-Discovery der Telemetrie.

[2.3.5] - 2026-06-17

Geaendert (Review-Anpassung)

  • Kachel (TessieVehicleTile): Button „Stil zuruecksetzen“ (ResetStyle) schreibt die Farben/Schrift-Eigenschaften nicht mehr direkt per IPS_SetProperty+IPS_ApplyChanges, sondern setzt sie nur in der offenen Konfiguration via UpdateFormField. Der Nutzer uebernimmt selbst (vom Symcon-Review empfohlenes Muster).

[2.3.4] - 2026-06-16

Geaendert (Review-Anpassung)

  • Formular-Buttons (Reset Standardliste, Telemetrie alle/nur wichtige einblenden) schreiben nicht mehr direkt die Eigenschaft per IPS_SetProperty+IPS_ApplyChanges, sondern aktualisieren nur die offene Konfiguration via UpdateFormField. Der Nutzer bestaetigt selbst mit „Aenderungen uebernehmen“ (vom Symcon-Review empfohlenes Muster). Gemeinsamer Helfer buildFormRows() fuer die Anzeigespalten.

[2.3.3] - 2026-06-16

Geaendert (Review-Anpassungen)

  • Vendor in allen Modulen auf „Tessie Technology LLC“ (Entwickler der genutzten API) gesetzt.
  • Ablageort der Instanz: Die Eigenschaft InstanceLocation wurde entfernt (Eigenschaften liegen in der Hoheit des Nutzers; die Instanz wurde zuvor bei jedem Uebernehmen zurueckgeschoben). Das SelectCategory bleibt, wird in GetConfigurationForm mit dem aktuellen Parent gefuellt und verschiebt die Instanz nur einmalig per onChange (TESSIE_SetInstanceLocation). Wird die Instanz spaeter regulaer verschoben, zeigt das Feld beim naechsten Laden den tatsaechlichen Ort.

Hinweis

  • Der vom Reviewer genannte ensureVisibleVarsMerged-Punkt (Property-Schreiben in ApplyChanges) war bereits zuvor behoben: kein Property-Schreiben mehr, loadValuesFromConfiguration=false, zusaetzliche Werte werden bei GetConfigurationForm in die values der Liste eingetragen.

[2.3.2] - 2026-06-16

Geaendert

  • Dokumentation aktualisiert: Installation jetzt ueber den Module Store (Suche „Tessie“); veralteten Beta-Branch-Hinweis entfernt; TessieVehicleTile als optionalen Schritt ergaenzt; Hinweis zum Kostenvorteil der Tessie-API gegenueber der nutzungspflichtigen Tesla Fleet API.

[2.3.1] - 2026-06-16

Geaendert

  • Kachel (TessieVehicleTile): Fahrzeugname nicht mehr doppelt - der Name in der Karte entfaellt (er steht bereits im Kachel-Titel); die Verriegelt-Pille rueckt in die Statuszeile. Neue Option „Kachelname automatisch vom Fahrzeug uebernehmen“ (Standard an) benennt die Kachel-Instanz nach dem verbundenen Fahrzeug.

[2.3.0] - 2026-06-16

Hinzugefuegt

  • Neues Modul TessieVehicleTile: eigenstaendige HTML-Kachel (eigene Instanz) fuer die Kacheln-Visualisierung, nach Vorbild des TibberGridRewardTile. Zeigt Akku-Ring/Ladestand, Reichweite, Temperaturen, Verriegelungs-/Klima-/Ladestatus, Lade-Details und Standort einer TessieVehicle-Instanz; optionale Bedien-Buttons (Verriegeln/Klima/Laden) werden an die Quelle weitergereicht. Quelle wird automatisch erkannt (oder per SelectInstance gewaehlt); Live-Updates via VM_UPDATE; Farben/Schrift konfigurierbar, sonst IPS-Theme.

Geaendert

  • Der in 2.2.0 direkt in TessieVehicle integrierte Kachel-Ansatz (GetVisualizationTile im Geraet) wurde wieder entfernt und durch das separate Tile-Modul ersetzt - so bleibt die Datenlogik der Geraete-Instanz unberuehrt.

[2.2.0] - 2026-06-16

Hinzugefuegt

  • HTML-Visualisierungskachel (HTML-SDK) direkt in TessieVehicle: Akku-Ring mit Ladestand, Reichweite, Innen-/Aussentemperatur, Verriegelungs-/Klima-/Ladestatus, Lade-Details (Leistung, Ladestrom, Limit, Zeit bis voll), Standort mit Karten-Link sowie Bedien-Buttons (Verriegeln, Klima, Laden). Aktivierung per SetVisualizationType(1); Live-Updates per UpdateVisualizationValue bei Telemetrie/Aktion; Buttons via requestAction → RequestAction. Layout in TessieVehicle/module.html.

[2.1.7] - 2026-06-16

Geaendert

  • Dokumentation ueberarbeitet: README mit Markenhinweis (kein Bezug zu Tesla/Tessie), Haftungsausschluss, Changelog-Verweis und genauerer Konfigurationsbeschreibung. Vollstaendige MIT-Lizenz in LICENSE (Copyright Dietmar Gureth). Dokumentations-Link (url) in library.json und module.json auf das GitHub-Repository umgestellt.

[2.1.6] - 2026-06-16

Geaendert

  • Deutsche Namen fuer „Climate Keeper Mode“ → „Klimahaltung“, „Front-Trunk oeffnen“ → „Vorderer Kofferraum oeffnen“, „Rear-Trunk oeffnen/schliessen“ → „Heckklappe oeffnen/schliessen“. Bestehende Variablen werden umbenannt, sofern ihr Name noch der alte englische Default ist (eigene Umbenennungen bleiben erhalten).

[2.1.5] - 2026-06-16

Behoben

  • GPS-Koordinaten (Fahrzeug-/Zielposition, Lat/Lon) wurden ohne Nachkommastellen angezeigt, obwohl Float. Diese Variablen bekamen die Standard-Praesentation mit 0 Stellen. Jetzt 6 Nachkommastellen (~0,11 m Genauigkeit).

[2.1.4] - 2026-06-16

Behoben

  • Die per Liste festgelegte Reihenfolge wirkte sich nicht auf die Variablen im Objektbaum aus (das eigentliche Problem hinter „laesst sich nicht verschieben“). Ursache: MaintainVariable setzt die Position nur bei der Neuanlage, nicht fuer bestehende Variablen. ensureVariables fuehrt die Position jetzt explizit per IPS_SetPosition nach (nur bei Abweichung), analog HeishaMon. Drag&Drop bzw. die Listenreihenfolge schlaegt damit auf die Objektbaum-Reihenfolge durch.

[2.1.3] - 2026-06-14

Behoben

  • Drag & Drop der Datenpunkte ging weiterhin nicht, obwohl die Liste strukturell mit HeishaMon identisch war. Entscheidender Unterschied: HeishaMon definiert das Formular in einer statischen form.json und injiziert nur die Werte, Tessie baute das komplette Formular dynamisch in GetConfigurationForm. Die IPS-Konsole aktiviert die Sortierung offenbar nur fuer Listen aus der form.json. Tessie nutzt jetzt dasselbe Muster: Struktur in TessieVehicle/form.json, GetConfigurationForm injiziert nur values + Toggle-Status.

[2.1.2] - 2026-06-14

Behoben

  • Datenpunkte ließen sich nicht per Drag & Drop sortieren (HeishaMon konnte es, Tessie nicht). Ursache gefunden: Tessie schrieb die Listen-Property VisibleVars per IPS_SetProperty waehrend ApplyChanges (Funktion ensureVisibleVarsMerged) - das bringt die an die Property gebundene Liste in einen Zustand, in dem IPS das Umsortieren sperrt. HeishaMon macht das nicht. Aufruf entfernt; loadValuesFromConfiguration wie bei HeishaMon auf false. Vollstaendigkeit/Positionen kommen weiter aus getEffectiveList().

[2.1.1] - 2026-06-14

Geaendert

  • Reihenfolge wieder per Drag & Drop (editierbare Zahlenspalte aus 2.1.0 entfernt - war unpraktisch). Hinweis: Falls sich die Liste nicht verschieben laesst, liegt es an inkonsistentem gespeichertem Zustand aus aelteren Versionen - dann einmal „Reset: Standardliste wiederherstellen“ druecken oder die Instanz neu anlegen.

[2.1.0] - 2026-06-14

Geaendert

  • Reihenfolge der Datenpunkte jetzt ueber eine editierbare Spalte „Reihenfolge“ (Zahl, kleinere = weiter oben) statt Drag & Drop. Drag&Drop (changeOrder) war in IPS 9.0 hier nicht zuverlaessig; die Spalte mit Sortierung nutzt nur dokumentierte, stabile List-Features. Variablen-Positionen und Links folgen der Reihenfolge.

[2.0.5] - 2026-06-14

Behoben

  • Configurator: Fatal json_decode(): Argument #1 must be string beim Anlegen/Sync von Fahrzeugen, wenn IPS_GetConfiguration() waehrend einer Instanz-Erstellung null lieferte. Alle Konfig-Zugriffe laufen jetzt ueber einen abgesicherten Helfer (readInstanceConfig). Toter IPS_GetProperty('InstanceInterface')-Fallback entfernt (verursachte die Warnung „InstanceInterface is not available“).

[2.0.4] - 2026-06-14

Behoben

  • Datenpunkte ließen sich weiterhin nicht per Drag & Drop sortieren. Ursache: bei der Angleichung an HeishaMon war loadValuesFromConfiguration: false gesetzt, wodurch die Liste rein aus berechneten Werten statt aus der Property gefüllt wurde - die geänderte Reihenfolge konnte so nicht gespeichert werden. Jetzt true: die Liste ist property-gestützt (Reihenfolge wird gespeichert), die berechneten Spalten Name/Gruppe/Empfangen werden weiterhin ergänzt.

[2.0.3] – 2026-06-14

Behoben

  • Datenpunkte ließen sich nicht per Drag & Drop sortieren und einige Variablen hatten Position 0. Ursache: die gespeicherte Liste war unvollständig (neue Kern-Variablen aus Updates fehlten). Neu: eine vollständige „effektive Liste" (Defaults + Telemetrie) als Basis für Anzeige, Position und Aktiv-Status; Spaltenkonfiguration an HeishaMon angeglichen (nur Ident wird persistiert).

[2.0.2] – 2026-06-14

Hinzugefügt

  • Datenpunkt-Liste: Spalte Empfangen (zeigt „Ja", sobald die Variable einen Wert erhalten hat) — analog HeishaMon.

[2.0.1] – 2026-06-14

Geändert

  • Instanzkonfiguration optisch an das HeishaMon-Modul angeglichen: Intro-/Erklärtexte, Datenpunkt-Liste mit Spalten Aktiv | Name | Gruppe | Ident (Checkbox zuerst, neue Gruppen-Spalte = Domäne) und die Link-Einstellungen gebündelt im aufklappbaren Bereich Linkstruktur.

[2.0.0] – 2026-06-14

Geändert

  • Variablendarstellung auf IPS-9.0-Presentations umgestellt (Switch/Slider/Enumeration/Value) statt Variablenprofile. Enum-Beschriftungen deutsch (z. B. Climate Keeper, Sitzheizung, Überhitzeschutz-Limit).
  • Mindest-Kompatibilität auf IP-Symcon 9.0 angehoben.

Entfernt

  • Ungenutzte Altlasten aus dem Repository (doppelte module.php im Wurzelverzeichnis, Referenzdateien telemetry_maps.php / telemetry_profiles.json).
  • ensureProfiles() (durch Presentations ersetzt).

[1.2.7] – 2026-06-14

Hinzugefügt

  • Generischer Klartext-Fallback für unbekannte Enum-/Code-Werte ohne locale.json-Eintrag (CamelCase → Wörter, z. B. Apollo19CapKit → „Apollo 19 Cap Kit").

Geändert

  • Telemetrie-Keys, die bereits über eigene Aktions-Variablen abgebildet sind (z. B. ClimateKeeperMode, CabinOverheatProtectionTemperatureLimit), werden nicht mehr als stat_tel_-Duplikat gepflegt, sondern automatisch ausgeblendet und nicht verlinkt.

[1.2.6] – 2026-06-14

Geändert

  • Enum-Profilbeschriftungen auf Deutsch (Tessie.ClimateKeeperMode, Tessie.COPTemp); Assoziationen werden auch auf bestehende Profile angewendet.
  • Weitere Raddesign-Codes in locale.json (Apollo/Gemini CapKit).

[1.2.5] – 2026-06-14

Hinzugefügt

  • Lesbare Labels für gängige Tesla-Raddesign-Codes.

Geändert

  • Wert-Migration übersetzt jetzt auch bereits gespeicherte Klartext-Enums (z. B. WheelType), nicht nur Roh-JSON.

[1.2.4] – 2026-06-14

Hinzugefügt

  • migrateTelemetryValues(): macht beim Übernehmen bereits gespeicherte Roh-JSON-/stale Telemetriewerte sofort lesbar (idempotent).

[1.2.3] – 2026-06-14

Behoben

  • Sonderfälle ClimateKeeperMode / CabinOverheatProtectionTemperatureLimit setzen die Aktions-Variablen jetzt auch aus Enum-Strings (vorher blieben sie leer).

[1.2.2] – 2026-06-14

Behoben

  • Weitere Telemetrie-Wertformen lesbar: invalid-Marker, longValue/floatValue, Zeitstempel als Datum, verschachtelte Bool-Objekte (z. B. Türen) als Liste.

[1.2.1] – 2026-06-14

Behoben

  • Tesla-Enum-Wrapper ({"…Value":"…"}) werden ausgepackt und über locale.json lesbar gemacht statt als roher JSON-String gespeichert.

[1.2.0] – 2026-06-14

Hinzugefügt

  • HTTP-Fehlererkennung (Status ≥ 400) in den API-Aufrufen.

Geändert

  • Abgewählte Variablen werden ausgeblendet statt gelöscht (Objekt-ID und Archivdaten bleiben erhalten).
  • Linkbaum auf reine Domänen-Gruppierung umgestellt (jede Variable genau einmal: Laden / Klima / Sicherheit / Sonstiges).

[1.1.4] – 2026-02-26

  • Ausgangsstand (Beta): Steuerung und Telemetrie, Configurator, Auto-Variablen, Variablenprofile.