MCPcopy Index your code
hub / github.com/TA2k/ioBroker.vw-connect

github.com/TA2k/ioBroker.vw-connect @v0.9.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.6 ↗ · + Follow
159 symbols 362 edges 16 files 28 documented · 18%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Logo

ioBroker.vw-connect

NPM version Downloads Dependency Status Known Vulnerabilities

NPM

Tests:: Travis-CI

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:

<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

Extension points exported contracts — how you extend this code

AdapterConfig (Interface)
(no doc)
lib/adapter-config.d.ts

Core symbols most depended-on inside this repo

request
called by 19
lib/tibber.js
setVehicleStatus
called by 11
main.js
refreshToken
called by 8
main.js
setSkodaESettings
called by 8
main.js
setIdRemote
called by 8
main.js
replaceVarInUrl
called by 7
main.js
setSeatCupraStatus
called by 7
main.js
genericRequest
called by 6
main.js

Shape

Method 115
Function 37
Class 6
Interface 1

Languages

TypeScript100%

Modules by API surface

main.js96 symbols
lib/euDataAct.js29 symbols
lib/tibber.js21 symbols
tools/buildEuDataActMaps.js5 symbols
lib/tools.js5 symbols
lib/extractKeys.js2 symbols
lib/adapter-config.d.ts1 symbols

For agents

$ claude mcp add ioBroker.vw-connect \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page