Metainformationen zur Seite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
plugins:teslacmd:start [2024/12/01 20:54] – Version 0.2.4 - fix for version 0.2.2, state command was missing in json file. Jan Wachsmuthplugins:teslacmd:start [2025/02/09 10:56] (aktuell) Jan Wachsmuth
Zeile 2: Zeile 2:
  
 ++++ Version history ... | ++++ Version history ... |
 +
 +Version 0.7.2:
 +
 +  * %%Fixed queries for Tesla powerwall.%%
 +
 +Version 0.7.1:
 +
 +  * %%Added commands to retrieve status and control battery for Tesla powerwall.%%
 +
 +Version 0.7.0:
 +
 +  * Settings page enhanced: now you can adjust timeouts, debugging and retries directly (custom BLE command removed).
 +  * Debug messages for plugin are more descriptive and comprehensive.
 +  * Process handling for generating and verifying keys is improved: you may stop the countdown of 30 seconds now if you are done by clicking the button.
 +  * Enhancement for send.php: now VIN is used for MQTT messages if it was provided.
 +
 +Version 0.6.0:
 +
 +  * added queuing system on Loxberry for BLE commands (only one binary is able to use BLE device at a time)
 +  * improved performance for settings screen - RSSI is fetched on request only
 +  * updated tesla-control binary (RSSI is added in JSON output)
 +  * added verification, if a public key was installed properly
 +
 +Version 0.5.1:
 +
 +  * Minor corrections in function to send keys to car
 +  * Added verification if public key was properly installed in car
 +  * Added/updated binary images for Tesla Vehicle Command SDK utilities for 32-bit Raspberry OS
 +
 +Version 0.5.0:
 +
 +  * Automatically select the proper SDK/API from VIN of the vehicle (only pre 2021 S and Y models use old API).
 +  * Create and delete a key pair via GUI for each vehicle with explanations
 +  * Send public key to car via GUI with explanations
 +  * Show RSSI (received signal strength) and meaning
 +  * Show function blocks for outputs and output commands that can be copied to Loxone config
 +  * **NOTE**: since this version, special builds of Tesla utlities that produce JSON output are required! See below for more information.
 +  * Updated binary for tool '**tesla-contol**' that has a new category to get location information
 +  * Added binary for new tool '**tesla-scan**' that scans for vehicles nearby without using any keys
  
 Version 0.2.4: Version 0.2.4:
Zeile 13: Zeile 52:
 Statement from Tesla regarding the updated SDK: adds support for fetching and decrypting vehicle data over BLE. Some types of vehicle data are not available prior to 2024.38. Statement from Tesla regarding the updated SDK: adds support for fetching and decrypting vehicle data over BLE. Some types of vehicle data are not available prior to 2024.38.
  
-You are able to retrieve detailed status information from the vehicle via BLE. The tool 'tesla-contol' has a new command 'state <category>', with following values for category: charge-schedule, precondition-schedule, media-detail, software-update, climate, drive, tire-pressure, media, parental-controls, charge, closures+You are able to retrieve detailed status information from the vehicle via BLE. The tool '**tesla-contol**' has a new command 'state <category>', with following values for category: charge-schedule, precondition-schedule, media-detail, software-update, climate, drive, tire-pressure, media, parental-controls, charge, closures
  
 The TeslaCmd plugin supports all new commands and options for 'tesla-control' and 'tesla-keygen'. Updated binaries for 64-bit Raspberry are included. The TeslaCmd plugin supports all new commands and options for 'tesla-control' and 'tesla-keygen'. Updated binaries for 64-bit Raspberry are included.
