Bonjour,
Voici une procédure pour configurer le service tesla_ble_mqtt_docker, permettant d’envoyer des commandes à votre Tesla depuis Home Assistant (HA), sans passer par l’API cloud de Tesla.
Introduction
En cas de problème, commencez par consulter les repos en lien et prenez connaissance de la section Support technique
À qui s’adresse cette procédure ?
Cette procédure est destinée à ceux qui souhaitent :
- Envoyer plus de 50 commandes par jour à leur véhicule.
- Éviter l’installation du proxy.
- Contrôler le véhicule sans connexion internet lorsqu’il est garé chez eux.
Matériel nécessaire
- Un SBC de type Raspberry Pi capable de faire tourner Linux, avec antenne Bluetooth. J’utilise un Raspberry Pi 4 Model B (c’est peut-être surdimensionné mais c’est ce que j’avais sous la main).
- Carte Micro SD + adaptateur SD + câbles requis pour l’installation de l’OS (non détaillée dans cette procédure).
Limitations actuelles
La méthode et l’outil vienne tout juste d’être mis en ligne. De potentielles évolution et améliorations sont déjà en train d’être discutées. A ce stade, prendre en considération les points suivants:
-
Impossible de régler le courant de charge en dessous de 5A. On en discute par ici.
Résolu -
Fonctionnalités limitées à l’envoi de commandes (quaisment toutes sont implémentées). Impossible d’obtenir des informations sur l’état du véhicule. (utiliser l’intégration ou teslamate pour se faire).
Procédure d’installation
Dans ce qui suit, « RPi » désigne l’appareil sur lequel le service sera exécuté. Cette procédure est adaptée de la documentation présente sur le repo, que je vous conseille fortement de lire.
Prérequis
Sur le RPi
- Une distribution Linux (DietPi pour mon cas). Pensez à activer le Bluetooth dans les paramètres !
- Docker
- Docker-compose
- Optionnel : Portainer, utile pour voir les logs et autres détails.
Dans Home Assistant
Déployer le conteneur
- Se connecter au RPi, par SSH par exemple.
- Créer un dossier tesla_ble_mqtt_docker dans votre répertoire utilisateur et vous y rendre :
cd ~
mkdir tesla_ble_mqtt_docker
cd tesla_ble_mqtt_docker
- Ajouter deux fichiers
docker-compose.yml
etstack.env
. Pour plus de faciliter, récupérer ceux du repo :
curl -O https://raw.githubusercontent.com/tesla-local-control/tesla_ble_mqtt_docker/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/tesla-local-control/tesla_ble_mqtt_docker/main/stack.env
Le docker-compose.yml
devrait fonctionner en l’état. Éditez le fichier stack.env
avec vos paramètres : a minima, le VIN de votre véhicules et vos identifiants mqtt.
Example de contenu pour stack.env
# Mandatory; if multiple VINs separate with |
#
VIN_LIST=XXX|XXX
# Mandatory; Hostname or IP address
#
MQTT_SERVER=192.168.1.X
# Service port # or name
#
MQTT_PORT=1883
# If no username provided, anonymous mode.
#
MQTT_USERNAME=XXX
# If you have special characters, wrap with ' at both ends; escape ' if needed
#
MQTT_PASSWORD=XXX
# Default 5 (seconds)
#
BLE_CMD_RETRY_DELAY=5
# Default 120 (seconds)
#
PRESENCE_DETECTION_LOOP_DELAY=120
# Default 240 (seconds)
#
PRESENCE_DETECTION_TTL=240
# Your timezone
# Ref: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
#
TZ='Europe/Paris'
### Default false
#
TEMPERATURE_UNIT_FAHRENHEIT=false
### Default 48
#
MAX_CURRENT=32
### Default false
#
DEBUG=false
#
# WARNING; If you run Home Assistant, keep this true unless you know what you're doing
#
ENABLE_HA_FEATURES=true
- Créer le volume Docker :
docker volume create tesla_ble_mqtt_model
- Démarrer le conteneur :
docker-compose up -d
- Vérifier les logs dans Portainer (ou autre). Ils devraient ressembler à ceci :
Configuration Options are:
BLE_CMD_RETRY_DELAY=5
DEBUG=false
MQTT_SERVER=192.168.1.X
MQTT_PORT=1883
MQTT_PASSWORD=Not Shown
MQTT_USERNAME=XXXXXX
PRESENCE_DETECTION_LOOP_DELAY=120
PRESENCE_DETECTION_TTL=240
TEMPERATURE_UNIT_FAHRENHEIT=false
VIN_LIST=LRWXXXXXXXXXXXXXX
MAX_CURRENT=32
ENABLE_HA_FEATURES=true
Removing single buttons to be replaced by switches & covers:
windows, charger, cherge-port, climate, trunk
delete_legacies_singles; deleting legacy single MQTT entities topics Setting up MQTT clients with authentication
setupHADiscoveryAllVINsMain; Discarding any unread MQTT messages for topic:tesla_ble/LRW3F7FS5RC036403/config
Listening for Home Assistant Start (in background)
Entering main loop...
main loop; Lauching background listen_to_mqtt_loop...
main loop; launch BLE scanning for car presence every 120 seconds
Entering Listen to MQTT loop...
Launching listen_to_mqtt
Listening to MQTT
Activer la clé via Home Assistant
-
Accéder à la page des intégrations dans Home Assistant et cliquer sur la case MQTT :
-
Un nouvel appareil devrait apparaître dans la liste :
-
Accéder à la liste des entités liées à l’appareil en cliquant dessus :
-
Dans la section
Configuration
, cliquer surGenerate Keys
. Optionnellement, vérifier les logs dans Portainer.
Ajouter la clé au véhicule
Le RPi doit être à proximité du véhicule. Pour ma part, environ 5m.
- Se munir d’une carte-clé du véhicule.
- S’installer à la place du conducteur avec son téléphone ouvert sur la page Home Assistant de l’appareil MQTT. L’écran du véhicule doit être actif.
- Appuyer sur
Deploy Key
depuis l’interface HA sur votre téléphone.
- Immédiatement, positionner la carte-clé sur la console centrale comme pour démarrer le véhicule. Un message de confirmation demandera de valider l’ajout de la clé.
- Renommer la clé
Unknown Key
nouvellement ajoutée avec un nom identifiable, commeClé BLE
.
Note : La procédure devra parfois être répétée plusieurs fois avant de fonctionner.
Tester l’envoi de commandes avec la clé BLE
- Depuis l’interface Home Assistant, tester les différentes commandes disponibles.
Support technique
Demander de l’aide
Trouver la procédure compliquée, c’est normal. Demander de l’aide c’est bien. Inclure les bonnes informations c’est mieux.
Pour toute demande d’aide, voici le minimum (recommandé) à inclure :
- Description du problème.
- Contenu du docker-compose.yml
- Logs du conteneur.
Au niveau du format, faire usage de la balise details
qui évitera de surcharger les discussions
[details="Configuration et logs"]
## Docker-compose.yml
```yaml
Contenu du docker-compose.yml
```
## Logs
```bash
Copie du log.
```
[/details]
Ce qui renvoie :
Demander de l’aide
Vérifier le contenu des messages MQTT
Pour vérifier le contenu des messages MQTT envoyés, installer le module MQTT explorer. Il vous sera ainsi possible de visualiser le via l’interface graphique du module la nature et le contenu de tous les messages captés par le broker.
Utile pour déterminer si la nature des messages liées aux commandes BLE.
Repartir de zéro pour la version standalone
- Arreter le conteneur :
docker stop nom_du_conteneur
- Nettoyer docker :
docker system prune
docker volume prune
- Relire et valider le contenu de
docker-compose.yml
. - Créér de nouveau le conteneur :
docker compose pull && docker compose up -d
.