[TUTO] Connecter sa voiture via Smartcar

@algaillard m’a parlé de Smartcar que je ne connaissais pas mais avec l’aide de Gemini, il est possible de récupérer les infos une fois le véhicule inscrit sur Smartcar et surtout de donner des ordres comme lancer ou stopper une recharge électrique.

Étape 1 : Obtenir les identifiants d’API Smartcar

  1. Connectez-vous à votre espace développeur sur le Dashboard Smartcar.

  2. Créez une nouvelle application.

  3. Dans le menu de gauche, rendez-vous dans Configuration puis ouvrez l’onglet API credentials.

  4. Copiez et notez précieusement le Client ID.

  5. Cliquez sur Generate new secret pour générer votre clé secrète (Client Secret). Notez-la immédiatement, car elle ne s’affichera qu’une seule fois.

Étape 2 : Associer le véhicule et récupérer les identifiants uniques

  1. Dans le menu de gauche de votre tableau de bord Smartcar, allez sur l’onglet Vehicles.

  2. En haut à droite de l’écran, cliquez sur le bouton Share Connect link.

  3. Ouvrez le lien généré dans un nouvel onglet de votre navigateur.

  4. Sélectionnez la marque de votre véhicule, puis connectez-vous à l’aide des identifiants de votre application mobile constructeur officielle.

  5. Une fois la validation terminée, fermez la fenêtre d’association : votre véhicule apparaît instantanément dans la liste sur votre tableau de bord Smartcar.

  6. Copiez et notez les deux identifiants affichés dans les colonnes de votre écran :

    • User ID

    • Vehicle ID

Étape 3 : Déployer le script PHP sur Jeedom

Connectez-vous en SSH à votre serveur Jeedom (ou utilisez l’éditeur de fichiers intégré) pour créer le script de commande, par exemple ici: /var/www/html/plugins/script/data/smartcar_charge.php

Remplissez smartcar_charge.php avec ce code qu’il faudra adapter (en haut) avec vos données de connexion:

<?php
// /var/www/html/plugins/script/data/smartcar_charge.php

$client_id     = 'VOTRE_CLIENT_ID';         // À remplacer par votre Client ID Smartcar
$client_secret = 'VOTRE_CLIENT_SECRET_M2M'; // À remplacer par votre Client Secret M2M
$user_id       = 'VOTRE_USER_ID';           // À remplacer par votre User ID
$vehicle_id    = 'VOTRE_VEHICLE_ID';        // À remplacer par votre Vehicle ID unique

// 1. Get global application token (V3 - Client Credentials Flow)
$ch = curl_init('https://iam.smartcar.com/oauth2/token');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_USERPWD        => "$client_id:$client_secret",
    CURLOPT_POSTFIELDS     => http_build_query([
        'grant_type' => 'client_credentials'
    ]),
]);
$token_auth = json_decode(curl_exec($ch), true);
curl_close($ch);

$access_token = $token_auth['access_token'] ?? null;

if (!$access_token) {
    die("Error: Unable to retrieve application token. Check your client_secret.");
}

// 2. Determine command action (START or STOP)
$action = strtoupper($_GET['action'] ?? 'START'); 
$endpoint_action = ($action === 'STOP') ? 'stop' : 'start';

// 3. Send the charging command directly to the vehicle via API V3
$ch_cmd = curl_init("https://vehicle.api.smartcar.com/v3/vehicles/$vehicle_id/commands/charge/$endpoint_action");
curl_setopt_array($ch_cmd, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        "Authorization: Bearer $access_token",
        "sc-user-id: $user_id",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => '{}', // Corps vide requis pour valider la requête POST
]);

$result = curl_exec($ch_cmd);
$http_code = curl_getinfo($ch_cmd, CURLINFO_HTTP_CODE);
curl_close($ch_cmd);

echo "Action: $action | HTTP Status $http_code | Response: $result";

Étape 4 : Configuration dans Jeedom

  1. Ouvrez votre interface Jeedom et accédez au plugin Script (Plugins > Programmation > Script).

  2. Ajoutez un nouvel équipement (ex: Mon Véhicule Électrique).

  3. Rendez-vous dans l’onglet Commandes et ajoutez deux commandes de type Action / Défaut en HTTP :

Nom de la commande Type Requête / URL de commande
Démarrer Charge Action https://VOTRE_DOMAINE_JEEDOM/plugins/script/data/smartcar_charge.php?action=START
Arrêter Charge Action https://VOTRE_DOMAINE_JEEDOM/plugins/script/data/smartcar_charge.php?action=STOP

(Veillez à remplacer VOTRE_DOMAINE_JEEDOM par l’adresse d’accès locale ou externe de votre box).

  1. Sauvegardez l’équipement. Vous disposez maintenant de deux boutons fonctionnels sur votre dashboard Jeedom pour piloter votre charge à la demande ou les intégrer au sein de vos scénarios automatiques (gestion des heures creuses, surplus photovoltaïque, etc.).

Il doit également être possible d’avoir les infos (kilométrage, pourcentage de charge, etc.).. à vous de jouer :slight_smile:

EDIT du 18.6.26 - message de smartcar:

Unfortunately we don’t offer the ability to control HVAC via Smartcar’s API for VW’s in Europe. Our partnership with VW only enables us to manage electric vehicle charging. You can see more about the signals and commands supported for different vehicles here: https://compatibility.smartcar.com/.

