![Logo](admin/vw-connect.png)

# ioBroker.vw-connect

[![NPM version](http://img.shields.io/npm/v/iobroker.vw-connect.svg)](https://www.npmjs.com/package/iobroker.vw-connect)
[![Downloads](https://img.shields.io/npm/dm/iobroker.vw-connect.svg)](https://www.npmjs.com/package/iobroker.vw-connect)
[![Dependency Status](https://img.shields.io/david/ta2k/iobroker.vw-connect.svg)](https://david-dm.org/ta2k/iobroker.vw-connect)
[![Known Vulnerabilities](https://snyk.io/test/github/ta2k/ioBroker.vw-connect/badge.svg)](https://snyk.io/test/github/ta2k/ioBroker.vw-connect)

[![NPM](https://nodei.co/npm/iobroker.vw-connect.png?downloads=true)](https://nodei.co/npm/iobroker.vw-connect/)

**Tests:**: [![Travis-CI](http://img.shields.io/travis/ta2k/ioBroker.vw-connect/master.svg)](https://travis-ci.org/ta2k/ioBroker.vw-connect)

## vw-connect adapter for ioBroker

Adapter for VW We Connect, We Connect ID, We Charge, myAudi, Skoda Connect, Seat Connect and We Connect Go

Please update your system on Node 10.
<https://forum.iobroker.net/topic/22867/how-to-node-js-f%C3%BCr-iobroker-richtig-updaten>

## Kurzfassung (Stand Juni 2026)

VW hat den klassischen App-Login für **VW ID, CUPRA und SEAT** abgeschaltet. Für diese Marken funktionieren nur noch zwei Wege — beide unten konfigurierbar, lassen sich auch parallel laufen:

- **EU Data Act Portal** — kostenlos, läuft automatisch nach einmaliger Browser-Aktivierung im Portal, liefert ein detailliertes Datenpaket aber **nur alle 15 Minuten** und ist in der Praxis **unzuverlässig**: das Auto liefert nur Daten wenn es gerade aktiv ist (fahren, laden, Klima), parkende Autos erzeugen leere Datasets. Außerdem hat das Portal selbst öfter 5xx-Aussetzer.
- **Tibber Data API (empfohlen)** — kostenlos, **liefert aktuelle Werte** (SoC, Reichweite, Lade-Status). **Man muss kein Tibber-Stromkunde sein**, nur einen Tibber-Account in der App anlegen. Beim Anlegen verlangt die App eine deutsche Adresse — die muss **nicht korrekt sein**, irgendeine plausible Straße/PLZ reicht. Dann das Fahrzeug in der App verbinden und einen OAuth-Client unter <https://data-api.tibber.com/clients/manage> registrieren (Details in der Adapter-UI).

Für die anderen Marken (Audi, MyŠKODA, Seat Elli, ŠKODA Powerpass, Audi DataPlug, ŠKODA Alt, VW Connect Go) funktioniert der klassische Login weiterhin.

## VW ID: EU Data Act portal is now the only data source (since 2026-06-01)

VW retired the classic VW-ID OAuth client (`a24fba63-...`) on **2026-06-01**. The IdP at `identity.vwgroup.io/oidc/v1/authorize` returns HTTP 403 with an Auth0 "tenant misconfiguration" error page for that client; the BFF mirror at `emea.bff.cariad.digital/auth/v1/idk/oidc/authorize` does the same. Other brand clients (Audi `cc29b87a-...`, Skoda `3ea88bf9-...`, Seat/Cupra `f85e5b69-...`, VW Passenger Cars EU-Data-Act `9b58543e-...`) are unaffected.

For `config.type === "id"` the adapter now skips the classic login entirely and relies on the **Tibber Data API (recommended)** or the EU Data Act portal. **You MUST set up at least one of those, otherwise no data flows.** See "Tibber Data API" and "EU Data Act portal" sections below.

## Cupra / SEAT: classic login disabled (since 2026-06-10)

The Cupra/SEAT OLA backend (`ola.prod.code.seat.cloud.vwgroup.com`) started enforcing **Firebase App Check** with the **Play Integrity** provider around 2026-06. Every API call now needs an `X-Firebase-AppCheck` header. Decompiled MyCupra 2.18.0 APK confirms: an OkHttp interceptor (`es.seat.ola.attestation.interceptor.AppCheckInterceptor`, Firebase project `ola-apps-prod`, app id `1:530284123617:android:9b9ba5a87c7ffd37fbeea0`) attaches the token automatically. Without it the server returns `403 Forbidden device detected, missing-device-token`.

Play Integrity tokens are generated by **Google Play Services on a real Android device** with the registered APK signing-cert SHA-256. A Node.js adapter cannot produce them — there is no documented bypass.

For `config.type === "seatcupra"` and `"seat"` the adapter now skips the classic login. **Use the Tibber Data API (recommended) or the EU Data Act portal** instead — both still work for Cupra and SEAT vehicles. See the sections below.

## Optional: EU Data Act portal as additional data source (since v0.9.0)

For all VW Group brands (VW, Audi, Škoda, Seat, Cupra) the adapter can **additionally** consume the continuous 15-minute datasets that VW publishes via the EU Data Act portal at <https://eu-data-act.drivesomethinggreater.com>. This is **optional** — the classic brand-specific login is the primary source and works on its own. The EU Data Act path adds a few hundred extra data points per dataset (mostly diagnostics, configuration and report fields) under `<vin>.statuseudata.*` (snake_case dotted names like `battery_state_report.soc`, `mileage.value`, `parking_brake`, `charging_state_report.current_charge_state`).

The same portal serves all brands — only the OIDC brand key differs. The adapter selects the right one based on your configured `type`:

| Adapter `type`                         | EU Data Act brand               |
|----------------------------------------|---------------------------------|
| `VW ID / Volkswagen App`               | `VOLKSWAGEN_PASSENGER_CARS`     |
| `Audi E-tron`, `Audi DataPlug`         | `AUDI`                          |
| `MyŠKODA`, `ŠKODA Alt`                 | `SKODA`                         |
| `My SEAT`                              | `SEAT`                          |
| `My CUPRA`                             | `CUPRA`                         |

To enable it you have to set up a continuous data request **once in a browser**; the adapter only downloads what the portal produces, it can't create the request for you. If you skip this step the adapter still works fine, the EU Data Act side just stays silent in the log.

### Setup the data request (one-time, in a browser)

1. Open <https://eu-data-act.drivesomethinggreater.com/> and **log in with your brand-specific account** (the same email/password you use in the Volkswagen / myAudi / MyŠKODA / SEAT Connect / MyCUPRA app and in this adapter's settings).
2. Go to **Data clusters → Vehicle overview**.
3. Click **Connect your car** if your VIN isn't already listed and follow the on-screen pairing/consent steps.
4. Klicke **Benutzerdefinierte Daten anfragen** ("Get customised data"). Hinweis vom Portal: es kann immer nur eine benutzerdefinierte Datenanfrage gleichzeitig aktiv sein.
5. **Vereinbarung gemäß Artikel 4 EU Data Act** ankreuzen ("Ich bestätige, dass ich die Vereinbarung gemäß Artikel 4 EU Data Act gelesen und akzeptiert habe.") → **Weiter**.
6. **Data Cluster auswählen**: **All data** anhaken ("All EU Data Act relevant data points"). Andere Cluster nur wenn du gezielt einschränken willst — picking only some restricts what `<vin>.statuseudata.*` will contain.
7. **Name des Datenpakets** vergeben (frei wählbar, z.B. "ioBroker"). Erscheint später als `_dataset_name`-Prefix in den Filenames.
8. **Frequenz wählen**: **Alle 15 Minuten**. Andere Optionen (täglich) liefern nicht genug Auflösung für Live-Werte.
9. **Dauer**: **Kein Enddatum** (fortlaufend ohne Enddatum).
10. Anfrage absenden. Datasets typically start appearing **15 minutes to a few hours** later. The first batch may show up as `*_no_content_found.zip` until your car wakes up. Force-syncing via the Volkswagen app or driving once kicks the producer side awake.

The adapter picks up the request automatically — no extra setting in ioBroker. As long as `type` is `VW ID / Volkswagen App` and your credentials match the portal, it polls the listing every minute and downloads only when a new ZIP appears.

Object tree per VIN once the EU Data Act side is active:

```text
<vin>.general.vin
<vin>.general.nickname
<vin>.general.licensePlate
<vin>.general.imageLocation
<vin>.statuseudata.battery_state_report.soc          (= 58 %)
<vin>.statuseudata.battery_state_report.charge_power (= 0.0 kW)
<vin>.statuseudata.charging_state_report.current_charge_state
<vin>.statuseudata.mileage.value
<vin>.statuseudata.parking_brake
<vin>.statuseudata.locked
<vin>.statuseudata._dataset_name
<vin>.statuseudata._dataset_created_on
... and many more (depending on the Data Clusters you ticked on the portal)
```

### Troubleshooting (EU Data Act only — these never block the classic flow)

- **`EU Data Act ... no data request configured`**: you haven't done the portal-side setup above. The classic login keeps working in the meantime.
- **`portal has N dataset(s) but all are '_no_content_found'`**: car was asleep at every sampling slot. Force-sync the car via the VW app, or just drive once.
- **`<vin>.statuseudata` channel is missing**: the portal has no content datasets yet — same fix as above.
- **HTTP 400 right after activation**: the portal is still provisioning your data request. Self-heals after a few hours.
- **Stale values**: the portal merges several report snapshots into one flat array per dataset. Where the same field appears multiple times with different values, the adapter deterministically picks the entry with the smallest UUID (stable across refreshes — same approach as the Home Assistant integration).
- **Reference implementation** (Home Assistant, Python): <https://github.com/mikrohard/hass-vw-eu-data-act>

## Usage

Use the state under remote control to control your car remotely.
Normale refresh is the polling interval to receive data from the VAG Cloud
Force refresh is for non E-Cars to enforce a refresh this number is limited by VAG until the car is turn on again.
Trip data is only available for non E-Cars.

You can set climatisaton temperature in
.climater.settings.targetTemperature.content

## Discussion and Questions

<https://forum.iobroker.net/topic/26438/test-adapter-vw-connect-für-vw-id-audi-seat-skoda>

## Status fields Explanation

### List of entries

```

```
### 0.9.6 (2026-06-27)
- EU Data parsing improved

### 0.9.5 (2026-06-13)
- Cupra app login disabled

### 0.9.4 (2026-06-06)
- add tibber support

### 0.9.3 (2026-05-31)
- improve eudata fetching

### 0.9.2 (2026-05-31)

- add eudata fetching support for seat, skoda and audi
- improve eudata fetching

### 0.9.1 (2026-05-30)

- fix normal login for VW and Audi
- add optional EU Data Act portal data flow

### 0.8.8 (2026-05-28)

- fix audi and vw login

### 0.8.7 (2026-05-27)
- fix audi login

### 0.8.6 (2026-05-27)
- fix id login

### 0.8.5 (2026-05-24)
- fix cupra

### 0.8.4 (2026-05-14)
- disable skoda mqtt

### 0.8.3 (2026-05-10)
- fix skoda mqtt

### 0.8.1 (2026-05-06)
- fix skoda mqtt

### 0.8.0 (2026-04-13)
- fix for seat cupra

### 0.7.16 (2026-03-18)
- fix myskoda mqtt connection

### 0.7.15 (2025-11-26)
- fix vw refresh token

### 0.7.14 (2025-11-25)
- fix vw id login

### 0.7.13 (2025-11-09)
- fix for skoda login

### 0.7.12 (2025-05-05)

- fix for skoda refresh token
- fix for ventilation activation
- add new not supported endpoints

### 0.7.9 (2025-03-20)

- fix for id wall charger

### 0.7.7 (2025-03-02)

- fix for skoda auxiliaryheating and duration
- fix for skoda lock/unlock

### 0.7.6 (2025-02-28)

- fix for charging status updates only at startup
- fix for skoda ismoving state

### 0.7.3 (2025-02-26)

- fix for set setTemperature
- fix for Skoda unlock lock

### 0.7.0 (2025-02-25)

- fix for skoda and seat
- State structure changed completly please delete old states under Objects

### 0.6.1 (2024-10-01)

- fix for skoda login

### 0.6.0 (2024-04-11)

- add additonal cupra states

### 0.5.4 (2024-03-17)

- fix door window states

### 0.4.1

- Fix VW Status Update

### 0.0.65

- Fix Cupra login

### 0.0.63

- Fix VW/Skoda etron login

### 0.0.62

- Fix Audi etron login

### 0.0.61

- Fix ID login

### 0.0.60

- Minor improvements. WeCharge Minimum interval is now 15 minutes

### 0.0.55

- fix id status update

### 0.0.51

- fix audi etron login

### 0.0.48

- fix login, fix audi update, add limit for wallbox

### 0.0.43

- increase refresh token timeouts

### 0.0.42

- fix skoda login

### 0.0.40

- add climate v3 for newer cars. Add Powerpass and Seat Elli

### 0.0.39

- fix id login

### 0.0.36

- add Skoda Enyaq support

### 0.0.35

- add nodeJS v10 compatibility

### 0.0.34

- add auto accept of new privacy consent

### 0.0.32

- correct selection of last recent trips

### 0.0.31

- enable multiple selection of trip types

### 0.0.30

- fix mutiple car problem, add VWv2 mode at the moment there is no different between VW and VWv2

### 0.0.29

- fix skoda refreshToken, smaller improvements

### 0.0.26

- bugfixes

### 0.0.25

- add we charge

### 0.0.24

- add remote state update

### 0.0.23

- add Seat and new climatisation v2

### 0.0.22

- calculate outside temperatur in °C also for Skoda and Audi

### 0.0.21

- add remotes for id

### 0.0.20

- fix audi login, add ID login

### 0.0.19

- save status objects in state by id instead of consecutive numbers

### 0.0.18

- fix battery status for 2020 models

### 0.0.17

- add support for 2020 models

### 0.0.16

- fix js.controller 3 problems

### 0.0.11

- fix audi bug with multiple vehicles
- hide status update error if feature is not available

## License

MIT License

Copyright (c) 2019-2030 ta2k <tombox2020@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