Zeile 78: Zeile 117:
 Das Tesla Vehicle Command SDK enthält das [Tesla Control Utility]([[https://github.com/teslamotors/vehicle-command/tree/main/cmd/tesla-control#tesla-control-utility]]) über welches Befehle  entweder über Bluetooth Low Energy (BLE) oder das Internet über die Tesla Fleet API an das Fahrzeug gesendet werden können. Derzeit ist für das Plugin nur BLE implementiert und es gibt derzeit keine Pläne die Fleet API zu unterstützen. Das Tesla Vehicle Command SDK enthält das [Tesla Control Utility]([[https://github.com/teslamotors/vehicle-command/tree/main/cmd/tesla-control#tesla-control-utility]]) über welches Befehle  entweder über Bluetooth Low Energy (BLE) oder das Internet über die Tesla Fleet API an das Fahrzeug gesendet werden können. Derzeit ist für das Plugin nur BLE implementiert und es gibt derzeit keine Pläne die Fleet API zu unterstützen.
  
-Bisher (Stand Juli 2024) gibt es in der neuen API nur Befehle zum Steuern von Funktionenwie z.B. das Ein- oder Ausschalten der Klimaanlage, das Einstellen des maximalen Ladestroms oder zum Öffnen bzw. Schließen des KofferraumesDie API enthält einen einzigen Befehl 'body-controller-state'um den Status für diverse Systeme abzufragenu.a. SchlafzustandPräsenz, Schließzustand für Türen und Kofferraum.+Alle Befehle zur Steuerung des Fahrzeugs, z.B. Das Ändern der Klimatisierung, das Ändern der Einstellungen zum Laden des Fahrzeugs oder das Öffnen oder Schließen des Kofferraums sind über die neue Vehicle Command API sowohl über BLE, als auch über die Fleet API verfügbarMittlerweile unterstützt die neue API zwei Befehle zum Abrufen von Statusinformationen über BLE. Der erste Befehl „**//body-controller-state//**“ ruft grundlegende Informationen über SchließzuständeSchlafstatus und Benutzeranwesenheitsstatus ab und funktioniert auchwenn das Fahrzeug schläftDer zweite Befehl „**//state//**“ wird verwendetum detaillierte Statusinformationen abzurufen.
  
-Diese Plugin unterstützt daher weiterhin die bisherige (inoffizielle) Owner's API für alle Befehle, die darüber noch funktionieren, um z.B. Statusinformationen zum Fahrzeug oder einer Power Wall abzufragen. In den Einstellungen kann man für jedes Fahrzeug bzwPowerwall festlegen, welche API verwendet wird:  - die alte (inoffizielle) Owner's API für ALLE BefehleDies ist sinnvoll sofern das Fahrzeug die alten Befehle noch unterstützt oder eine Powerwall verwendet wird- ein Mix aus der (inoffizielleOwner's API um Statusinformationen abzufragen und die neue Vehicle Command API, um Befehle über BLE an das Fahrzeug zu senden. Diese werden über das Tool 'Tesla Control Utility' (tesla-control) gesendet.+Das Plugin unterstützt ebenfalls die alten Befehle der (inoffiziellen) Owner's API, die noch funktionieren und z.B. für S- und Y-Modelle vor 2021und Powerwalls weiterhin verwendet werdenBei neueren Fahrzeugen können einige Statusinformationen weiterhin ebenfalls über die (inoffizielle) Owner's-API ([[https://owner-api.teslamotors.com/api/1/vehicles/]]...) abgerufen werden. Seit Version 0.5 dieses Plugins wird die richtige API automatisch ausgewählt.
  
 Alle Daten (Statusinformationen) werden vom Fahrzeug über MQTT zurück an den Loxone Miniserver übertragen. Die Subskription dafür lautet ''%%teslacmd/#%%'' und wird im MQTT Gateway Plugin automatisch eingetragen. Beim ersten Öffnen des Plugins muss die Anmeldung bei Tesla durchgeführt werden. Dazu wird bei Tesla ein Token generiert. Das Token wird anschliessend automatisch verlängert. Nach erfolgreicher Anmeldung werden möglichen Abfragen aufgelistet, welche am Miniserver als Virtuelle Ausgänge definiert werden können. Alle Daten (Statusinformationen) werden vom Fahrzeug über MQTT zurück an den Loxone Miniserver übertragen. Die Subskription dafür lautet ''%%teslacmd/#%%'' und wird im MQTT Gateway Plugin automatisch eingetragen. Beim ersten Öffnen des Plugins muss die Anmeldung bei Tesla durchgeführt werden. Dazu wird bei Tesla ein Token generiert. Das Token wird anschliessend automatisch verlängert. Nach erfolgreicher Anmeldung werden möglichen Abfragen aufgelistet, welche am Miniserver als Virtuelle Ausgänge definiert werden können.
Zeile 110: Zeile 149:
 | **vehicle_state**  |   | Vehicle state, such as which doors are open, tpms pressure  |   | | **vehicle_state**  |   | Vehicle state, such as which doors are open, tpms pressure  |   |
 | **body_controller_state** | {{ :plugins:teslacmd:bluetooth.svg?10x20&nolink }}  | %%Fetch limited vehicle state information. Works over BLE even when infotainment / vehicle is asleep.%% |   | | **body_controller_state** | {{ :plugins:teslacmd:bluetooth.svg?10x20&nolink }}  | %%Fetch limited vehicle state information. Works over BLE even when infotainment / vehicle is asleep.%% |   |
-| **state** | {{ :plugins:teslacmd:bluetooth.svg?10x20&nolink }}  | %%Fetch vehicle state over BLE for following categories: '//tire-pressure//', '//parental-controls//', '//closures//', '//charge-schedule//', '//drive//', '//precondition-schedule//', '//media//', '//media-detail//', '//software-update//', '//charge//', or '//climate//'.%% |   |+| **state** | {{ :plugins:teslacmd:bluetooth.svg?10x20&nolink }}  | %%Fetch vehicle state over BLE for following categories: 'tire-pressure', 'parental-controls', 'closures', 'charge-schedule', 'drive', 'location', 'precondition-schedule', 'media', 'media-detail', 'software-update', 'charge', or 'climate'.%% |   |
  
 === Befehle für ein Fahrzeug für die alte Owner's API === === Befehle für ein Fahrzeug für die alte Owner's API ===
Zeile 191: Zeile 230:
 | **software_update_cancel**  | %%Cancel a pending software update.%%  | | **software_update_cancel**  | %%Cancel a pending software update.%%  |
 | **guest_mode_off**  | %%Disable Guest Mode.%%  | | **guest_mode_off**  | %%Disable Guest Mode.%%  |
-| **guest_mode_on**  | %%Enable Guest Mode. See https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-commands#guest-mode.%%  |+| **guest_mode_on**  | %%Enable Guest Mode. This mode is used by e.g. rental car companies to restricts certain vehicle UI functionality like renaming the car or deleting keys. See https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-commands#guest-mode.%%  |
 | **erase_guest_data** | %%Erase Guest Mode user data.%% | | **erase_guest_data** | %%Erase Guest Mode user data.%% |
 +| **add_key** | %%Add PUBLIC_KEY to vehicle whitelist with ROLE and FORM_FACTOR.%% |
 +| **add_key_request** | %%Request NFC-card approval for a enrolling PUBLIC_KEY with ROLE and FORM_FACTOR.%% |
  
-=== Abfragen für Powerwall ===+=== Abfragen für Powerwall / Energy Site ===
  
 ^ Befehl ^ Beschreibung ^ ^ Befehl ^ Beschreibung ^
Zeile 202: Zeile 243:
 | %%SITE_PROGRAMS%% | %%Retrieves energy site program information.%% | | %%SITE_PROGRAMS%% | %%Retrieves energy site program information.%% |
 | %%SITE_TARIFF_RATE%% | %%Retrieves the user defined Utility Rate Plan used for Time-Based Control mode. It looks like this endpoint is updated every 30 minutes.%% | | %%SITE_TARIFF_RATE%% | %%Retrieves the user defined Utility Rate Plan used for Time-Based Control mode. It looks like this endpoint is updated every 30 minutes.%% |
 +| %%BACKUP_HISTORY%% | %%Returns the backup (off-grid) event history of the site in duration of seconds.%% |
 +| %%CHARGE_HISTORY%% | %%Returns the charging history of a wall connector.%% |
 +| %%ENERGY_HISTORY%% | %%Returns the energy measurements of the site, aggregated to the requested period.%% |
 +
 +=== Befehle für Powerwall / Energy Site ===
 +
 +^ Befehl ^ Beschreibung ^
 +| %%BACKUP%% | %%Adjust the site's backup reserve.%% |
 +| %%GRID_IMPORT_EXPORT%% | %%Allow/disallow charging from the grid and exporting energy to the grid.%% |
 +| %%OFF_GRID_VEHICLE_CHARGING_RESERVE%% | %%Adjust the site's off-grid vehicle charging backup reserve.%% |
 +| %%OPERATION%% | %%Use autonomous for time-based control and self_consumption for self-powered mode.%% |
 +| %%STORM_MODE%% | %%Update storm watch participation.%% |
 +| %%TIME_OF_USE_SETTINGS%% | %%Update the time of use settings for the energy site.%% |
  
 ===== Voraussetzungen ===== ===== Voraussetzungen =====
Zeile 209: Zeile 263:
 ===== Golang Bluetooth Library ===== ===== Golang Bluetooth Library =====
  
-Leider wird die Golang Bluetooth Library **//[[https://github.com/go-ble/ble|go-ble]]//** derzeit nicht gepflegt. Auf einem Raspberry PI kommt es bei Ausführung des Tools '//tesla-control//' aus dem SDK, welches das Plugin verwendet, zu einem Problem, wenn z.B. das Fahrzeug nicht in der Nähe über BLE erreichbar ist. Das Tool kann dann in einer Endlosschleife festhängen und gibt die verwendeten Bluetooth Ressourcen nicht mehr frei. Ein weiteres Ausführungen des Tools wird mit einer Fehlermeldung abgebrochen. Dieses Problem ist von einem Anwender erkannt worden und in einem [[https://github.com/go-ble/ble/pull/112|Pull Request]] bereits ein Code vorbereitet worden, der den Fehler beseitigt, aber der PR wird nicht von den Autoren der Library bestätigt. Dadurch wird es deutlich umständlicher, eine Version des Tools ohne den Fehler zu erstellen.+Leider wird die Golang Bluetooth Library **//[[https://github.com/go-ble/ble|go-ble]]//** derzeit nicht gepflegt. Auf einem Raspberry PI kommt es bei Ausführung des Tools '//tesla-control//' aus dem SDK, welches das Plugin verwendet, zu einem Problem, wenn z.B. das Fahrzeug nicht in der Nähe über BLE erreichbar ist. Das Tool kann dann in einer Endlosschleife festhängen und gibt die verwendeten Bluetooth Ressourcen nicht mehr frei. Ein weiteres Ausführungen des Tools wird mit einer Fehlermeldung abgebrochen. Dieses Problem ist von einem Anwender erkannt worden und in einem [[https://github.com/go-ble/ble/pull/112|Pull Request]] (PR) bereits ein Code vorbereitet worden, der den Fehler beseitigt, aber der PR wird nicht von den Maintainern des Git Repositories bestätigt. Dadurch ist es deutlich umständlicher, aus den 'offiziellen' Quellen eine Version des Tools ohne den Fehler zu erstellen.
  
-Da die Meldungen im Debug-Modus im o.a. Fehlerbild zu mehreren 1000 Zeilen Output führen, habe ich die Tools aus dem Tesla Vehicle Command SDK auf eine andere [[https://github.com/rigado/ble|Golang Bluetooth Library von Rigado]] umgestellt, die deutlich bessere Meldungen erzeugt. Der o.a. Fehler ist dort leider ebenfalls noch vorhanden, siehe [[https://github.com/rigado/ble/pull/76|Pull Request #76]].+Da die Meldungen im Debug-Modus im o.a. Fehlerbild zu mehreren 1000 Zeilen Output führen, habe ich die Tools aus dem Tesla Vehicle Command SDK auf eine andere [[https://github.com/rigado/ble|Golang Bluetooth Library von Rigado]] umgestellt, die deutlich bessere Meldungen erzeugt. Der o.a. Fehler ist dort leider ebenfalls noch vorhanden, siehe [[https://github.com/rigado/ble/pull/76|Pull Request #76]]. Daher muss eine angepasste Version des Tesla Vehicle Command SDK verwendet werden, die eine angepasste Version der BLE Library inklusive Fix verwendet.
  
 ===== Installation ===== ===== Installation =====
Zeile 220: Zeile 274:
   - Installation des [[plugins:mqtt_gateway:start|Plugin MQTT Gateway]]. Sollte dieses bereits auf dem Loxberry vorhanden sein, kann dieser Punkt übersprungen werden. Ab LoxBerry 3.0 ist das MQTT Gateway ein Bestandteil des LoxBerrys und daher bereits automatisch installiert.   - Installation des [[plugins:mqtt_gateway:start|Plugin MQTT Gateway]]. Sollte dieses bereits auf dem Loxberry vorhanden sein, kann dieser Punkt übersprungen werden. Ab LoxBerry 3.0 ist das MQTT Gateway ein Bestandteil des LoxBerrys und daher bereits automatisch installiert.
   - Installation des Tesla-Command Plugins über die Plugin Verwaltung.   - Installation des Tesla-Command Plugins über die Plugin Verwaltung.
-  - Installation bzw. Erstellung der beiden Kommandozeilentools aus dem Tesla Vehicle Command SDK, siehe zugehörige README.md auf Github oder nachfolgende Hinweise. +  - Installation bzw. Erstellung der beiden Kommandozeilentools aus dem Tesla Vehicle Command SDK, siehe nachfolgende Hinweise. Dieser Schritt entfällt bei einem Loxberry auf Basis eines Raspberry PI mit **64-Bit** (Diet-PI mit Version Bookworm)
-  - Erstellung eines privaten und öffentlichen Schlüssels bzw. Schlüsselpaares, Installation des öffentlichen Schlüssels im Fahrzeug, siehe zugehöriges README.md vom Tesla Vehicle Command SDK auf Github oder nachfolgende Hinweise.+  - Erstellung eines privaten und öffentlichen Schlüssels bzw. Schlüsselpaares, Installation des öffentlichen Schlüssels im Fahrzeug, siehe zugehöriges README.md vom Tesla Vehicle Command SDK auf Github oder nachfolgende Hinweise. Dieser Schritt entfällt seit Version 0.5.0 und ist hier nur noch als Referenz enthalten. Ab Version 0.5.0 können die benötigten Schlüssel direkt in der GUI erstellt werden.
  
 ==== Installation der Tools aus dem Tesla Vehicle Command SDK ==== ==== Installation der Tools aus dem Tesla Vehicle Command SDK ====
  
-Dieser Schritt kann bei einem Loxberry auf Basis eines Raspberry PI mit 64-Bit (z.B. bei einem Diet-PI mit Version Bookworm) als auch 32-Bit übersprungen werden, weil die beiden benötigten Tools bereits im Binärformat im Plugin enthalten sind. Man benötigt daher weder Golang noch das SDK. Für alle anderen Betriebssysteme und CPUs ist dieser Schritt erforderlich. Die Installation der Tools ist in der [[https://github.com/teslamotors/vehicle-command/blob/main/README.md#installation-and-configuration|README.md]] des SDKs beschrieben und hier nur ergänzt. Windows wird offiziell nicht unterstützt. Die Installation hat auf einem MacBook mit Sonoma und einem Raspberry PI mit 32 als auch 64-Bit funktioniert. Wenn man die Tools lieber selber erstellen möchte oder Tesla das SDK aktualisiert hat, dann kann man alternativ die nachfolgenden Schritte auch auf einem Raspberry PI ausführen.+Dieser Schritt kann bei einem Loxberry auf Basis eines Raspberry PI mit **64-Bit** (z.B. bei einem Diet-PI mit Version Bookworm) übersprungen werden, weil die beiden benötigten Tools bereits im Binärformat im Plugin enthalten sind. Man benötigt daher weder Golang noch das SDK. Bei Verwendung eines Raspberry PI mit **32-Bit** bitte die Release Notes beachten. In einigen Versionen habe ich die Tools aktualisiert, aber wg. des zusätzlichen Aufwandes sind die nicht in jeder Version aktualisiert und funktionieren daher möglicherweise nicht. 
 + 
 +Für alle anderen Betriebssysteme und CPUs ist dieser Schritt erforderlich. Die Installation der Tools ist in der [[https://github.com/teslamotors/vehicle-command/blob/main/README.md#installation-and-configuration|README.md]] des SDKs beschrieben und hier nur ergänzt. Windows wird offiziell nicht unterstützt. Die Installation hat auf einem MacBook mit Sonoma und einem Raspberry PI mit 32 als auch 64-Bit funktioniert. Wenn man die Tools lieber selber erstellen möchte oder Tesla das SDK aktualisiert hat, dann kann man alternativ die nachfolgenden Schritte auch auf einem Raspberry PI ausführen. 
 + 
 +**WICHTIG**: die Installation von Golang ist sehr spezifisch für die jeweilige Hardware und OS Version, insbesondere ist auf die passende Architektur (64- oder 32-Bit) zu achten. Die nachfolgende Anleitung ist daher nur exemplarisch für ein Raspberry dargestellt und erfordert u.U. tiefergehende Kenntnisse von Linux und Erstellung von Programmen (u.a. Git und Golang Compile/Build). Wg. größerer Anpassungen an den Ausgaben der Tools (u.a. kompaktes JSON-Format, Erweiterung um Nummern statt Enum Bezeichnern, andere BLE Bibliothek mit Bugfix) funktionieren nur die u.a. Bibliotheken (github.com/jan21493/vehicle-command.git und github.com/Jan21493/ble)
  
 === Installation von Golang === === Installation von Golang ===
Zeile 250: Zeile 308:
 Die Installation des **//Tesla Vehicle Command SDK//** kann über **//Git//** erfolgen. Alternativ kann das SDK auch im **//.zip//** Format heruntergeladen und ausgepackt werden. Der entscheidende Schritt ist der Befehl 'build' mit dem die beiden benötigten Tools **//tesla-keygen//** und **//tesla-control //**erstellt**// //**werden. Diese Befehle sollten als User 'loxberry' ausgeführt werden. Die Installation des **//Tesla Vehicle Command SDK//** kann über **//Git//** erfolgen. Alternativ kann das SDK auch im **//.zip//** Format heruntergeladen und ausgepackt werden. Der entscheidende Schritt ist der Befehl 'build' mit dem die beiden benötigten Tools **//tesla-keygen//** und **//tesla-control //**erstellt**// //**werden. Diese Befehle sollten als User 'loxberry' ausgeführt werden.
  
-Anschließend werden die Tools in das Verzeichnis **///usr/local/bin//** kopiert, welches für zusätzliche Befehle bereits vorgesehen und im Suchpfad eingetragen ist. Da der Befehl **//sudo//** auf dem Loxberry aus Sicherheitsgründen eingeschränkt ist, muss man sich mit dem Befehl **//su//** als Superuser anmelden, um die entsprechenden Tools in die Systemverzeichnisse kopieren zu können. Danach meldet man sich mit **//exit//** wieder als Superuser ab.+Eine modifizierte Version der Golang Bluetooth Library von Rigado ist [[https://github.com/Jan21493/ble|hier]] zu finden. Eine [[https://github.com/Jan21493/vehicle-command/|angepasste Version des Tesla Command SDKs]] für diese Golang BLE Library, die zusätzlich Versionsinformationen anzeigt und Ausgaben kompakt im JSON Format liefert, ist dort ebenfalls zu findenFür das Erstellen der Tools mit Go sind mehrere Umgebungsvariablen zu setzen:
  
 <code bash> <code bash>
Zeile 258: Zeile 316:
 # exit # exit
 cd ~ cd ~
-git clone https://github.com/teslamotors/vehicle-command.git+git clone https://github.com/teslamotors/vehicle-command.git 
 +git clone https://github.com/jan21493/vehicle-command.git 
 +# git clone https://github.com/rigado/ble.git 
 +git clone --single-branch --branch local-enhancements https://github.com/Jan21493/ble
 cd vehicle-command/ cd vehicle-command/
 # if not set yet: export PATH=$PATH:/opt/loxberry/golang/go/bin # if not set yet: export PATH=$PATH:/opt/loxberry/golang/go/bin
 go get ./... go get ./...
 +
 +# set environment variables that are used for version information
 +HWINFO=$(cat /sys/firmware/devicetree/base/model|xargs --null printf "%s")
 +HWARCH=$(uname -m)
 +VCVERSION=$(git rev-parse --short HEAD)
 +TODAY=$(date "+%a, %d %b %Y %T")
 +echo "Hardware info: "$HWINFO
 +echo "Hardware architecure: "$HWARCH
 +echo "Vehicle-Command SDK version: "$VCVERSION
 +echo "Date: "$TODAY
  
 # build tesla-control utility - may take a while # build tesla-control utility - may take a while
 cd cmd/tesla-control cd cmd/tesla-control
-go build ./...+go build -ldflags "-X 'main.version=$VCVERSION' -X 'main.hwinfo=$HWINFO' -X 'main.hwarch=$HWARCH' -X 'main.today=$TODAY'"  ./... 
 + 
 +# build tesla-scan utility - may take a while 
 +cd ../tesla-scan 
 +go build -ldflags "-X 'main.version=$VCVERSION' -X 'main.hwinfo=$HWINFO' -X 'main.hwarch=$HWARCH' -X 'main.today=$TODAY'"  ./...
  
 # build tesla-keygen utility - may take a while # build tesla-keygen utility - may take a while
Zeile 271: Zeile 346:
 go build ./... go build ./...
 cd .. cd ..
-# als Superuser ausführen 
-su 
-mv ./tesla-control/tesla-control /usr/local/bin/ 
-mv ./tesla-keygen/tesla-keygen /usr/local/bin/ 
 </code> </code>
  
-Der Zugriff auf Bluetooth erfordert unter Linux ein entsprechendes Recht, welches man dem Tool tesla-control explizit geben muss, damit es von einem 'normalen' User ausgeführt werden kann. Dafür ist eine Anmeldung als Superuser erforderlich.+Anschließend werden die Tools in das Verzeichnis **///usr/local/bin//** kopiert, welches für zusätzliche Befehle bereits vorgesehen und im Suchpfad eingetragen ist. Da der Befehl **//sudo//** auf dem Loxberry aus Sicherheitsgründen eingeschränkt ist, muss man sich mit dem Befehl **//su//** als Superuser anmelden, um die entsprechenden Tools in die Systemverzeichnisse kopieren zu können. Der Zugriff auf Bluetooth erfordert unter Linux ein entsprechendes Recht, welches man den Tools tesla-control und tesla-scan explizit geben muss, damit es von einem 'normalen' User ausgeführt werden kann. Dafür ist ebenfalls eine Anmeldung als Superuser erforderlich.
  
 <code bash> <code bash>
 # als Superuser ausführen # als Superuser ausführen
 +su
 +cd /opt/loxberry
 +mv ./vehicle-command/cmd/tesla-control/tesla-control /usr/local/bin/
 setcap 'cap_net_admin=eip' /usr/local/bin/tesla-control setcap 'cap_net_admin=eip' /usr/local/bin/tesla-control
 +mv ./vehicle-command/cmd/tesla-keygen/tesla-keygen /usr/local/bin/
 +mv ./vehicle-command/cmd/tesla-scan/tesla-scan /usr/local/bin/
 +setcap 'cap_net_admin=eip' /usr/local/bin/tesla-scan
 exit exit
 </code> </code>
  
-Als Ergebnis der oben dargestellen Schritte sind jetzt zwei Tools aus dem Tesla Vehicle Command SDK auf dem Loxberry installiert, die vom User Loxberry ausgeführt werden können. Zur ersten Überprüfung kann man die Tools mit der Hilfe-Funktion aufrufen.+Als Ergebnis der oben dargestellen Schritte sind jetzt die Tools aus dem Tesla Vehicle Command SDK auf dem Loxberry installiert, die vom User Loxberry ausgeführt werden können. Zur ersten Überprüfung kann man die Tools mit der Hilfe-Funktion aufrufen.
  
 <code bash> <code bash>
 tesla-control -h tesla-control -h
 tesla-keygen -h tesla-keygen -h
-</code> +tesla-scan -h
- +
-=== Modifikation des SDKs === +
- +
-Eine modifizierte Version der Golang Bluetooth Library von Rigado ist [[https://github.com/Jan21493/ble|hier]] zu finden. Eine angepasste Version des Tesla Command SDKs für diese Golang BLE Library, die zusätzlich Versionsinformationen anzeigt ist dort ebenfalls zu finden. Für das Erstellen der Tools mit Go sind mehrere Umgebungsvariablen zu setzen: +
- +
-<code -> +
-export PATH=$PATH:/opt/loxberry/golang/go/bin +
-cd vehicle-command/ +
-go get ./... +
-cd cmd/tesla-control +
-HWINFO=$(cat /sys/firmware/devicetree/base/model|xargs --null printf "%s"+
-HWARCH=$(uname -m) +
-VCVERSION=$(git rev-parse --short HEAD) +
-TODAY=$(date "+%a, %d %b %Y %T") +
-echo "Hardware info: "$HWINFO +
-echo "Hardware architecure: "$HWARCH +
-echo "Vehicle-Command SDK version: "$VCVERSION +
-echo "Date: "$TODAY +
-go build -ldflags "-X 'main.version=$VCVERSION' -X 'main.hwinfo=$HWINFO' -X 'main.hwarch=$HWARCH' -X 'main.today=$TODAY'"  ./... +
- +
-# use root user for the following two commands +
-su +
-mv ./tesla-control /usr/local/bin/ +
-setcap 'cap_net_admin=eip' /usr/local/bin/tesla-control+
 </code> </code>
  
Zeile 323: Zeile 376:
 Zunächst wird dafür ein Schlüsselpaar erstellt. Damit im Plugin mehrere Fahrzeuge unterschieden werden können, muss das Schlüsselpaar die VIN des Fahrzeugs im Namen enthalten. Diese wird z.B. im 'Settings Menu' für jedes Fahrzeug angezeigt. Zunächst wird dafür ein Schlüsselpaar erstellt. Damit im Plugin mehrere Fahrzeuge unterschieden werden können, muss das Schlüsselpaar die VIN des Fahrzeugs im Namen enthalten. Diese wird z.B. im 'Settings Menu' für jedes Fahrzeug angezeigt.
  
-Derzeit muss das Schlüsselpaar noch manuell erstellt werden. Für eine spätere Version ist eine Integration in die GUI geplant. Die VIN muss durch die VIN des eigenen Fahrzeugs ersetzt werden. Der öffentliche Schlüssel wird nach der Installation im Fahrzeug nicht mehr benötigt und kann dann gelöscht werden.+Mittlerweile kann das Schlüsselpaar über die GUI im Menü 'Settings' erstellt werden, indem man auf das Plus-Symbol klickt. 
 + 
 +Um manuell ein Schlüsselpaar zu erstellen, ersetzt man die VIN durch die VIN des eigenen Fahrzeugs und führt den nachfolgend angegebenen Befehl aus. Der öffentliche Schlüssel wird nach der Installation im Fahrzeug nicht mehr benötigt und kann dann gelöscht werden.
  
 <code bash> <code bash>
Zeile 330: Zeile 385:
 </code> </code>
  
-Die Schlüssel, die mit Hilfe des Tools **//tesla-keygen//** erstellt wurden, können auch mit OpenSSL Tools verarbeitet werden, um sich z.B. den öffentlichen Schlüssel anzeigen zu lassen ''openssl ec -in LRW31234567890123-private.pem  -pubout'' bzw. diesen zu speichern''openssl ec -in LRW31234567890123-private.pem -pubout -out LRW31234567890123-public.pem''.+Der gleiche o.a. Befehl mit 'create' zeigt den öffentlichen Schlüssel an, sofern der private Schlüssel bereits vorhanden ist. 
 + 
 +Die Schlüssel, die mit Hilfe des Tools **//tesla-keygen//** erstellt wurden, können auch mit OpenSSL Tools verarbeitet werden, um sich z.B. den öffentlichen Schlüssel anzeigen zu lassen ''openssl ec -in LRW31234567890123-private.pem  -pubout'' bzw. diesen zu speichern ''openssl ec -in LRW31234567890123-private.pem -pubout -out LRW31234567890123-public.pem''.
  
 ==== Installation des öffentlichen Schlüssels im Fahrzeug ==== ==== Installation des öffentlichen Schlüssels im Fahrzeug ====
  
 Erst mit der Installation des öffentlichen Schlüssels eines Schlüsselpaares im Fahrzeug wird der zugehörige private Schlüssel autorisiert und damit schützenswert. Um den Schlüssel zu installieren, empfiehlt es sich ein Laptop zu verwenden und mit diesem eine ssh Verbindung zum Loxberry aufzubauen. So kann man einfach und relativ schnell die notwendigen Schritte im Fahrzeug ausführen, um den öffentlichen Schlüssel zu installieren. Erst mit der Installation des öffentlichen Schlüssels eines Schlüsselpaares im Fahrzeug wird der zugehörige private Schlüssel autorisiert und damit schützenswert. Um den Schlüssel zu installieren, empfiehlt es sich ein Laptop zu verwenden und mit diesem eine ssh Verbindung zum Loxberry aufzubauen. So kann man einfach und relativ schnell die notwendigen Schritte im Fahrzeug ausführen, um den öffentlichen Schlüssel zu installieren.
- 
-**Wichtig ist, dass das Fahrzeug wach ist und sich nicht im Schlafmodus befindet!** 
  
 === Senden des Befehls an das Fahrzeug === === Senden des Befehls an das Fahrzeug ===
  
-Im ersten Schritt wird der Befehl zum Installieren des öffentlichen Schlüssels an das Fahrzeug gesendet. Der Befehl **//tesla-control add-key-request//** erfordert dabei die Angabe der VIN, des öffentlichen Schlüssels, der Rolle (entweder **//owner//** oder **//driver//**) und eines Form-Faktors (entweder %%//**nfc_card**, **ios_device**, **android_device** //oder// **cloud_key//**)%%. Nachfolgend ist ein Beispiel angegeben.+Im ersten Schritt wird der Befehl zum Installieren des öffentlichen Schlüssels an das Fahrzeug gesendet. Dieser Schritt ist mittlerweile ebenfalls in der GUI implementiert und kann über das blaue Auto-Symbol im Menü 'Settings' ausgewählt werden. 
 + 
 +Der Befehl **//tesla-control add-key-request//** erfordert dabei die Angabe der VIN, des öffentlichen Schlüssels, der Rolle (entweder **//owner//** oder **//driver//**) und eines Form-Faktors (entweder %%'**//nfc_card//**''**//ios_device//**''**//android_device//**' oder '**//cloud_key//**')%%. Nachfolgend ist ein Beispiel angegeben.
  
 <code bash> <code bash>
Zeile 350: Zeile 407:
 Nur wenn die Ausgabe //''Sent add-key request to LRW31234567890123. Confirm by tapping NFC card on center console.''// nach einigen Sekunden angezeigt wird, war der Befehl erfolgreich. Eine Meldung wird auf dem Bildschirm im Fahrzeug zunächst **nicht** angezeigt. Nur wenn die Ausgabe //''Sent add-key request to LRW31234567890123. Confirm by tapping NFC card on center console.''// nach einigen Sekunden angezeigt wird, war der Befehl erfolgreich. Eine Meldung wird auf dem Bildschirm im Fahrzeug zunächst **nicht** angezeigt.
  
-Man muss beim Absenden des Befehls nicht im Fahrzeug sein. Wichtig ist aber, dass sich das Fahrzeug nicht im Schlafmodus befindet.+Man muss beim Absenden des Befehls nicht im Fahrzeug sein. Bei einigen Modellen kann es erforderlich sein, dass sich das Fahrzeug nicht im Schlafmodus befindet.
  
 === Autorisierung des neuen Schlüssels === === Autorisierung des neuen Schlüssels ===
  
-Der neue Schlüssel wird autorisiert, indem eine der beiden schwarzen NFC Karten, die mit dem Fahrzeug ausgeliefert wurden, auf die Mittelkonsole zwischen Getränkehalter und Armlehne gelegt wird. Dieser Schritt muss innerhalb von 30 Sekunden nach dem o.a. Befehl erfolgen! Erst danach wird eine Meldung angezeigt, die innerhalb von 10 Sekunden bestätigt werden muss.+Der neue Schlüssel wird autorisiert, indem eine der beiden schwarzen NFC Karten, die mit dem Fahrzeug ausgeliefert wurden, auf die Mittelkonsole zwischen Getränkehalter und Armlehne gelegt wird. Dieser Schritt muss **innerhalb von 30 Sekunden** nach dem o.a. Befehl erfolgen! Erst danach wird eine Meldung angezeigt, die innerhalb von 10 Sekunden bestätigt werden muss.
  
 {{:plugins:teslacmd:img_1142.jpeg?800}} {{:plugins:teslacmd:img_1142.jpeg?800}}
  
-Der Text der Meldung "//Handyschlüssel//-Koppelung" ist zumindest in deutsch nicht korrekt, aber wahrscheinlich hat Tesla sich nicht die Mühe gemacht, eine eigene Meldung für API Schlüssel zu erstellen.+Der Text der Meldung "//**Handy**schlüssel//-Koppelung" ist nicht ganz korrekt, aber wahrscheinlich hat Tesla sich nicht die Mühe gemacht, eine eigene Meldung für API Schlüssel zu erstellen.
  
 {{:plugins:teslacmd:img_1143.jpeg?500}} {{:plugins:teslacmd:img_1143.jpeg?500}}
  
-Nach der Bestätigung wird der neue Schlüssel in der Liste der autorisierten Schlüssel angezeigt. Das entsprechende Menü heisst **//Verriegelungen//** und ist durch ein Schloss aus Symbol gekennzeichnet. Falls der Schlüssel nicht sichtbar ist, kann man auch nach unten scrollen, was grafisch nicht angezeigt wird.+Nach der Bestätigung wird der neue Schlüssel in der Liste der autorisierten Schlüssel angezeigt. Das entsprechende Menü heisst **//Verriegelungen//** und ist durch ein Schloss aus Symbol gekennzeichnet. Falls der Schlüssel nicht sichtbar ist, kann man auch nach unten scrollen, was grafisch nicht angezeigt durch einen Balken wird.
  
 {{:plugins:teslacmd:img_1145.jpeg?800}} {{:plugins:teslacmd:img_1145.jpeg?800}}
Zeile 439: Zeile 496:
 Mögliche weiter Entwicklungsschritte:  Mögliche weiter Entwicklungsschritte: 
  
-  * Erstellen des Schlüsselpaares über das Plugin +  * Bisher keine Feature Requests gestellt.
-  * Automatische XML Erstellung für Loxone+
  
 ===== Fragen stellen und Fehler melden ===== ===== Fragen stellen und Fehler melden =====
Zeile 451: Zeile 507:
 pluginuebersicht.logo : :plugins:teslacmd:icon_512.png pluginuebersicht.logo : :plugins:teslacmd:icon_512.png
 pluginuebersicht.status : BETA pluginuebersicht.status : BETA
-pluginuebersicht.version : 0.2.4+pluginuebersicht.version : 0.7.2
 pluginuebersicht.min_lb_version : 2.0 pluginuebersicht.min_lb_version : 2.0
 pluginuebersicht.url_release :  pluginuebersicht.url_release : 
-pluginuebersicht.url_prerelease : https://github.com/Jan21493/LoxBerry-Plugin-TeslaCmd/archive/refs/tags/0.2.4.zip+pluginuebersicht.url_prerelease : https://github.com/Jan21493/LoxBerry-Plugin-TeslaCmd/archive/refs/tags/0.7.2.zip
 pluginuebersicht.description : Plugin für das von Tesla in 2024 veröffentlichte Tesla Vehicle Command SDK. Über das Plugin können Informationen zu den verwendeten Tesla Produkten abgerufen oder Befehle an die Tesla Produkte gesendet werden. Nachfolger des TeslaConnect Plugins. pluginuebersicht.description : Plugin für das von Tesla in 2024 veröffentlichte Tesla Vehicle Command SDK. Über das Plugin können Informationen zu den verwendeten Tesla Produkten abgerufen oder Befehle an die Tesla Produkte gesendet werden. Nachfolger des TeslaConnect Plugins.
 pluginuebersicht.languages : EN pluginuebersicht.languages : EN