Configuration de l'addon Tesla Http Proxy

Bonjour,

Voici une procédure détaillée pour la configuration de l’addon Tesla Http Proxy. Cet addon est nécessaire pour continuer d’utiliser l’intégration Tesla après les changements d’API qui ont eu lieu en 2024.

:warning: Actuellement, et même avec le proxy, Tesla limite le nombre de commandes pouvant être envoyées au véhicule à 50 par jour. Orientez vous vers une solution alternative si vous avez besoin d’en envoyer d’avantage. Le nombre de requêtes pour obtenir les données du véhicule n’est en revanche pas limité.

Résumé des étapes

Pour ceux qui démarrent de zéro

  1. Créer un domaine DuckDNS.
  2. Installer l’addon DuckDNS.
  3. Installer l’addon NGINX Home Assistant SSL proxy.
  4. Installer l’addon tesla_http_proxy.
  5. Rediriger le port 443 sur son routeur.
  6. Démarrage des addons.
  7. Créer un compte développeur Tesla.
  8. Configuration de tesla_http_proxy.
  9. Configuration des véhicules.
  10. Configuration de l’intégration.

Pour ceux qui utilisent NGINX Home Assistant SSL proxy.

  1. Modifier les paramètres NGINX Home Assistant SSL proxy.
  2. Installer l’addon tesla_http_proxy.
  3. Rediriger le port 443 sur son routeur.
  4. Démarrage des addons.
  5. Créer un compte développeur Tesla.
  6. Configuration de tesla_http_proxy.
  7. Configuration des véhicules.
  8. Configuration de l’intégration.

Pour ceux qui utilisent NGINX Proxy Manager.

  1. Modifier les paramètres NGINX Proxy Manager.
  2. Installer l’addon tesla_http_proxy.
  3. Rediriger le port 443 sur son routeur.
  4. Démarrage des addons.
  5. Créer un compte développeur Tesla.
  6. Configuration de tesla_http_proxy.
  7. Configuration des véhicules.
  8. Configuration de l’intégration.

Créer un domaine DuckDNS

  1. Se rendre sur le site duckdns.org.
  2. Se connecter à l’aide de l’un des services proposés.
  3. Créer un nom de domaine via l’interface. Dans la suite, le nom de domaine sera tesla.duckdns.org.
  4. Vérifier que l’IP assignée est bien la votre, mettre à jour manuellement sinon.
  5. Copier le nom de domaine et le token sur cette page.

Installer l’addon DuckDNS

La documentation complète se trouve ici. En résumé :

  1. Depuis l’interface home assistant, aller dans Réglages → Modules complémentaires → Boutique des modules complémentaires.
  2. Rechercher le module DuckDNS et cliquer dessus.
  3. Cliquer sur installer.
  4. Configuration de l’addon :
domains:
  - tesla.duckdns.org
token: <votre_token>
aliases: []
lets_encrypt:
accept_terms: true
algo: secp384r1
certfile: fullchain.pem
keyfile: privkey.pem
seconds: 300

Installer l’addon NGINX Home Assistant SSL proxy

La documentation complète se trouve ici. En résumé :

  1. Installer l’addon NGINX Home Assistant SSL proxy en procédant de la même manière que pour DuckDNS.
  2. Ajouter le bloc suivant au fichier configuration.yaml de home assistant (dans le dossier /config) :
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
  1. Configuration de l’addon
# Laissez core-nginx-proxy en valeur par défaut sauf si vous prévoyez de faire usage de NGINX pour accéder à HA.
domain: core-nginx-proxy
hsts: max-age=31536000; includeSubDomains
certfile: fullchain.pem
keyfile: privkey.pem
cloudflare: false
customize:
  active: true # ⚠ Attention à bien le laisser sur TRUE
  default: nginx_proxy_default*.conf
  servers: nginx_proxy/nginx_*.conf

Modifier les paramètres NGINX Home Assistant SSL proxy

Seulement pour ceux qui utilisent déjà NGINX Home Assistant SSL proxy.

