Connected drive BMW: disponibilité sur le Market?

Le code de BlueWalk permet déjà l’utilisation de la nouvelle API. Mais le problème est qu’il faut changer le code du plugin Jeedom pour qu’il utilise cette nouvelle API. Il faut donc un développeur PHP - Jeedom qui fasse la mise à jour du plugin.

Hello tout le monde,

Je regarde ce sujet d’un coin de l’oeil depuis qq temps. J’ai du me séparer de ma BMW il y a qq temps mais je viens d’acheter une mini électrique qui sera livrée en août.
Si le dev de ce plugin n’est plus trop présent je veux bien le reprendre s’il en est d’accord (je vais essayer de le contacter).
Je vais jeter un oeil rapide au code du plugin pour voir ce que le changement d’API nécessite comme adaptation mais je risque d’avoir besoin d’un accès à l’un de vos comptes. Un motivé ?
J’essaie de faire ca en fin de semaine.

Xav

HA utilise Bimmer connected
C en python et elle fonctionne encore.

En effet je n’avais pas vu qu’à la fin de sa classe il y avait une méthode getVehicles() qui utilise la nouvelle API.

J’arrive avec cette méthode à obtenir les infos mais reste à les adapter dans le code du plugin…

1 « J'aime »

Il doit y avoir plusieurs solutions je n’avais pas vu celle-ci. Dommage qu’elle ne passe pas par MQTT…

Hello @laurent.da-col

Tu pourrais m’envoyer en MP le résultat json de la méthode getVehicles ?

Xav

Je progresse.

Déjà dans le dossier plugins/BMWConnectedDrive/3rparty il faut remplacer le code de ConnectedDrive.php par :

NewAPIConnectedDrive.txt (11,6 Ko)

Ensuite ça se passe dans le fichier BMWConnectedDrive.class.php du dossier plugins/BMWConnectedDrive/core/class il faut adapter les lignes 72 à 93 ainsi :

$this->checkAndUpdateCmd('unitOfLength', $bmwCarInfo->attributesMap->mileage);

devient

$this->checkAndUpdateCmd('mileage', $bmwCarInfo[0]->status->currentMileage->mileage);

ceci par analyse de la chaine retournée par le bouton « Tester connexion » de l’équipement.

Je continue à adapter mais je n’ai pas un modèle BMW électrique alors je n’ai pas toutes les informations.

1 « J'aime »

Si ça vous intéresse, j’ai le json de getVehicles pour ma vieille BMW de 2014.
Il n’y a pas grand chose qui remonte:
Echéances de maintenance.
Kilométrage et niveau d’essence de janvier.

Les actions semblent encore possibles.

@jpty Je veux bien merci :+1:t2: (en supprimant les données sensibles s’il y en a)

Je viens de l’envoyer !

1 « J'aime »

Voici déjà (ligne 72 à 94) de BMWConnectedDrive.class.php :

 // On récupère les informations de BMWConnectedDrive
    $this->checkAndUpdateCmd('beRemainingRangeElectric', $bmwCarInfo->attributesMap->beRemainingRangeElectric);
    $this->checkAndUpdateCmd('chargingLevelHv', $bmwCarInfo->attributesMap->chargingLevelHv);
    $this->checkAndUpdateCmd('chargingStatus', $bmwCarInfo->attributesMap->charging_status);
    $this->checkAndUpdateCmd('connectorStatus', $bmwCarInfo->attributesMap->connectorStatus);
    $this->checkAndUpdateCmd('doorLockState', $bmwCarInfo[0]->status->doorsGeneralState);
    $this->checkAndUpdateCmd('mileage', $bmwCarInfo[0]->status->currentMileage->mileage);
    $this->checkAndUpdateCmd('unitOfLength', $bmwCarInfo->attributesMap->unitOfLength);
    $this->checkAndUpdateCmd('lightsParking', $bmwCarInfo->attributesMap->lights_parking);
    $this->checkAndUpdateCmd('doorDriverRear', $bmwCarInfo[0]->properties->doorsAndWindows->doors->driverRear);
    $this->checkAndUpdateCmd('doorDriverFront', $bmwCarInfo[0]->properties->doorsAndWindows->doors->driverFront);
    $this->checkAndUpdateCmd('doorPassengerRear', $bmwCarInfo[0]->properties->doorsAndWindows->doors->passengerRear);
    $this->checkAndUpdateCmd('doorPassengerFront', $bmwCarInfo[0]->properties->doorsAndWindows->doors->passengerFront);
    $this->checkAndUpdateCmd('windowDriverFront', $bmwCarInfo[0]->properties->doorsAndWindows->windows->driverFront);
    $this->checkAndUpdateCmd('windowDriverRear', $bmwCarInfo[0]->properties->doorsAndWindows->windows->driverRear);
    $this->checkAndUpdateCmd('windowPassengerFront', $bmwCarInfo[0]->properties->doorsAndWindows->windows->passengerFront);
    $this->checkAndUpdateCmd('windowPassengerRear', $bmwCarInfo[0]->properties->doorsAndWindows->windows->passengerRear);
    $this->checkAndUpdateCmd('trunk_state', $bmwCarInfo[0]->properties->doorsAndWindows->trunk);
    $this->checkAndUpdateCmd('beRemainingRangeFuelKm', $bmwCarInfo[0]->properties->combustionRange->distance->value);
    $this->checkAndUpdateCmd('remaining_fuel', $bmwCarInfo[0]->properties->fuelLevel->value);
    $this->checkAndUpdateCmd('gps_lat', $bmwCarInfo[0]->properties->vehicleLocation->coordinates->latitude);
    $this->checkAndUpdateCmd('gps_lng', $bmwCarInfo[0]->properties->vehicleLocation->coordinates->longitude);
    $this->checkAndUpdateCmd('hood_state', $bmwCarInfo[0]->properties->doorsAndWindows->hood);
    $this->checkAndUpdateCmd('lastUpdate', date('d/m/Y H:i:s'));
1 « J'aime »

tu m’as devancé :wink:
Il manque les infos pour les véhicules électriques.
Si une âme charitable peut envoyer le json :wink:

Je ne sais pas si j’ai tout juste. Il y a un peu confusion entre Properties et status pour certaines infos… Et je ne trouve pas l’éclairage. Et pour les actions… le github BlueWalk ne les traite pas j’ai l’impression.

Bravo et merci ! J’ai récupéré le kilométrage ! Top !

J’ai modifié le fichier de mon côté et je suis en phase avec ce que tu as mis.
Pour les actions, il faut que je regarde comment ca fonctionne.
Tu n’aurais pas par hasard un vieux json datant des anciennes API ?

Non malheureusement. Ca m’aurait bien servi aussi.

dans le répertoire config du plugin, il écrase les fichiers au fur et à mesure ?
si il y a qq’un qui n’a pas encore appliqué les modifications ci-dessus et qui peut regarder dans le répertoire config, ce serait top !

Sinon j’ai les outils pour faire du reverse engineering (sur iOS, et si pas encrypté par BMW) mais il va falloir me faire confiance et me donner vos informations personnelles :innocent:
Je devrais avoir un peu de dispo ce week-end si jamais.

Je peux essayer également dès que je trouve le temps. Je ne peux pas fournir mon accès car c’est une voiture de fonction…

je regarde pour sortir le « vieux » json cet aprés midi

1 « J'aime »