Closed hanzoh closed 3 years ago
Hopefully it will be possible to reverse engineer the app. I would gladly help in any way I can to make this library live on. Do you think you will try to fix it once it breaks @robinostlund ?
i think it should be possible, just hope that they have the same support for all the existing sensors etc that we have now :)
I have a trace of the Android app. But I have a vague memory that I read in another issue that someone started on a library based on the mobile api?
Den ons 14 apr. 2021 16:38robinostlund @.***> skrev:
i think it should be possible, just hope that they have the same support for all the existing sensors etc that we have now :)
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/robinostlund/volkswagencarnet/issues/111#issuecomment-819569299, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADYGJIMRHDKL66JULPERGTTIWSGBANCNFSM425ENRZQ .
I found the library. https://github.com/trocotronic/weconnect
Seems to work pretty well.
Fetching information of PASSAT (vin WVW.... )...
Model: PASSAT Va
Year: 2020
Model code: CB548T
Engine:
Combustion: True
Electric: False
Hybrid: False
GNC: False
Mobile key activated: None
eSIM compatible: True
Power layer: False
Member since: 21.12.2019
Contracts:
We Connect Plus, expires in 21.12.2022
We Connect, expires in 21.12.2049
Nödsamtalstjänst, expires in 13.02.2030
Latest report
Date: 14.04.2021 12:25
Mileage: 13.610 km
Next service: 242 Dag(ar) / 16.500 km (overdue False)
Next oil: 189 Dag(ar) / 14.300 km (overdue False)
Latest trip statistics:
Date: Igår, 12:24 km
Average speed: 27.0 km/h
Duration: 17 min
Distance: 7.0 km
Average Fuel Consumption 11.7 l
Are you sure it uses the mobile api? I only looked quick from my phone but it seems to use the website?
BASE_URL = 'https://www.portal.volkswagen-we.com'
Edit: I looked at the webapi file.
Are you sure it uses the mobile api? I only looked quick from my phone but it seems to use the website?
BASE_URL = 'https://www.portal.volkswagen-we.com'
Edit: I looked at the webapi file.
Ah, I think the example actually uses the webapi. But there is a nativeapi file also. I'll give it a try also.
I tried to trace the iOS App with Charles, but it seems it does not support HTTP/2 or it was not correctly updated for iOS 14. I found this guide, but Frida requires a jailbroken iPhone to attach to an App: https://andydavies.me/blog/2019/12/12/capturing-and-decrypting-https-traffic-from-ios-apps/
When I tried a Jailbreak on iOS 14.2 or 14.3 (can't remember), the We Connect App gave some warnings that it would not support unlocking etc when used on a jailbroken device. Maybe tracing Android is much easier and someone has the tools for it.
I have not tested this library yet, but the URLs used here look identical to what I found already with Charles: https://github.com/trocotronic/weconnect/blob/master/NativeAPI.py
Would it be possible to setup a separate WiFi SSID with an in-line tap to then use something like wireshark on? Happy to give it a go - will need to get an older phone (Android) and wipe to try and reduce the noise.
How would we go about tracing with Android? If you can point me in the right direction I'll take a look. I can't root my phone though, but could an older one.
Would it be possible to setup a separate WiFi SSID with an in-line tap to then use something like wireshark on? Happy to give it a go - will need to get an older phone (Android) and wipe to try and reduce the noise.
How would we go about tracing with Android? If you can point me in the right direction I'll take a look. I can't root my phone though, but could an older one.
If you have an Android device with Android 10 or older you can use two apps in combination, without having to root (which WeConnect actually detects)
First the http sniffer HttpCanary https://play.google.com/store/apps/details?id=com.guoshi.httpcanary
And then parallel space which acts like a virtual space where you can install apps in a sandbox environment. https://play.google.com/store/apps/details?id=com.lbe.parallel.intl
Install WeConnect in parallel space and target parallel space in HttpCanary for sniffing traffic.
Login to WeConnect in parallel space and all encrypted traffic will be visible.
Tried this on my Wife's phone, running Android 7. Had mixed luck - We Connect was very unstable.
Gave it a go on my Android 11 phone using NetCapture (https://play.google.com/store/apps/details?id=com.minhui.networkcapture&hl=en_US&gl=US) without Parallel Space - had to manually export & import the VPN cert to make it work. Turned on a filter for only WeConnect assuming it doesn't spawn / use anything else. Spent about 30 minutes trying different functions, lock / unlock, flash lights, update status, etc. From the logs I can see connections to:
api-dcrm-service.volkswagen.net cdn.emea.vwapps.io customer-profile.apps.emea.vwapps.io () e2ed-sensor.apps.emea.vwapps.io () identity.vwgroup.io mal-1a.prd.ece.vwg-connect.com mal-3a.prd.eu.dp.vwg-connect.com mbboauth-1d.prd.ece.vwg-connect.com msg.volkswagen.de () shop.volkswagen-we.com tokenrefreshservice.apps.emea.vwapps.io* () userinformationservice.apps.emea.vwapps.io () usermanagementservice.apps.emea.vwapps.io ()
And our friends at Google: clients4.google.com maps.googleapis.com
The bold lines are where they match the list in the first post. The normal text are new. () SSL certs have a SAN of: .emea.vwapps.io, .apps.emea.vwapps.io, .sys.emea.vwapps.io (**) SSL cert has a SAN of: www.msg.volkswagen.de
Interesting is: Post 1: fal-3a.prd.eu.dp.vwg-connect.com My test: mal-3a.prd.eu.dp.vwg-connect.com
Makes me wonder if this named differently for different regions? Could be multiple servers behind a load-balancer? Think we need more people to run the test - I'm in the UK.
Tomorrow is the day :/
Lets see what happeneds.
@JohNan had hopes for debugging this in BlueStacks but the We Connect app crashes :/
I have tried the python module that I referred to and I am able to fetch my car data. But it is a bit of work to parse and find all values that we currently have, if they are available at all, and my time is somewhat limited. But I think the library can be a goos starting point. Either ask the person behind it to join us, we fork it or use it as inspiration.
here's some output and I have noticed that the difference between mal
and fal
servers (at least in my case) is that the fal
server have more updated data. mal
lagged behind several days.
{
"vin":"WVWZZZ.....",
"vehicleData":{
"data":[
{
"id":"0x0101010001",
"field":[
{
"id":"0x0101010001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"echo"
}
]
},
{
"id":"0x0202FFFFFF",
"field":[
{
"id":"0x020203A201",
"tsCarSentUtc":"2021-04-24T08:06:37Z",
"tsCarSent":"2021-04-24T10:06:30",
"tsCarCaptured":"2021-04-22T12:20:55",
"tsTssReceivedUtc":"2021-04-24T08:06:43Z",
"milCarCaptured":13654,
"milCarSent":13663,
"textId":"warning.msgA201"
}
]
},
{
"id":"0x0203FFFFFF",
"field":[
{
"id":"0x0203010001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"-14300",
"unit":"km",
"textId":"interval.oil.distance"
},
{
"id":"0x0203010002",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"-180",
"textId":"interval.oil.time"
},
{
"id":"0x0203010003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"-16400",
"unit":"km",
"textId":"interval.inspection.distance"
},
{
"id":"0x0203010004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"-231",
"textId":"interval.inspection.time"
}
]
},
{
"id":"0x0204FFFFFF",
"field":[
{
"id":"0x0204040001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"1.0",
"unit":"l"
},
{
"id":"0x0204040003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"50.0",
"unit":"%",
"textId":"oil.level"
},
{
"id":"0x0204040004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"0",
"textId":"oilDisplay.0"
},
{
"id":"0x02040C0001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-25T18:32:35",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13681,
"milCarSent":13689,
"value":"5000",
"unit":"km"
}
]
},
{
"id":"0x0301FFFFFF",
"field":[
{
"id":"0x0301010001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2",
"textId":"status_parking_light_off"
},
{
"id":"0x0301020001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2791",
"unit":"dK",
"textId":"temperature_outside_valid"
},
{
"id":"0x0301030001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"parking_brake_inactive"
},
{
"id":"0x0301030003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%",
"textId":"bem_ok"
},
{
"id":"0x0301030004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"km/h",
"textId":"speed_ok"
},
{
"id":"0x0301030005",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"840",
"unit":"km",
"textId":"range_ok"
},
{
"id":"0x0301030006",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"840",
"unit":"km",
"textId":"range_ok"
},
{
"id":"0x0301030007",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"5",
"textId":"engine_type_diesel"
},
{
"id":"0x0301030008",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"textId":"range_error"
},
{
"id":"0x0301030009",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"engine_type_unsupported"
},
{
"id":"0x030103000A",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"99",
"unit":"%",
"textId":"fuel_level_ok"
},
{
"id":"0x030103000B",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"fuel_level_calculated"
},
{
"id":"0x030103000D",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%",
"textId":"gas_level_ok"
},
{
"id":"0x0301040001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2",
"textId":"door_locked"
},
{
"id":"0x0301040002",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_closed"
},
{
"id":"0x0301040003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2",
"textId":"door_safe"
},
{
"id":"0x0301040004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x0301040005",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x0301040006",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x0301040007",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2",
"textId":"door_locked"
},
{
"id":"0x0301040008",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_closed"
},
{
"id":"0x0301040009",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"2",
"textId":"door_safe"
},
{
"id":"0x030104000A",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x030104000B",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x030104000C",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"door_invalid"
},
{
"id":"0x030104000D",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_unlocked"
},
{
"id":"0x030104000E",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_closed"
},
{
"id":"0x030104000F",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_unsafe"
},
{
"id":"0x0301040010",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_unlocked"
},
{
"id":"0x0301040011",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_closed"
},
{
"id":"0x0301040012",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"door_unsafe"
},
{
"id":"0x0301050001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"window_closed"
},
{
"id":"0x0301050002",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%"
},
{
"id":"0x0301050003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"window_closed"
},
{
"id":"0x0301050004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%"
},
{
"id":"0x0301050005",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"window_closed"
},
{
"id":"0x0301050006",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%"
},
{
"id":"0x0301050007",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"3",
"textId":"window_closed"
},
{
"id":"0x0301050008",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"unit":"%"
},
{
"id":"0x0301050009",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"window_unsupported"
},
{
"id":"0x030105000B",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"window_unsupported"
},
{
"id":"0x030105000D",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"window_unsupported"
},
{
"id":"0x030105000F",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"0",
"textId":"window_unsupported"
},
{
"id":"0x0301050011",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"window_invalid"
},
{
"id":"0x0301060001",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060002",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060003",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060004",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060005",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060006",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060007",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060008",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x0301060009",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000A",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000B",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000C",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000D",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000E",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
},
{
"id":"0x030106000F",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"1",
"textId":"tyre_invalid"
}
]
},
{
"id":"0x0101010002",
"field":[
{
"id":"0x0101010002",
"tsCarSentUtc":"2021-04-26T14:32:06Z",
"tsCarSent":"2021-04-26T16:32:03",
"tsCarCaptured":"2021-04-26T16:32:03",
"tsTssReceivedUtc":"2021-04-26T14:32:07Z",
"milCarCaptured":13689,
"milCarSent":13689,
"value":"13689"
}
]
}
]
}
}
And for reference, I have a complete dump (request/response) och the traffic from the app, from login to completely loaded. I can dump more traffic if needed.
I also had a look at the native API of the python library that @JohNan refers to. It looks very promising as a starting point. It grabs my vehicle data quickly, which looks correct and up-to-date. I am able to start and stop the climatisation, and probably also the charging (my cable is not connected at the moment). The current range appears correct. At least for me, these are the top priorities. But there is a large amount of other data available as well, so it seems quite possible to retain most of the current functionality.
And now the web interface appears to have been closed. The native version of https://github.com/trocotronic/weconnect still works fine though. So I agree that this could be a good starting point for an updated integration.
Do you need more example data for other cars? I can try with my Tiguan with combustion engine. I would be happy to help with more stuff to the best of my abilities if pointed in the right way. Have anyone began to try to switch the used endpoints?
what about that one: https://github.com/lendy007/homeassistant-skodaconnect .... This is fork of robinostlund/homeassistant-volkswagencarnet modified to support Skoda Connect/MySkoda through native app API (API calls directly to vwg-connect services)
PRE-Release skodaconnect-1.0.40rc2 locks like most work is already done if you check connection.py
... """Communicate with Skoda Connect services.""" """Fork of https://github.com/robinostlund/volkswagencarnet""" """Modified to utilize API calls derived from Android Apps instead of Web API"""
Do you need more example data for other cars? I can try with my Tiguan with combustion engine. I would be happy to help with more stuff to the best of my abilities if pointed in the right way. Have anyone began to try to switch the used endpoints?
I can supply example data for e-Golf. I made a really ugly temporary emergency fix for my setup, based on the native API and mqtt. But I haven't looked into adapting the volkswagencarnet component, and will probably not have time for that in the near time (I might also have some conflicts of interest due to my job). But I can surely help out with testing stuff if needed.
what about that one: https://github.com/lendy007/homeassistant-skodaconnect .... This is fork of robinostlund/homeassistant-volkswagencarnet modified to support Skoda Connect/MySkoda through native app API (API calls directly to vwg-connect services)
PRE-Release skodaconnect-1.0.40rc2 locks like most work is already done if you check connection.py
... """Communicate with Skoda Connect services.""" """Fork of https://github.com/robinostlund/volkswagencarnet""" """Modified to utilize API calls derived from Android Apps instead of Web API"""
Ping @robinostlund @JohNan ... this might be something that we just can commit and make a few changes on?
@matlimatli Could you maybe share this emergency fix somewhere? :)
I have just received an email that VW will shut down the We Connect Portal in favor of myVolkswagen. This new service only features a small subset of the functionality that the We Connect Portal offered (translated from DE to EN):
So I guess this means the end of your excellent library as it works today. I did a quick trace of what the iOS app contacts by using Charles Proxy:
https://tokenrefreshservice.apps.emea.vwapps.io https://consent.vwgroup.io https://mbboauth-1d.prd.ece.vwg-connect.com https://customer-profile.apps.emea.vwapps.io https://vum.apps.emea.vwapps.io https://profileintegrityservice.apps.emea.vwapps.io https://msg.volkswagen.de https://mal-1a.prd.ece.vwg-connect.com https://fal-3a.prd.eu.dp.vwg-connect.com https://identity.vwgroup.io https://cdn.emea.vwapps.io
Maybe your library can mimic the iOS app's behavior?