# Votre domaine principal.
domain: "*.votreDomaine.fr"
hsts: max-age=31536000; includeSubDomains
certfile: fullchain.pem
keyfile: privkey.pem
cloudflare: false
customize:
  active: true # ⚠ Attention à bien le laisser sur TRUE
  default: nginx_proxy_default*.conf
  servers: nginx_proxy/*.conf

Modifier les paramètres NGINX Proxy Manager

Seulement pour ceux qui utilisent déjà NGINX Proxy Manager

Configuration de l’addon :
image

Dans l’onglet advanced (adapter avec votre IP HA):

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
set $target 192.168.0.199;
# temporary Flask app for initial auth
location /callback {
    proxy_pass http://$target:8099;
}
# static public key for Tesla
location = /.well-known/appspecific/com.tesla.3p.public-key.pem {
proxy_pass http://192.168.0.199:8123/local/tesla/com.tesla.3p.public-key.pem;
}
location = /favicon.ico {
    log_not_found off;
}
location = /robots.txt {
    log_not_found off;
}

Installer l’addon tesla_http_proxy

La documentation complète se trouve ici. En résumé :

  1. Ajouter le repo github au magasin des modules complémentaires :
    • Naviguer jusqu’au magasin des modules complémentaires.
    • Cliquer sur les trois points en haut à droite puis sur dépots.
    • Dans la fenêtre Gérer les référentiels de modules complémentaires ajouter l’url du repo github : https://github.com/llamafilm/tesla-http-proxy-addon
  2. Installer l’addon de la même manière que les deux autres.
  3. Configuration initiale :
client_id: ""
client_secret: ""
domain: tesla.duckdns.org
debug: true
regenerate_auth: false
region: Europe, Middle East, Africa

Rediriger le port 443 du routeur

Depuis l’interface de votre routeur, rediriger le trafic sur le port 443 vers votre instance HA ** sur le port 443 également** (IP du client ou de la VM qui fait tourner). La méthode sera différente pour chacun car elle dépend de l’interface de votre appareil.

Exemple : avec 192.168.1.2 qui fait tourner HA (accessible via le port 8123, rediriger le traffic WAN du port 443 vers 192.168.1.2:443.

Démarrage des addons

  1. Lancer DuckDNS. Attendre quelques instants.

  2. Puis lancer Nginx. Attendre quelques instants.

  3. Lancer le proxy http. Attendre quelques instants.

    • L’addon va planter, avec une erreur du type : FATAL: Fix public key before proceeding. C’est normal à ce stade ne cherchez pas à résoudre ce (non) problème.
    • Si vous utilisez NGINX Proxy Manager, copiez les fichier share/tesla/*.pem dans homeassistant/www/tesla/
  4. Redémarrer Nginx.

A ce stade, vérifier que votre clé publique est accessible a l’addresse https://tesla.duckdns.org/.well-known/appspecific/com.tesla.3p.public-key.pem.

Ne cherchez pas à aller plus loin si vous n’arrivez pas à accéder à la clé à ce stade.

Créer un compte développeur Tesla pour obtenir le client ID et client secret.

Se rendre sur le site developer.tesla.com. Pour ceux qui seraient inquiet à l’idée de créer un compte la dessus, ca à l’air plutôt ok d’après ce qu’on peut lire sur le github officiel.

Dans la suite de cette section, faire varier les paramètres désignés par un symbole * en cas d’erreur « Unable to Onboard » lors de l’envoi du formulaire.

Remplir le formulaire avecs les paramètres suivants :

  1. Business Details

    • Business Name : Personal Use *
    • Country/Regions : France
    • TAX ID : FR00000000000 *
    • Address Line 1 : My Home
    • City : My City
    • Zip Code : 00000
  2. Application Access Request

  3. Application Access Request

  4. Application Access Request
    Cocher les cases :

    • Profile Information
    • Vehicle Information
    • Vehicle Commands
    • Vehice Charging Management

A ce stade votre demande sera soumise à Tesla. pour ma part, elle a été immédiatement validée. Vous arrivez alors sur le dashboard developpeur, et pouvez accéder à votre application :
image

Copier le Client ID et Client Secret :

Configuration de tesla_http_proxy.

De retour dans HA, sur la page de configuration du proxy, renseigner le client ID et le client secret.

Redémarrer l’addon. A ce stade, vous devriez pouvoir accéder à l’UI :

Par la suite :

  1. Cliquez sur « Login to Tesla account ».
  2. Authentifiez-vous avec vos informations d’identification.
  3. Vous serez redirigé vers une URL qui générera une erreur 404.
  4. Copiez l’URL.et coller dans le champ prévu à cet effet dans l’interface de l’addon (en dessous de Login to Tesla account).
  5. Cliquez sur « Generate token from URL ».
  6. Le jeton de rafraîchissement sera affiché. Prenez soin de le copier.

Configuration des véhicules

Étapes à répéter sur chaque véhicules :

  1. S’installer dans le véhicule muni de son téléphone.
  2. Ouvrir l’application home assistant et se rendre sur l’interface de l’addon du proxy.
  3. Appuyer sur Enroll public key in your vehicle

    Note: je n’ai pas réussi à prendre de screenshots pour la suite
  4. Une confirmation vous sera demandée, pour autoriser l’accès à votre véhicule. Octroyez l’accès après avoir controlé le nom de domaine.
  5. Si tout se passe bien, après quelques instants, un message de validation sera affiché et vous devriez apercevoir une nouvelle clé dans la liste de celle autorisées pour votre voiture. La mention clé de la flotte devrait être présente (navré pour la photo de qualité inférieure):
    image

Configuration de l’intégration

Important : Supprimer toute configuration de l’intégration Tesla si utilisée avant la mise en place du proxy.

  1. Depuis la page Intégrations de home assistant, ajouter l’intégration Tesla. Cocher sur la première fenêtre Use Fleet API Proxy
    image

  2. Renseigner vos identifiants et token, les autres champs devraient être pré-remplis :

  3. À ce stade les véhicules devraient être disponibles dans HA.

Erreurs courantes, et solutions

Unable to Onboard lors de la création de l'application sur le site Tesla

Symptôme : Échec de la création de l’application avec le message d’erreur Unable to Onboard.

Solution :

  • Modifier les informations du formulaire. En particulier :
    • TAX ID dans l’onglet Business Details.
    • Application Name dans l’onglet Application Access Request.
Partage du véhicule impossible, ce tiers n’est pas enregistré auprès de Tesla lors de l'ajout de la clé dans le véhicule

Symptôme : Un message d’erreur apparait sur le téléphone au moment de l’ajout de la clé générée avec le proxy : Partage du véhicule impossible, ce tiers n’est pas enregistré auprès de Tesla.

Solution :

  1. Cocher la case regen auth dans l’addon Tesla HTTP Proxy.
  2. Redémarrer l’addon

Hello !

@Vladvonvidden est-ce que tu sais si je peux remplacer l’addon « NGINX Home Assistant SSL proxy » par celui-ci ?

Pas sur de saisir, remplacer par quel addon ? Il me manque peut ëtre un screen ou un lien chez moi, voici ce qui s’affiche :

Bonjour
Je ne comprend pas car NGINX Home Assistant SSL proxy et Tesla HTTP Proxy se retrouve sur le Port 433
Ne manque-t-Il pas une configuration ?

J’ai changé le port de Http Proxy et cela fonctionné
Par contre quand je fais sur le mobile « Enroll public key in your vehicule »
J’ai bien l’application qui se lance mais cela marque :
Partage du véhicule impossible
Ce tiers n’est pas enregistré auprés de Tesla

Je ne pense pas qu’en changeant le port pour le proxy cela puisse fonctionner.

@juju159 semble avoir une config avec NGINX + le proxy qui fonctionne : serait-il possible de détailler la question des ports ?

Ah oui il manque un truc dans mon message ^^

je recommence.

j’ai plusieurs services qui tournent chez moi. Chacun a un domaine ou un sous domaine, et un SSL.
Actuellement, c’est géré via l’addon « NGINX Proxy Manager ».

Donc, je ne peux pas utiliser l’addon " NGINX Home Assistant SSL proxy" comme indiqué dans ce tuto, vu que mon « NGINX Proxy Manager » est déjà sur les ports 80 et 443.

Apparemment c’est possible, bien que je n’ai pas moi même vérifié cela.

Si vous parvenez à configurer le proxy avec cet addon, pourriez vous reporter votre config complète afin de compléter la procédure ?

Ah merci @Vladvonvidden !
Avec ton lien j’ai pu avoir le fichier com.tesla.3p.public-key.pem dispo au téléchargement.

Voici les logs de l’addon tesla http proxy:

[06:34:49] INFO: Found existing keypair
[06:34:49] INFO: Testing public key...
HTTP/2 200 
server: nginx
date: Thu, 13 Jun 2024 04:34:49 GMT
content-type: application/x-x509-ca-cert
content-length: 178
cache-control: public, max-age=2678400
referrer-policy: no-referrer
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
etag: "17d8760b48aa6564-b2"
last-modified: Thu, 13 Jun 2024 04:30:49 GMT
accept-ranges: bytes

-----BEGIN PUBLIC KEY-----
MFkwEwYH [...] XXVNqCQ==
-----END PUBLIC KEY-----
[06:34:50] NOTICE: Request application access with Tesla, then fill in credentials and restart addon.
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service webui: stopping
s6-rc: info: service webui successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Maintenant … je suis en « Unable to Onboard » quand j’essaie de créer le compte développeur …

(je mettrai des screenshots de ma config une fois que ça sera pleinement fonctionnel !)

« Unable to onboard » : essayez de faire varier les infos du formulaire de création d’application chez Tesla : Tax ID, nom et tout ce qui n’impacte pas la partie technique.

Bien vu ! J’ai un peu tout changé, et maintenant c’est ok.
J’ai avancé dans la suite de la procédure, mais au moment de faire la manip dans la voiture … j’ai un message dans l’app tesla du téléphone « Partage du véhicule impossible, ce tiers n’est pas enregistré auprès de Tesla ».

Mais il y a un truc qui me chiffonne :

Par la suite :

Cliquez sur « Login to Tesla account ».
Authentifiez-vous avec vos informations d’identification.
Vous serez redirigé vers une URL qui générera une erreur 404.
Copiez l’URL.et coller dans le champ prévu à cet effet dans l’interface de l’addon (en dessous de Login to Tesla account).
Cliquez sur « Generate token from URL ».
Le jeton de rafraîchissement sera affiché. Prenez soin de le copier.

Je n’ai pas obtenu une 404, mais une 502 bad gateway … mais l’url que j’ai copiée dans l’addon m’a bien généré un Token …

Je vais modifier la partie de la procédure au sujet des infos à envoyer à Tesla, car j’ai l’impression qu’ils n’aiment pas recevoir 50 demandes avec le même nom et tax ID.

j’ai un message dans l’app tesla du téléphone « Partage du véhicule impossible, ce tiers n’est pas enregistré auprès de Tesla ».

Ce problème à déjà été rencontré. On en parle ici. Et également ici.

Après lecture des posts, essayer dans un premier temps la solution « turn on the regenerate auth setting and restart the addon » et sinon « delete the Tesla custom integration again and restart the whole process ». Confirmer ce qui est efficace pour que j’annote. Je pense que je vais finir par une FAQ des erreurs les plus communes.

Banco :slight_smile:

J’ai coché la case « regen auth » dans l’addon Tesla HTTP Proxy, ça a redémarré l’addon, et j’ai pu ajouter la clef dans le véhicule :slight_smile:

Pour la partie NGINX Proxy Manager, voici ma config :

et dans l’onglet « Advanced » :

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
set $target 192.168.0.199;
# temporary Flask app for initial auth
location /callback {
    proxy_pass http://$target:8099;
}
# static public key for Tesla
location = /.well-known/appspecific/com.tesla.3p.public-key.pem {
proxy_pass http://192.168.0.199:8123/local/tesla/com.tesla.3p.public-key.pem;
}
location = /favicon.ico {
    log_not_found off;
}
location = /robots.txt {
    log_not_found off;
}

(192.168.0.199 étant ma machine home assistant)

J’ai du coper les fichier share/tesla/*.pem dans homeassistant/www/tesla/

Génial, plus qu’a profiter de la limite extraordinaire de 50 commandes par jour désormais ^^ ! J’annote la procédure.

50 commandes par jour ???
j’en fais … 50 par heure !

Optimisation solaire ? C’est fini ca mon bon monsieur. Tesla a imposé une limite de 50 commandes par jour, il n’y a rien à faire pour l’instant … enfin si un peu quand même.

Oui, c’est exactement ça, optimisation solaire …
Merci pour le lien, je vais passer par du BLE alors :wink: