Skip to content

Repository files navigation

BavarianData logo

BavarianData: Connect Home Assistant to BMW CarData

Bring your BMW's live data into Home Assistant — straight from BMW CarData, no third-party cloud in between.


BMW CarData is BMW's own telematics service: an MQTT stream that pushes vehicle data in real time and a REST API for on-demand snapshots. This integration talks to both directly, using your personal BMW client ID. There is no intermediate server and no MyBMW screen-scraping — Home Assistant is the only client, and it's read-only (CarData cannot command the car).

Every descriptor BMW sends becomes a native entity — charge level, doors, tyre pressures, the 12 V battery — each with a proper device class, unit and translated states. On top of that the integration derives a charging history & cost ledger, battery-health learning, a trip journal, long-term statistics for the Energy dashboard, and CSV/PDF export — all from the stream, spending no API quota. A bundled Lovelace card and a cached vehicle image give you a usable dashboard out of the box.

Bundled Lovelace card showing a BMW i5 eDrive40 with charge level, range, charging status and odometer

Security & closures card with a top-down car diagram, anti-theft alarm armed and all closures closed    Tyre pressure card flagging slightly high pressures on all four tyres on a top-down car diagram

Status — actively developed. A spare-time project, verified against a limited number of vehicles and Home Assistant versions, so expect the odd rough edge on a model it hasn't met yet. It is read-only by design — CarData cannot command the car — so treat what it reports as informational rather than as the trigger for a safety-critical automation. Track main; other branches may be broken at any time.

📖 Full documentation → the Wiki

The complete manual — every screen, card view, setting, service and feature — lives in the Wiki. This README is the quick overview.

Requirements

  • A BMW account with a vehicle that supports CarData.
  • CarData API and CarData Streaming subscribed in the BMW portal, and a client ID generated for this integration.
  • Home Assistant 2026.3 or newer, with HACS.

Quick start

Four steps — the Wiki has the detail and screenshots for each.

  1. Set up BMW CarData in the portal — generate a client ID and give it both scopes (cardata:api:read and cardata:streaming:read). Don't touch Data Selection yet.
  2. Install via HACS — add this repo as a custom repository (category Integration), install, and restart Home Assistant.
  3. Add & authorizeSettings → Devices & Services → Add Integration → BavarianData, paste the client ID, and approve the device on BMW's site. If BMW says access denied even though your login worked, that's a known BMW-side quirk with a workaround.
  4. Choose which data to stream — pick your clusters. Guided setup then turns the fields on with a one-click Activate BMW data bookmarklet; manual setup hands you a browser-console snippet to paste into the portal's Data Selection instead. Either way, save and trigger a lock/unlock to prompt the first update.

Activating stream fields in one call (advanced)

Stream selection ("Datenauswahl") has no CarData API. Guided setup and Configure → Choose streamed data hide this behind the one-click Activate BMW data bookmarklet, which flips the fields on for you in the browser. If you instead want to drive it yourself, the bavariandata.activate_stream_fields service replays the exact request the portal sends when you save, replacing the whole selection in one call. Because that endpoint authenticates with your browser session (not the integration's token, and behind BMW's bot-defense), you supply a captured portal session — a manual, occasional tool that spends no API quota. See Services → activate_stream_fields.

Contributing & support

  • Bugs in the integration → Issues.
  • BMW-side registration trouble, setup help, or general questions → Discussions.

The descriptor catalogue, metadata, translations and reference docs are all generated from BMW's exports by the pipeline in tools/ — see tools/README.md before hand-editing any generated file.

Credits & license

Released under the MIT License. This integration began as a continuation of the public-domain bmw-cardata-ha by JjyKsi; that project carried no licensing restrictions, and the original author is credited in NOTICE out of respect for their work.

"BMW", "Mini", "Rolls-Royce", and "CarData" are trademarks of their respective owners. This is an independent, community-built integration and is not affiliated with, endorsed by, or sponsored by BMW Group. Use at your own risk; see the warranty disclaimer in the LICENSE.

About

A Home Assistant integration that connects directly to BMW CarData — MQTT stream + REST API — turning your BMW's data into native entities.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages