Optionnelle : Création de la connexion API Tesla

Cette étape est probablement la plus délicate de tout le processus. Prenez le temps de bien respecter les différentes opérations pour assurer un enrôlement réussi de votre API auprès de chez Tesla.

Qu’est-ce que Fleet API ?

Fleet API est un service de données et de commande qui donne accès aux véhicules Tesla, à l’énergie et à d’autres types d’appareils. Les partenaires peuvent interagir avec leurs propres appareils ou avec les appareils auxquels un client leur a donné accès.

Suivez le processus d’intégration ci-dessous pour vous inscrire et obtenir une clé API afin d’interagir avec les points d’extrémité de l’API de Tesla. Les applications peuvent demander aux propriétaires des véhicules l’autorisation de consulter les informations du compte, d’obtenir l’état du véhicule ou même d’émettre des commandes à distance.

Les propriétaires de véhicules contrôlent les applications auxquelles ils accordent l’accès et peuvent modifier ces paramètres à tout moment.

Tesla

Quelles sont les différentes étapes pour faire fonctionner Fleet API ?

Voici la liste des étapes que nous allons faire ensemble :

Etape 0 – Rappel des prérequis :

Pour mettre en place une connexion API sur votre environnement (Azure ou Raspberry Pi 5), il vous faudra disposer de :

  • Un compte Tesla
  • Une machine virtuelle ou Raspberry Pi 5
  • Un accès SSH à votre environnement

Avant de créer notre application API chez Tesla, commençons par configurer Ngork.

Etape I – Configuration de Ngrok :

Pour pouvoir enregistrer notre application chez Tesla, nous allons avoir besoin d’un domaine internet pointant sur notre clef publique.

Ngrok est un outil de tunnellisation qui permet d’exposer de manière sécurisée un serveur local à Internet via une URL publique, sans avoir à configurer manuellement votre réseau ou à ouvrir des ports dans votre pare-feu.

Pour cela, rendez-vous sur le site de Ngrok, puis inscrivez-vous chez eux afin d’avoir un compte gratuit :

Sur leur site, téléchargez l’installateur de Ngrok selon votre OS :

Copiez la commande suivante affichée sous l’installateur pour finaliser la configuration de votre Ngrok :

Depuis votre ordinateur, ouvrez Windows PowerShell :

Lancez la commande précédemment copiée afin de terminer la configuration Ngrok :

Créez un tunnel ngrok sécurisé depuis Internet vers votre serveur local qui écoute sur le port 80, en générant une URL publique accessible depuis n’importe quel navigateur :

ngrok http http://localhost:80

Copiez le nom de domaine commençant par https et finissant par ngrok-fre.app. Ne fermez pas cette fenêtre tant que le processus d’enrôlement API pas entièrement fini :

Ngrok est maintenant correctement configuré. L’étape suivante consiste à enregistrer notre application chez Tesla.

Etape II – Création de l’application API chez Tesla :

Rendez-vous le portail Développeur de Tesla, accessible via l’URL Tesla suivante, puis cliquez en haut à droite :

Cliquez ici pour créer votre compte Développeur Tesla :

Créez un compte en renseignant les champs de base, puis cliquez sur Suivant :

Renseignez votre mail ainsi qu’un mot de passe fort, puis cliquez sur Suivant :

Vérifiez votre compte via la réception d’un code par email :

Cliquez sur le bouton de configuration de la 2FA pour sécuriser votre compte, puis cliquez sur Continuer une fois l’enrôlement de la 2FA terminé :

Acceptez les conditions, puis cliquez sur Suivant :

Choisissez le premier choix, puis cliquez sur Suivant :

Renseignez tous les champs, puis cliquez sur Suivant :

Reprenez l’URL publique donnée par Ngrok, ajoutez en URL de redirection celle en-dessous, puis cliquez sur Suivant :

http://localhost:3000/callback

Cochez les cases suivantes, puis cliquez sur Suivant :

Cliquez sur Ignorer et soumettre :

La notification Tesla vous indiquant un succès de l’approbation de votre application API Tesla apparaît alors :

Un email de confirmation vous est également envoyé :

Votre application est immédiatement visible sur le portail de votre compte Développeur Tesla, cliquez-ici pour obtenir des informations techniques sur celle-ci :

