Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
plugins:teslacmd:start [2024/12/27 14:28] – Jan Wachsmuth | plugins: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, | ||
+ | |||
+ | Version 0.5.1: | ||
+ | |||
+ | * Minor corrections in function to send keys to car | ||
+ | * Added verification if public key was properly installed in car | ||
+ | * Added/ | ||
Version 0.5.0: | Version 0.5.0: | ||
Zeile 8: | Zeile 36: | ||
* Create and delete a key pair via GUI for each vehicle with explanations | * Create and delete a key pair via GUI for each vehicle with explanations | ||
* Send public key to car via GUI 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 | * 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. | * **NOTE**: since this version, special builds of Tesla utlities that produce JSON output are required! See below for more information. | ||
+ | * Updated binary for tool ' | ||
+ | * Added binary for new tool ' | ||
Version 0.2.4: | Version 0.2.4: | ||
Zeile 21: | 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 ' | + | You are able to retrieve detailed status information from the vehicle via BLE. The tool '**tesla-contol**' has a new command 'state < |
The TeslaCmd plugin supports all new commands and options for ' | The TeslaCmd plugin supports all new commands and options for ' | ||
Zeile 88: | Zeile 119: | ||
Alle Befehle zur Steuerung des Fahrzeugs, z.B. Das Ändern der Klimatisierung, | Alle Befehle zur Steuerung des Fahrzeugs, z.B. Das Ändern der Klimatisierung, | ||
- | Das Plugin unterstützt ebenfalls die alten Befehle der (inoffiziellen) Owner' | + | Das Plugin unterstützt ebenfalls die alten Befehle der (inoffiziellen) Owner' |
Alle Daten (Statusinformationen) werden vom Fahrzeug über MQTT zurück an den Loxone Miniserver übertragen. Die Subskription dafür lautet '' | Alle Daten (Statusinformationen) werden vom Fahrzeug über MQTT zurück an den Loxone Miniserver übertragen. Die Subskription dafür lautet '' | ||
Zeile 199: | Zeile 230: | ||
| **software_update_cancel** | | **software_update_cancel** | ||
| **guest_mode_off** | | **guest_mode_off** | ||
- | | **guest_mode_on** | + | | **guest_mode_on** |
| **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** | %%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.%% | | | **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 |
^ Befehl ^ Beschreibung ^ | ^ Befehl ^ Beschreibung ^ | ||
Zeile 212: | 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/ | ||
+ | | %%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 219: | Zeile 263: | ||
===== Golang Bluetooth Library ===== | ===== Golang Bluetooth Library ===== | ||
- | Leider wird die Golang Bluetooth Library **// | + | Leider wird die Golang Bluetooth Library **// |
- | 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:// | + | 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:// |
===== Installation ===== | ===== Installation ===== | ||
Zeile 230: | Zeile 274: | ||
- Installation des [[plugins: | - Installation des [[plugins: | ||
- 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, | + | - Erstellung eines privaten und öffentlichen Schlüssels bzw. Schlüsselpaares, |
==== 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) | + | 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, |
+ | |||
+ | Für alle anderen Betriebssysteme und CPUs ist dieser Schritt erforderlich. Die Installation der Tools ist in der [[https:// | ||
+ | |||
+ | **WICHTIG**: | ||
=== Installation von Golang === | === Installation von Golang === | ||
Zeile 260: | Zeile 308: | ||
Die Installation des **//Tesla Vehicle Command SDK//** kann über **//Git//** erfolgen. Alternativ kann das SDK auch im **// | Die Installation des **//Tesla Vehicle Command SDK//** kann über **//Git//** erfolgen. Alternativ kann das SDK auch im **// | ||
- | Anschließend werden die Tools in das Verzeichnis **///usr/local/bin//** kopiert, welches | + | Eine modifizierte Version der Golang Bluetooth Library von Rigado ist [[https://github.com/Jan21493/ble|hier]] zu finden. Eine [[https://github.com/ |
<code bash> | <code bash> | ||
Zeile 268: | Zeile 316: | ||
# exit | # exit | ||
cd ~ | cd ~ | ||
- | git clone https:// | + | # git clone https:// |
+ | git clone https:// | ||
+ | # git clone https:// | ||
+ | git clone --single-branch --branch local-enhancements https:// | ||
cd vehicle-command/ | cd vehicle-command/ | ||
# if not set yet: export PATH=$PATH:/ | # if not set yet: export PATH=$PATH:/ | ||
go get ./... | go get ./... | ||
+ | |||
+ | # set environment variables that are used for version information | ||
+ | HWINFO=$(cat / | ||
+ | HWARCH=$(uname -m) | ||
+ | VCVERSION=$(git rev-parse --short HEAD) | ||
+ | TODAY=$(date "+%a, %d %b %Y %T") | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo "Date: " | ||
# build tesla-control utility - may take a while | # build tesla-control utility - may take a while | ||
cd cmd/ | cd cmd/ | ||
- | go build ./... | + | go build -ldflags "-X ' |
+ | |||
+ | # build tesla-scan utility - may take a while | ||
+ | cd ../ | ||
+ | go build -ldflags "-X ' | ||
# build tesla-keygen utility - may take a while | # build tesla-keygen utility - may take a while | ||
Zeile 281: | Zeile 346: | ||
go build ./... | go build ./... | ||
cd .. | cd .. | ||
- | # als Superuser ausführen | ||
- | su | ||
- | mv ./ | ||
- | mv ./ | ||
</ | </ | ||
- | Der Zugriff auf Bluetooth erfordert unter Linux ein entsprechendes Recht, welches man dem Tool tesla-control explizit geben muss, damit es von einem ' | + | Anschließend werden die Tools in das Verzeichnis **/// |
<code bash> | <code bash> | ||
# als Superuser ausführen | # als Superuser ausführen | ||
+ | su | ||
+ | cd / | ||
+ | mv ./ | ||
setcap ' | setcap ' | ||
+ | mv ./ | ||
+ | mv ./ | ||
+ | setcap ' | ||
exit | exit | ||
</ | </ | ||
- | Als Ergebnis der oben dargestellen Schritte sind jetzt zwei Tools aus dem Tesla Vehicle Command SDK auf dem Loxberry installiert, | + | Als Ergebnis der oben dargestellen Schritte sind jetzt die Tools aus dem Tesla Vehicle Command SDK auf dem Loxberry installiert, |
<code bash> | <code bash> | ||
tesla-control -h | tesla-control -h | ||
tesla-keygen -h | tesla-keygen -h | ||
- | </ | + | tesla-scan -h |
- | + | ||
- | === Modifikation des SDKs === | + | |
- | + | ||
- | Eine modifizierte Version der Golang Bluetooth Library von Rigado ist [[https:// | + | |
- | + | ||
- | <code -> | + | |
- | export PATH=$PATH:/ | + | |
- | cd vehicle-command/ | + | |
- | go get ./... | + | |
- | cd cmd/tesla-control | + | |
- | HWINFO=$(cat / | + | |
- | HWARCH=$(uname -m) | + | |
- | VCVERSION=$(git rev-parse --short HEAD) | + | |
- | TODAY=$(date "+%a, %d %b %Y %T") | + | |
- | echo " | + | |
- | echo " | + | |
- | echo " | + | |
- | echo "Date: " | + | |
- | go build -ldflags "-X ' | + | |
- | + | ||
- | # use root user for the following two commands | + | |
- | su | + | |
- | mv ./ | + | |
- | setcap ' | + | |
</ | </ | ||
Zeile 333: | 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 ' | 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 ' | ||
- | Derzeit muss das Schlüsselpaar | + | Mittlerweile kann das Schlüsselpaar |
+ | |||
+ | Um manuell ein Schlüsselpaar zu erstellen, ersetzt man die VIN durch die VIN des eigenen Fahrzeugs | ||
<code bash> | <code bash> | ||
Zeile 340: | Zeile 385: | ||
</ | </ | ||
- | Die Schlüssel, die mit Hilfe des Tools **// | + | Der gleiche o.a. Befehl mit ' |
+ | |||
+ | Die Schlüssel, die mit Hilfe des Tools **// | ||
==== 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, | 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, | ||
- | |||
- | **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 **// | + | Im ersten Schritt wird der Befehl zum Installieren des öffentlichen Schlüssels an das Fahrzeug gesendet. |
+ | |||
+ | Der Befehl **// | ||
<code bash> | <code bash> | ||
Zeile 360: | Zeile 407: | ||
Nur wenn die Ausgabe //'' | Nur wenn die Ausgabe //'' | ||
- | 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, | + | Der neue Schlüssel wird autorisiert, |
{{: | {{: | ||
- | Der Text der Meldung "//Handyschlüssel// | + | Der Text der Meldung "//**Handy**schlüssel// |
{{: | {{: | ||
- | Nach der Bestätigung wird der neue Schlüssel in der Liste der autorisierten Schlüssel angezeigt. Das entsprechende Menü heisst **// | + | Nach der Bestätigung wird der neue Schlüssel in der Liste der autorisierten Schlüssel angezeigt. Das entsprechende Menü heisst **// |
{{: | {{: | ||
Zeile 449: | 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 461: | Zeile 507: | ||
pluginuebersicht.logo : : | pluginuebersicht.logo : : | ||
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:// | + | pluginuebersicht.url_prerelease : https:// |
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 |