volvo on call does not recognise ex30
The problem
Volvo on call integration does not recognise volvo EX30
What version of Home Assistant Core has the issue?
core-2024.4.4
What was the last working version of Home Assistant Core?
none
What type of installation are you running?
Home Assistant OS
Integration causing the issue
volvo on call
Link to integration documentation on our website
https://www.home-assistant.io/integrations/volvooncall
Diagnostics information
Volvo on call integration does not recognise volvo EX30
Example YAML snippet
No response
Anything in the logs that might be useful for us?
No response
Additional information
No response
Hey there @molobrakos, mind taking a look at this issue as it has been labeled with an integration (volvooncall) you are listed as a code owner for? Thanks!
Code owner commands
Code owners of volvooncall can trigger bot actions by commenting:
-
@home-assistant closeCloses the issue. -
@home-assistant rename Awesome new titleRenames the issue. -
@home-assistant reopenReopen the issue. -
@home-assistant unassign volvooncallRemoves the current integration label and assignees on the issue, add the integration domain after the command. -
@home-assistant add-label needs-more-informationAdd a label (needs-more-information, problem in dependency, problem in custom component) to the issue. -
@home-assistant remove-label needs-more-informationRemove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.
(message by CodeOwnersMention)
volvooncall documentation volvooncall source (message by IssueLinks)
The Volvo EX30 requires a new app ("Volvo EX30") different from "Volvo Cars", maybe also the connection protocol is different. Moreover, the same incompatibility should occur also for the new EX90.
So probably a whole new integration might be necessary.
Anyway, on the Volvo developer site there is still nothing about the availability of Connecting Vehicle API or other APIs compatible with EX30 or EX90 models, essentially the APIs are only compatibile with cars using the Volvo Cars app.
Connected Vehicle API
Car models This API is available for: All car models between model year 2015 and 2022 (some endpoints have limited availability).
Extended Vehicle API
Car models This API is available for: All car models between model year 2015 and 2021, except for model XC40 fully electric. All car models with model year 2022, except for XC60, S90, V90, V90CC, XC40, and C40 fully electric.
Energy API
This API works for all plug-in hybrid and electric vehicles which are equipped with Google Automotive System (Google built-in).
List of supported cars: XC40 and C40 BEV. XC60 PHEV, S90 PHEV, V90 PHEV from model year 2022. XC90 PHEV, S60 PHEV, V60 PHEV from model year 2023. BEV = Battery Electric Vehicles, PHEV = Plug-in Hybrid Electric Vehicles
https://developer.volvocars.com/apis/
I had a XC40 that works great with this integration. Now I have a EX30 and I discovered it's not compatible :-(
Using postman to catch some packages, I've notice the endpoint is completely different and doing some work, it seams the same for the Smart #1, what makes sense, taking into consideration that is almost the same car.
I'm not very comfortable to do some reverse engineering all by my self, specially on the authentication part, but I'll leave here some of the endpoints.
GET https://api-vlv.ecloudeu.com/remote-control/user/authorization/vehicle/status/XXXXXXXXXXXXXX?latest=False&target=basic%2Cmore&userId=XXXXXXX
{ "code": "1000", "data": { "result": { "serviceResult": { "error": null, "operationResult": 1 }, "sessionId": "RS04197900000002523XXXXXXXXXXXX" }, "vehicleStatus": { "basicVehicleStatus": { "usageMode": "1", "engineStatus": "engine_off", "position": { "altitude": "77", "posCanBeTrusted": "false", "latitude": "130000000", "carLocatorStatUploadEn": "true", "marsCoordinates": "false", "longitude": "-30000000" }, "carMode": "0", "speed": "11.0", "speedValidity": "false", "direction": "185" }, "notification": { "notifForEmgyCallStatus": "0", "reason": "1", "time": "1706554810", "parameters": "{\"key\":\"New VIN number\",\"stringVal\":\"XXXXXXXXXXXXXX\"},{\"key\":\"Previous VIN number\",\"stringVal\":\"�����������������\"}" }, "eg": { "enableRunning": "false", "blocked": { "status": "0" }, "panicStatus": "false" }, "parkTime": { "status": "1719747897153" }, "configuration": { "propulsionType": "4", "fuelType": "4", "vin": "XXXXXXXXXXXXX" }, "updateTime": "1719752388831", "additionalVehicleStatus": { "maintenanceStatus": { "tyreTempWarningPassengerRear": "0", "daysToService": "568", "engineHrsToService": "500", "odometer": "209.000", "brakeFluidLevelStatus": "3", "tyreTempDriverRear": "26.000", "tyreTempWarningPassenger": "0", "tyreTempWarningDriverRear": "0", "mainBatteryStatus": { "stateOfCharge": "1", "chargeLevel": "98.8", "energyLevel": "0", "stateOfHealth": "0", "powerLevel": "0", "voltage": "12.875" }, "tyreTempDriver": "25.000", "tyreTempPassengerRear": "26.000", "tyrePreWarningDriver": "0", "distanceToService": "29791", "tyrePreWarningPassengerRear": "0", "tyreTempWarningDriver": "0", "tyreStatusPassengerRear": "288.330", "tyreStatusPassenger": "289.703", "tyreStatusDriverRear": "293.822", "serviceWarningStatus": "0", "tyreStatusDriver": "293.822", "tyreTempPassenger": "25.000", "tyrePreWarningDriverRear": "0", "tyrePreWarningPassenger": "0", "washerFluidLevelStatus": "0" }, "electricVehicleStatus": { "disChargeUAct": "0.0", "disChargeSts": "0", "wptFineAlignt": "0", "chargeLidAcStatus": "2", "distanceToEmptyOnBatteryOnly": "338", "distanceToEmptyOnBattery100Soc": "397", "chargeSts": "1", "averPowerConsumption": "17.1", "chargerState": "0", "timeToTargetDisCharged": "2047", "distanceToEmptyOnBattery20Soc": "79", "disChargeConnectStatus": "0", "chargeLidDcAcStatus": "2", "dcChargeSts": "0", "ptReady": "0", "chargeLevel": "86", "statusOfChargerConnection": "0", "dcDcActvd": "0", "indPowerConsumption": "1000", "dcDcConnectStatus": "0", "disChargeIAct": "0.0", "dcChargeIAct": "0.0", "chargeUAct": "0.0", "bookChargeSts": "0", "chargeIAct": "0.000", "timeToFullyCharged": "2047" }, "chargeHvSts": "1", "drivingBehaviourStatus": { "gearAutoStatus": "0", "gearManualStatus": "0", "engineSpeed": "0.000" }, "runningStatus": { "ahbc": "0", "goodbye": "0", "homeSafe": "0", "cornrgLi": "0", "frntFog": "0", "stopLi": "0", "tripMeter1": "204.5", "approach": "0", "tripMeter2": "18.9", "indFuelConsumption": "0", "hiBeam": "0", "engineCoolantLevelStatus": "3", "fuelEnLevel": "0", "loBeam": "0", "posLiRe": "0", "ltgShow": "0", "welcome": "0", "drl": "0", "fuelLevelPct": "0", "ahl": "0", "fuelEnCns": "0", "trunIndrLe": "0", "trunIndrRi": "0", "afs": "0", "dbl": "0", "avgSpeed": "20", "posLiFrnt": "0", "reverseLi": "0", "hwl": "0", "reFog": "0", "flash": "0", "allwl": "0", "fuelEnCnsFild": "0" }, "trailerStatus": { "trailerTurningLampSts": "0", "trailerFogLampSts": "0", "trailerBreakLampSts": "0", "trailerReversingLampSts": "0", "trailerPosLampSts": "0" }, "climateStatus": { "drvHeatSts": "0", "winPosDriver": "0", "rrVentDetail": "0", "rlVentSts": "0", "passVentSts": "0", "interiorTemp": "27.600", "passVentDetail": "0", "sunroofPos": "101", "cdsClimateActive": "false", "sunroofOpenStatus": "1", "rrHeatingDetail": "0", "winStatusPassenger": "2", "fragActive": false, "winStatusDriver": "2", "drvVentSts": "0", "winStatusPassengerRear": "2", "sunCurtainRearOpenStatus": "1", "preClimateActive": false, "rlHeatingDetail": "0", "winPosPassengerRear": "0", "curtainPos": "101", "rlVentDetail": "0", "curtainOpenStatus": "1", "climateOverHeatProActive": "false", "rrVentSts": "0", "rrHeatingSts": "0", "winPosPassenger": "0", "steerWhlHeatingSts": "0", "drvVentDetail": "0", "winPosDriverRear": "0", "exteriorTemp": "25.000", "rlHeatingSts": "0", "winStatusDriverRear": "2", "defrost": "false", "drvHeatDetail": "0", "passHeatingDetail": "0", "airBlowerActive": "false", "sunCurtainRearPos": "101", "passHeatingSts": "0" }, "drivingSafetyStatus": { "doorLockStatusDriverRear": "1", "srsCrashStatus": "0", "doorOpenStatusPassengerRear": "0", "doorOpenStatusDriver": "0", "seatBeltStatusPassenger": "false", "doorPosDriver": "0", "seatBeltStatusThPassengerRear": "false", "electricParkBrakeStatus": "1", "doorLockStatusDriver": "1", "seatBeltStatusThDriverRear": "false", "tankFlapStatus": "2", "seatBeltStatusPassengerRear": "false", "doorOpenStatusPassenger": "0", "doorPosPassenger": "0", "vehicleAlarm": { "alrmTrgSrc": "0" }, "centralLockingStatus": "2", "seatBeltStatusDriver": "false", "doorLockStatusPassenger": "1", "seatBeltStatusMidRear": "false", "trunkLockStatus": "1", "seatBeltStatusDriverRear": "false", "engineHoodOpenStatus": "0", "doorOpenStatusDriverRear": "0", "doorLockStatusPassengerRear": "1", "privateLockStatus": "0", "trunkOpenStatus": "0" }, "pollutionStatus": { "interiorSecondPM25Level": "0", "interiorPM25Level": "0", "relHumSts": "80", "exteriorPM25Level": "0" } }, "temStatus": { "swVersion": null, "serialNumber": null, "powerSource": null, "networkAccessStatus": { "mobileNetwork": null, "simInfo": { "iccId": null, "imsi": null, "msisdn": null } }, "mcuVersion": null, "mpuVersion": null, "backupBattery": { "stateOfCharge": null, "stateOfHealth": null, "voltage": null }, "hwVersion": null, "powerMode": null, "healthStatus": null, "imei": null, "state": null, "connectivityStatus": null } } }, "success": true, "hint": null, "httpStatus": "OK", "sessionId": "1ff44db24667e39d7xxxxxxxxxxx", "message": "operation succeed" }
Unlock Car
PUT https://api-vlv.ecloudeu.com/remote-control/vehicle/telematics/XXXXXXXXXXXXXX
{ "latest": false, "serviceParameters": [ { "key": "target", "value": "trunk" }, { "key": "door", "value": "all" } ], "userId": "XXXXXXXX", "serviceId": "RDU_2", "timestamp": "1719752348493", "creator": "tc", "command": "start" }
Lock Car
PUT https://api-vlv.ecloudeu.com/remote-control/vehicle/telematics/XXXXXXXXXXXXXX
{ "latest": false, "serviceParameters": [ { "key": "target", "value": "trunk" }, { "key": "door", "value": "all" } ], "userId": "XXXXXXXX", "serviceId": "RDL_2", "timestamp": "1719752348493", "creator": "tc", "command": "start" }
If anyone is available to explore this, I offer all the help I can. My discord: denkyem
This might be useful
https://github.com/DasBasti/SmartHashtag
I emailed Volvo developer.portal asking about API support and they mentioned this in their response: "We're excited to inform you that the EX30 data will be available soon. We are actively working on it and plan to provide an update after the summer vacation in week 33."
With week 33 ending today, has anyone heard anything more about this? Any life signs from Volvo?
There are some changes on the Volvo Public API for EX30 Since today, the Volvo2MQTT addon started to receive more information (Battery level, charging status, etc), unfortunately, services (lock/unlock, turn on AC) are not working yet
And the EEVEE app also start being compatible with EX30
Hi, I have a new Volvo EC40 (model 2025). I tested 'Volvo on call integration' but it does not (yet) recognise volvo EC40.
Just did a quick test through Postman and turning climatization on and unlocking doors seems to work now using https://api.volvocars.com
I just got my EX40 and also run into not being recognized. Hope the integration will be updated.
Same here: our new EX40 is not recognized. Are there other HA-integrations available, which can connect to the EX40? I read about EEVEE?
Same here: our new EX40 is not recognized. Are there other HA-integrations available, which can connect to the EX40? I read about EEVEE?
Works for me: https://github.com/Dielee/volvo2mqtt
There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.
Does this integration or the volvo2mqtt one support starting and stopping/pausing of the charge current charge? Still does not work for ex30 (tested today)
Same here, does not work for the model EX30.
There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.