une piste alternative à creuser: GitHub - TA2k/ioBroker.vw-connect: ioBroker Adapter for VW We connect and Skoda connect · GitHub

2 « J'aime »

@1suisse

Bonjour et merci pour ce tuto.

Le script fonctionne, mais il y a un problème lié à mon eUp VW : lorsque je branche le câble, la charge commence automatiquement immédiatement. Même si je l’arrête avec l’application VW we-connect ou un autre moyen, la commande START ne passe pas au niveau de smartcar, avec erreur 409, car il est considéré qu’elle est déjà en charge dès que le câble est branché. De même, l’ordre STOP est reçu par Smartcar, mais ignoré avec erreur 502. Mon véhicule ne permet pas de désactiver cette fonction sur la console du tableau de bord.

MAJ : aujourd’hui, la commande STOP passe, mais pas la commande START.

1 « J'aime »

Réponse de smartcar pour mon problème e-Up :
”Here’s what’s happening and why.

Your WeConnect app and Smartcar reach the vehicle through two different Volkswagen channels. WeConnect talks to VW’s consumer platform directly. Smartcar sends charge commands through VW’s partner charging interface. It’s the same car, but two separate manufacturer backends — and right now, VW’s partner interface is rejecting both commands for your specific vehicle, each with a different reason:

  • Start charging: VW responds that the vehicle is « not ready to be charged, » so the command doesn’t go through.

  • Stop charging: VW rejects the stop with a « charging mode could not be updated » response. If you’re observing the car actually stop, VW may be applying it even while returning that error — but from our side the command is being rejected, so we can’t confirm the physical result.

We see this vary across e-Up! vehicles: VW’s partner interface accepts remote charge commands on some and returns these same errors on others. Yours currently falls in the second group. That’s a behavior on Volkswagen’s side for this vehicle, not a setting on your account we can switch on.

Status update on our side:

We identified that the error messages we were returning for these rejections were misleading — the start failure was being reported as « your vehicle is already charging, » which wasn’t accurate. We’ve made a fix that returns a clearer, accurate reason for both the start and stop rejections, and it should reach production in the next 24-48 hours. To set expectations honestly: this improves the error you receive so it reflects what’s actually happening — it does not by itself make the start/stop commands succeed, since the rejection originates on Volkswagen’s side for this vehicle.

Reading charge state (battery level, charging status, cable connected, etc.) is unaffected and continues to work for your vehicle.

*Steve Peck”.
*
En attendant une évolution, j’ai quand même un scénario qui passe : lorsque je branche la voiture en dehors des heures creuses, smartcar interrompt la charge. Quant au scénario de démarrage de la charge au passage en heures creuses, j’ai programmé une alerte pour la lancer en manuel quand elle n’est pas démarrée par smartcar.

Nota : carconnectivity fonctionne maintenant, mais seulement pour les infos. Je l’ai installé sur Home Assistant car la procédure existe et je les récupére en mqtt sur Jeedom.

Cela ne s’arrange pas chez VW : comme les mises à jour via smartcar étaient aléatoires, j’ai interrogé l’IA pour un diagnostic… Le voici :

”2. Le diagnostic

  1. Votre compte et votre connexion Smartcar fonctionnent :
    Pour preuve, le signal charge-ischarging (voiture en charge ou non) a répondu avec succès aujourd’hui même (SUCCESS à 17h48 UTC avec la valeur false). La liaison n’est donc pas coupée.

  2. Volkswagen subit une panne B2B (UPSTREAM: KNOWN_ISSUE) :
    Depuis le 10 septembre à 01h32 du matin, l’API B2B officielle de Volkswagen renvoie une erreur à Smartcar dès qu’il demande la batterie, l’autonomie ou le kilométrage des e-Up!.
    C’est pour cela que le dashboard Smartcar affiche « Unavailable » en rouge sur ces signaux.

  3. Pourquoi Carconnectivity fonctionne ?
    Carconnectivity contourne l’API B2B de Volkswagen en émulant directement l’application mobile grand public (MyVolkswagen). Les serveurs de l’application mobile fonctionnent, mais la passerelle partenaire B2B utilisée par Smartcar est en avarie sur ces métriques.

  4. Le piège dans le script Jeedom :
    Lorsque Smartcar rencontre cette erreur de Volkswagen, il renvoie un code HTTP 200 mais avec "status": { "value": "ERROR" }, tout en laissant l’ancienne valeur (64 et 35806) dans le champ body.
    Votre script PHP lisait directement $json['data']['attributes']['body']['value'] sans vérifier si status.value === 'SUCCESS'. Il injectait donc bêtement l’ancienne valeur de 64 % dans Jeedom en croyant qu’il s’agissait d’une valeur fraîche !


3. Conclusion & Que faire ?

  • Côté Smartcar / Volkswagen :
    Vous n’avez rien de plus à reconfigurer. Votre reconnexion est bonne. Il s’agit d’un incident en cours côté serveurs Volkswagen B2B (KNOWN_ISSUE), que Smartcar résout automatiquement dès que Volkswagen rétablit le service télématique pour la e-Up!.

  • Côté Jeedom :
    Tant que Volkswagen n’a pas levé ce KNOWN_ISSUE, Carconnectivity reste temporairement votre source de vérité pour le niveau de batterie (53 %) et les kilomètres (35 829 km).”