Copiez l’ID et le secret de votre application car nous nous en aurons besoin plus tard :

Nous avons besoin de mettre à disposition la clef publique Tesla que nous avons généré quelques étapes plus tôt.

Etape III – Exposition de la clef publique API Tesla :

Pour cela, sur votre poste local, créez une arborescence de dossiers dans le lieu de votre choix, tant que la fin fini comme ceci :

.well-known\appspecific\

Ouvrez une session WinSCP vers votre environnement :

Récupérez la clef publique com.tesla.3p.public-key.pem générée précédemment afin de la placer dans le dossier créé sur votre poste local :

.well-known\appspecific\

Afin d’exposer cette clef publique, installez Python sur votre poste via l’URL officielle :

Ouvrez un nouvel onglet à Windows PowerShell, puis affichez la version de Python installée sur votre système

py --version

Utilisez Python pour démarrer le module intégré http.server sur le port 80

py -m http.server 80

Ne fermez pas cette fenêtre tant que le processus d’enrôlement API pas entièrement fini :

Depuis votre poste local, testez l’URL suivante afin de vérifier le bon téléchargement de votre clef publique API Tesla :

https://YOUR_NGROK_DOMAIN/.well-known/appspecific/com.tesla.3p.public-key.pem

Cliquez sur le bouton suivant pour confirmer votre action :

Constatez le téléchargement de votre clef publique sur votre poste local :

Nous sommes maintenant prêt à finaliser l’inscription de notre application chez Tesla.

Etape IV – Génération d’un token d’authentification partenaire :

Plusieurs requêtes API doivent être faites pour arriver au bout du processus. Pour cela, je vous conseille de passer par un outil local, comme Insomnia :

Insomnia REST est un client API (interface pour tester et déboguer des API) qui permet de créer, envoyer et gérer des requêtes HTTP et REST, ainsi que des requêtes GraphQL dans une interface graphique conviviale.

Chat GPT

Téléchargez la version selon votre OS :

Une fois Insomnia installé, créez un nouveau dossier pour y mettre toutes vos requêtes API Tesla :

Nommez votre dossier Insomnia, puis cliquez sur Créer :

Sur votre dossier Insomnia, effectuez un clique droit afin d’importer une requête API :

Collez le code ci-dessous en remplaçant en gras les valeurs par les vôtres, puis cliquez sur Importer :

curl --request POST \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode "client_id=CLIENT_ID" \
  --data-urlencode "client_secret=CLIENT_SECRET" \
  --data-urlencode 'scope=openid vehicle_device_data vehicle_cmds vehicle_charging_cmds' \
  --data-urlencode "audience=https://fleet-api.prd.eu.vn.cloud.tesla.com" \
  'https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token'

Cette commande effectue une requête HTTP POST vers un endpoint OAuth2 afin d’obtenir un access token en utilisant le flux d’authentification client_credentials. Cela doit donner :

Nommez votre requête API pour plus de clarté, revérifiez tous les champs présent dans l’onglet Body, puis cliquez sur Envoyer :

Copiez l’accès token généré par Tesla pour une utilisation ultérieure. Continuons avec l’enregistrement de notre nom de domaine temporaire généré par Ngrok.

Etape V – Enregistrement d’un domaine chez Tesla :

Comme précédemment, effectuez un clique droit afin d’importer une nouvelle requête API :

Collez le code ci-dessous en remplaçant en gras les valeurs par les vôtres, puis cliquez sur Importer :

curl --request POST \
  --url https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/partner_accounts \
  --header 'Authorization: Bearer YOUR_PARTNER_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"domain": "YOUR_NGROK_DOMAIN"}'

Cette commande effectue une requête HTTP POST vers l’API de la flotte de Tesla afin d’enregistrer ou de créer un compte partenaire avec un domaine spécifique. Cela doit donner :

Nommez votre requête API pour plus de clarté, revérifiez tous les champs présent dans l’onglet Body :

Vérifiez également l’onglet Headers, puis cliquez sur Envoyer :

Constatez le succès de l’opération via le message suivant :

L’étape suivante consiste maintenant à récupérer un accès token et refresh token afin de pouvoir utiliser le proxy HTTP Tesla dans Energyboard.

Etape VI – Génération d’un refresh token :

Pour cela, nous allons utiliser une autre application temporaire afin de capter facilement ces tokens. Rendez-vous sur la page GitHub suivante, puis lancez le téléchargement de l’archive ZIP :

Extrayez le contenu de l’archive ZIP dans le dossier de votre choix :

Ouvrez un onglet Windows PowerShell, positionnez-vous dans le dossier d’archive ci-dessous, puis lancez la commande suivante pour télécharger et installer toutes les dépendances répertoriées dans le fichier package.json du projet :

pnpm install

Créez un nouveau fichier .env à la racine de ce même dossier en y indiquant les deux informations présentes en gras :

TESLA_CLIENT_ID=VOTRE_ID_CLIENT
TESLA_CLIENT_SECRET=VOTRE_SECRET
TESLA_REFRESH_TOKEN=

Cela donne le fichier .env suivant :

Lancez la commande suivante afin de démarrer l’application de captage des tokens :

pnpm get-token

Copiez l’URL donnée par l’application lancée, puis ouvrez un navigateur internet :

Authentifiez-vous cette fois avec le compte propriétaire de la Tesla, cochez les cases suivantes, puis cliquez sur Autoriser :

Le navigateur affiche alors l’URL de callback créée par l’application lancée :

Un email de confirmation vous indique l’ajout de droits API à votre application :

Retournez sur l’application lancée sous Windows PowerShell afin de récupérer le refresh token capté :

Toutes les étapes se passent bien, testons maintenant que le rafraîchissement des tokens se déroule sans souci.

Etape VII – Test du rafraîchissement des tokens :

Retournez sur Insomnia afin d’effectuer un clique droit afin d’importer une nouvelle requête API :

curl --request POST \
  --url https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data grant_type=refresh_token \
  --data client_id=YOUR_CLIENT_ID \
  --data refresh_token=EU_XXX

Cette commande effectue une requête HTTP POST vers l’API de la flotte de Tesla afin d’enregistrer ou de créer un compte partenaire avec un domaine spécifique. Cela doit donner :

Nommez votre requête API pour plus de clarté, revérifiez tous les champs présent dans l’onglet Body, puis cliquez sur Envoyer :

Constatez le succès de l’opération via le message suivant :

L’enregistrement de l’application est maintenant terminée ! Il ne nous reste qu’à ajouter la clef virtuelle API sur notre Tesla.

Etape VIII – Enregistrement de la clef publique API sur la Tesla :

Pour cela, ouvrez la page suivante dans votre navigateur internet en remplaçant la valeur en gras par votre domaine Ngrok approuvé par Tesla :

https://tesla.com/_ak/YOUR_NGROK_DOMAIN

Depuis votre smartphone dans lequel installée l’application Tesla et agit déjà comme une clef de votre Tesla, scanner le QR en bas de votre page web :

L’application Tesla s’ouvre alors et vous demande d’autoriser l’application à votre véhicule, cliquez sur Approuver :

Un message d’opération réussie doit alors apparaître :

Votre Tesla est maintenant prête à recevoir des ordres via API. Il ne nous reste qu’à configurer Energyboard pour activer cette fonction.

Etape IX – Configuration API pour Energyboard :

Renseignez les informations suivantes pour qu’Energyboard exploite le service de communication API avec la voiture Tesla :

Pensez à sauvegarder le fichier de configuration via la commande suivante :

:wq

Arrêter l’application Energyboard :

pm2 stop energyboard

Démarrer l’application Energyboard :

pm2 start energyboard

Conclusion

En conclusion, cette dernière étape d’enrôlement de la Fleet API Tesla clôt un parcours riche en découvertes et en défis techniques : de la configuration de Ngrok à la génération des tokens, en passant par l’exposition de votre clef publique et l’inscription de votre application, chaque phase a consolidé votre compréhension des protocoles OAuth2 et des bonnes pratiques de sécurité.

Grâce à ce processus, vous bénéficiez désormais d’une connexion API robuste, entièrement maîtrisée, qui permet à votre tableau de bord domotique de communiquer en toute confiance avec votre Tesla.

N’hésitez pas à revisiter chaque étape si besoin, et gardez à l’esprit que cet investissement initial ouvre la voie à de nombreuses automatisations avancées et à un suivi précis de vos usages énergétiques.

Félicitations pour votre persévérance et bon pilotage !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *