L'intégration Tesla et automatisation!

Il faut finir la partie des certificat avant de toucher nginx. Je ne vois pas la partie ou tu dois modifier le configuration.yaml pour rajouter le chemin des certificats ssl tu l’as fait?
Ca donne un truc comme:

http:
ssl/xxxxx/ key
ssl/xxxxxx/permission

c’est dans la doc let’s encrypt

alors j’utilise pas let’s encrypt de HA, c’est sur mon NAS que je prend les certificats généré pour mon domaine HA.XXXX.FR

Dans mon http j’ai ça moi
http:
use_x_forwarded_for: true
trusted_proxies: # adresse(s) IP locale(s) du NAS Synology
- 192.168.XX.XX
ip_ban_enabled: no
login_attempts_threshold: 5

en fait j’ai mes 2 fichiers .PEM (fullchain et privkey) que j’ai déjà dans le dossier SSL de HA.
Du coup quand je lance NGUIX, a priori il est lancé et pas d’erreur.

Regardes par là: Intégration Solar Optimizer - Optimisation de sa consommation Solaire - #185 par FuReT

Bonjour @slug74

Je n’arrive pas à exécuter les étapes décrites dans la doc tesla-http-proxy et c’est assez galère.

je suis dans le meme cas que toi, à savoir mon NAS qui gère les certificats pour mon sous domaine home assistant.

Est ce que dans notre cas NGUIX est obligatoire, vu que le NAS fait déjà office de serveur proxy ?

As tu réussi à faire fonctionner tesla-http-proxy ?

La doc du proxy est effectivement très galère. Je rédige une procédure pour clarifier tout cela.

1 « J'aime »

Précision importante : j’utilise mon url nabu-casa pour accéder à HA, je n’avais donc rien configuré en matière de domaine et autres réjouissances avant d’installer le proxy.

Résumé des étapes

  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.

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. Notez que le domaine principal est bien différent du domaine tesla.duckdns.org. J’utilise volontairement un nom de domaine factice car je n’utilise pas NGinx pour accéder à mon instance HA depuis l’extérieur:
domain: core-nginx-proxy
hsts: max-age=31536000; includeSubDomains
certfile: fullchain.pem
keyfile: privkey.pem
cloudflare: false
customize:
  active: true
  default: nginx_proxy_default*.conf
  servers: nginx_proxy/nginx_*.conf

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. Il va planter, avec une erreur du type : FATAL: Fix public key before proceeding. C’est normal à ce stade ne cherchez pas à résoudre ne (non) problème.
  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.

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

A venir

3 « J'aime »

T’aurais pas exposé ta clé privée en public des fois ? Le message est trompeur

C’est bien de la clé publique dont il s’agit et non la clé privée, erreur de saisie de ma part. Je corrige.

1 « J'aime »

Voila qui est fait pour le plus gros de la procédure, reste à ajouter la partie sur la configuration de l’intégration mais c’est le plus simple.

J’espère que ca pourra en aider certains. Pour ceux qui utilisaient déjà NGinx pour accéder à leur instance, pensez à laisser votre nom de domaine principal dans la configuration de l’addon.

Une fois la dernière partie ajoutée, je fais une passe grammaire/syntaxe/orthographe et c’est plié.

3 « J'aime »

Gros travail merci beaucoup !

Merci beaucoup pour tout ce boulot !!

Par contre moi je suis toujour bloquer au meme stade avec « 404: Not Found »
J’ai tenté avec ta méthode mais j’ai la meme chose.
J’y ai cru avec la nouvelle version qui traite un cas 404 mais non :frowning:

Si je tape juste https://tesla.xxxx.fr j’accès bien a mon HA donc ça redirige bien mais lorsque je tente d’afficher la clé il me met le 404… j’ai l’impression qu’il ne passe pas par NGUIX pour faire la redirection comme écrit dans le fichier de conf alors que j’ai bien mis :

active: true
default: nginx_proxy_default*.conf
servers: nginx_proxy/nginx_*.conf

dans mon conf yaml j’ai bien

http:
  use_x_forwarded_for: true
  trusted_proxies: # adresse(s) IP locale(s) du NAS Synology
    - 192.168.xx.xx
    - 172.30.32.0/24
    - 172.30.32.3
    - 172.30.33.0/24

et que j’ai bien mes fichiers généré par le http proxy tesla :

    server {
        server_name tesla.xxxxxxx.fr;

        ssl_certificate /ssl/fullchain.pem;
        ssl_certificate_key /ssl/privkey.pem;

        # dhparams file
        ssl_dhparam /data/dhparams.pem;

        listen 443 ssl http2;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

        location / {
            return 404;
        }

        # static public key for Tesla
        location /.well-known/appspecific/com.tesla.3p.public-key.pem {
            root /share/tesla;
            try_files /com.tesla.3p.public-key.pem =404;
        }

        location = /favicon.ico {
            log_not_found off;
        }

        location = /robots.txt {
            log_not_found off;
        }
    }

si j’essaie de regarder dans le terminale j’arrive bien a lire le fichier avec la clé publique mais la lecture par la redirection ne fonctionne pas, je n’ai plus d’idée, je sais pas si on peut tracer un flux :frowning:

Merci à tous.

Salut,

Merci pour le partage.
Je suis en train de préparer un article sur l’intégration Tesla pour le site de HACF. Je te contacterai en DM pour cette partie :wink:

1 « J'aime »

J’ai été confronté au même problème. Si tu arrives sur l’écran d’identification HA via l 'url du domaine Tesla, il y a un soucis avec NGinx.

Le domaine Tesla ne doit pas permettre l’accès à l’UI de HA.

Les confs que tu as posté semblent ok, par contre celle de NGinx est incomplète car il n’y a que la partie customization affichée. Pourrais tu la poster entièrement ? En particulier pour vérifier que le domaine spécifié n’est pas celui dédié pour le proxy :

domain: core-nginx-proxy # ⚠ TOUT SAUF LE DOMAINE TESLA
hsts: max-age=31536000; includeSubDomains
certfile: fullchain.pem
keyfile: privkey.pem
cloudflare: false
customize:
  active: true
  default: nginx_proxy_default*.conf
  servers: nginx_proxy/nginx_*.conf

C’est un enfer… Quel est le :face_with_symbols_over_mouth: qui nous a inventé ça.

merci @Vladvonvidden pour ce mode opératoire très détaillé ! :+1: :+1:

Est ce que l’on est obligés de passer par DuckDNS ? J’ai déjà un nom de domaine avec certificat let’s encrypt, géré directement via le reverse proxy de mon NAS Synology.

Même question pour NGINX, est il indispensable vu que mon NAS gère déjà un reverse proxy ?

Réponse pour DuckDns comme pour Nginx : non ce n’est pas obligatoire. La documentation est claire la dessus.

Le seul pré-requis est le suivant :

Vous devez disposer d’un nom de domaine (FQDN) avec un certificat SSL valide pour héberger votre clé publique sur le port standard 443.

La méthode importe peu, même si l’add-on semble pré-configuré pour un usage avec Nginx SSL proxy. Il y a déjà des exemples de configuration avec des méthodes alternatives, mais impossible pour moi de les tester.

Il y a une discussion sur le repo qui semble être liée à votre cas d’usage, ainsi qu’une autre d’ordre plus général.

1 « J'aime »

en fait, je suis exactement dans ce cas, mon HA est hébergé sur mon NAS Syno et je passe par un reverse proxy (qui porte les certif)

voici la config complète pour NGUIX :

domain: core-nginx-proxy
hsts: max-age=31536000; includeSubDomains
certfile: fullchain.pem
keyfile: privkey.pem
cloudflare: false
customize:
  active: true
  default: nginx_proxy_default*.conf
  servers: nginx_proxy/nginx_*.conf

Je pense que le problème vient du routage car dans le reverse proxy pour accéder a mon HA, je met par exemple : ha.xxxxxxx.fr → IP de la VM + port (8123)

CleanShot 2024-04-02 at 17.39.26

Pour le domaine Tesla, je faisais la meme redirection et j’avais un 404 :

Par contre, si je redirige juste vers l’IP + 443, j’ai l’impression qu’il passe bien par NGUIX mais probleme de SSL …
CleanShot 2024-04-02 at 17.39.59
CleanShot 2024-04-02 at 17.42.39

je pense qu’ensemble on va y arriver :slight_smile:
Mais c’est vrai que c’est bien galère.

Ça ressemble fortement a un problème de routage. Je ne connais pas cette interface mais sur le domaine Tesla, il est fait mention de http et https :

Le protocole de destination peut il être changé en https ?

Ce qui est certain c’est qu’il faut exposer le 443 pour le proxy et non le 8123.

Pour ce que ça vaut il y a des discussions sur l’erreur rencontrée.

bonsoir @slug74

j’ai la meme config que toi (Syno et reverse proxy intégré).

Pour l’instant j’arrive jusque cette étape : visiblement serveur proxy du syno reconnu et paire de clés également… on progresse !

Demain, je regarderai les astuces mentionnées dans cet article : Read this before asking for help · llamafilm/tesla-http-proxy-addon Wiki · GitHub

Salu,
Whaou ! Quelle galère…
Moi aussi j’utilise Nabu Casa et je n’arrive pas à configurer…
Ton URL Naba, tu la mets où ?

Et je pense que c’est pour ça que je me fait jeter sur Tesla Developper…