---
title: "BavarianData: Connect Home Assistant to BMW CarData"
description: "BavarianData: Connect Home Assistant to BMW CarData is a Marketplace integration for Home Assistant. It has 397 installs sharing analytics, needs the vendor's cloud and was last updated October 26, 2026."
canonical: "https://vulpo.app/integrations/marketplace/justchr-bavariandata"
url: "https://vulpo.app/integrations/marketplace/justchr-bavariandata.md"
last-updated: "2026-10-27"
version: "1.4"
---

# BavarianData: Connect Home Assistant to BMW CarData

> BavarianData: Connect Home Assistant to BMW CarData is a Marketplace integration for Home Assistant. It has 397 installs sharing analytics, needs the vendor's cloud and was last updated October 26, 2026.

BavarianData: Connect Home Assistant to BMW CarData brings live BMW and MINI vehicle data into Home Assistant. It reads BMW's cloud through a live MQTT stream and a REST API using a personal client ID, and it is read-only, so it cannot command the car. Each descriptor BMW sends becomes an entity, shown as sensors, binary sensors, a location tracker, a service calendar and a vehicle image. On top of that it derives a charging history with costs, battery health, a trip journal, a measured real-range figure and long-term statistics for the Energy dashboard. It can publish the state of charge over MQTT for evcc or openWB, offers device triggers for charging, parking and trip events, and exports history as CSV or printable HTML. Setup runs through the Home Assistant interface after a client ID is created in the BMW portal.

Automatic summary of the README and code of JustChr/BavarianData. Something wrong, or are you the maintainer and want your own text here? [Get in touch](https://vulpo.app/contact)

[Open in My Home Assistant](https://my.home-assistant.io/redirect/hacs_repository/?owner=JustChr&repository=BavarianData&category=integration)

On Home Assistant 2026.11 or newer? [Open it in the Marketplace](https://my.home-assistant.io/redirect/marketplace_repository/?owner=JustChr&repository=BavarianData&category=integration)

## Supports

- **Uses the vendor's cloud**: Needs an internet connection and an account with the vendor.
- **Device triggers**: Its devices can start automations directly.
- **From the Marketplace**: Installed through the Marketplace, formerly HACS.
- **Actively maintained**: Its author released or pushed a change in the last six months.

## Setting it up

Install it from the Marketplace and restart Home Assistant, then add it under Settings, Devices and services.

### Connect BMW CarData

- **Client ID**: The CarData Client ID from the BMW portal — a long string that looks like a UUID.

### Activate your data, then paste the result

- **Setup result**: The BAVARIANDATA… text the Copy button put on your clipboard.

### Choose streamed data

- **Data clusters**: Leave the defaults for the recommended set, or tailor it to just the data you care about (e.g. only Electric vehicle and Vehicle status).

### Activate your data, then paste the result

- **Activation result**: The BAVARIANDATA… text the Copy button put on your clipboard. Leave it empty to finish without activating.

### Change Client ID

- **Client ID**: The Client ID of a CarData Client in the BMW portal, subscribed to CarData API and CarData Streaming.

### After setup

- **Data clusters**: Leave the defaults for the recommended set, or tailor it to just the data you care about (e.g. only Electric vehicle and Vehicle status).
- **Activation result**: The BAVARIANDATA… text the Copy button put on your clipboard.
- **Picture source**: Official: one side view, 1 of your 50 daily BMW requests per car. Configurator: your exact car in 360° with its real paint, no requests, but an unofficial BMW service that may stop working.
- **Vehicle**: The next screen starts with this vehicle's own settings.
- **Price source**: None records sessions without costs. Fixed price bills every kWh at one rate; Price entity follows a live tariff (Tibber, Nordpool, …) while the car charges.
- **Fixed price per kWh**: Only used when the price source is 'Fixed price'.
- **Price entity**: Only used when the price source is 'Price entity'. Its state must be a price per kWh.
- **Currency**: ISO code shown on the cost sensors, e.g. EUR, GBP, CHF.
- **Wallbox energy sensor**: Optional. Your wallbox's lifetime energy total, one that only counts up. Read for charges in your Home zone only. A measured figure beats the battery-side estimate and also sharpens the charge estimate at home.
- **Charging losses (%)**: Optional. Energy is measured at the battery, a little below what the grid delivered; this grosses it up. Leave it at 0 if you have a wallbox meter.
- **Keep history for (months)**: 0 keeps everything. Sessions older than this are discarded.
- **Publish to long-term statistics**: Mirrors energy, cost and distance into statistics you can add to the Energy dashboard. Stays local; turning it off deletes them again.
- **Remember charging locations**: Optional. Saves where each charge happened, so the card can show your charging places on a map. Writes coordinates to disk; turning it off deletes them. From the next charge on.
- **Price source**: None records sessions without costs. Fixed price bills every kWh at one rate; Price entity follows a live tariff (Tibber, Nordpool, …) while the car charges.
- **Fixed price per kWh**: Only used when the price source is 'Fixed price'.
- **Price entity**: Only used when the price source is 'Price entity'. Its state must be a price per kWh.
- **Currency**: ISO code shown on the cost sensors, e.g. EUR, GBP, CHF.
- **Keep history for (months)**: 0 keeps everything. Sessions older than this are discarded.
- **Publish to long-term statistics**: Mirrors energy, cost and distance into statistics you can add to the Energy dashboard. Stays local; turning it off deletes them again.
- **PV power**: Total generation from your inverter(s).
- **Grid power (+ import / − export)**: Signed power at the meter: positive while drawing from the grid, negative while exporting.
- **House battery power (optional)**: Leave empty if you have no home storage. Expected positive while discharging — tick the box below if yours is the other way round.
- **My battery sensor is positive when charging**: Many integrations publish battery power positive while charging. There is no way to tell from the value itself, so say which yours is.
- **Value of own solar per kWh**: Leave empty to cost solar at the import price. Set it to your feed-in tariff to see what a charge really cost you.
- **Vehicle**: The next screen starts with this vehicle's own settings.
- **Publish this car to MQTT**: Off by default: it puts the VIN and the car's state on a broker other things can read.
- **Topic prefix**: Topics become PREFIX/VIN/soc and so on. Leave it as bavariandata unless it clashes with something.
- **Publish retained**: Keep this on: it lets evcc find the state of charge the moment it starts. Turn it off only if your broker refuses retained messages.
- **Topic prefix**: Topics become PREFIX/VIN/soc and so on. Leave it as bavariandata unless it clashes with something.
- **Publish retained**: Keep this on: it lets evcc find the state of charge the moment it starts. Turn it off only if your broker refuses retained messages.

Texts from the code of [JustChr/BavarianData](https://github.com/JustChr/BavarianData).

## Entities

- **Binary sensors**: Charging Port connection state, Charging Port plug (DC) state, Charging Port plug post-charge lock state, Charging Port session ID, Charging Port plug lock state, Charging Port plug event ID, Charging Port plug state, Charging Port state text, Charging Port flap lock, Charging Port flap permanent lock state, Hood state, Vehicle Lights state, and 284 more
- **Calendars**: Service Calendar
- **Presence**: Location
- **Images**: Vehicle Image
- **Sensors**: Charging Port connection state, Charging Port plug (DC) state, Charging Port plug post-charge lock state, Charging Port session ID, Charging Port plug lock state, Charging Port plug event ID, Charging Port plug state, Charging Port state text, Charging Port flap lock, Charging Port flap permanent lock state, Hood state, Vehicle Lights state, and 306 more

## Actions

- **Fetch telematic data**: Fetch telematic data for every vehicle on the account using the stored containers and log the response. Two requests per vehicle.
  Fields: Vehicle, Config entry, VIN
- **Fetch vehicle mappings**: Fetch mapping information for the configured account and log the response.
  Fields: Account, Config entry
- **Fetch basic vehicle data**: Fetch static vehicle metadata (model name, series, etc.) for a VIN and log the response.
  Fields: Vehicle, Config entry, VIN
- **Fetch charging history**: Fetch the charging session history for a VIN (paginated) from BMW and import it into the local history, so past charges appear on the card and in the monthly summaries. Overlapping live-recorded sessions are enriched in place with BMW's measured grid energy. Counts as one or more API calls against the 50/24h quota.
  Fields: Vehicle, Config entry, VIN, From, To
- **Fetch smart maintenance tire diagnosis**: Fetch the smart-maintenance tire diagnosis for a VIN and log the response.
  Fields: Vehicle, Config entry, VIN
- **Fetch location-based charging settings**: Fetch the location-based charging settings for a VIN (paginated) and log the response.
  Fields: Vehicle, Config entry, VIN
- **Fetch vehicle image**: Fetch the vehicle image for a VIN and log its size/content type.
  Fields: Vehicle, Config entry, VIN
- **Get charging sessions**: Return recorded charging sessions, newest first. Reads the integration's own history, so unlike the fetch actions it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN, From, To, Limit
- **Get charging places**: Return the places a car has charged at, most visited first, with the average power and typical stop at each. Reads the integration's own history, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN, From, To
- **Get trips**: Return recorded trips, newest first. Reads the integration's own history, so like the charging sessions it costs no BMW API quota. Endpoints are stored as place names, never coordinates. A drive still under way is returned separately as open trips (it has no end, and its distance is provisional) unless a from/to window was given.
  Fields: Vehicle, Config entry, VIN, From, To, Limit
- **Get driving summary**: Return the month-in-review aggregation for trips: distance, the business/private/commute split, consumption, recuperation, driving-style score, top destinations and (with a tariff) an estimated driving cost. Reads the local store, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN, Month
- **Get mileage report**: Return how far the car is driven (this month, this year, the last 12 months, its pace) and, with a mileage allowance, where it stands against it. Reads the local store, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN
- **Get efficiency and real range**: Return measured consumption (kWh/100 km), the real range it implies at the current state of charge, the charging loss between the grid and the battery, and a month-by-month efficiency trend. Everything is derived from the charging ledger, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN
- **Get fuel history**: Return a petrol, diesel or plug-in hybrid car's refuels, read off its tank level, with the fuel consumption between them, the average over the last year, and BMW's lifetime consumption figures where the car sends them. Costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN
- **Get evcc configuration**: Return the evcc 'custom' vehicle configuration for this car, ready to paste into evcc.yaml, along with the MQTT topics the bridge publishes and which of them are currently live. Reads local state only, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN
- **Set trip classification**: Override a trip's classification (business, private or commute). Use this to correct the automatic zone-pair guess. Writes the local store only.
  Fields: Vehicle, Config entry, VIN, Trip ID, Classification
- **Mark trip start**: Note that a drive is starting now, for a car that reports only once parked: the trip its next report ends then starts at this time. Used only when Trip detection is set to End-of-trip reports. Writes the local store only.
  Fields: Vehicle, Config entry, VIN, Time
- **Export history**: Return one month of recorded charging sessions and/or trips as files: CSV for spreadsheets, or a self-contained HTML report you can print to PDF from the browser. The file contents come back in the response; nothing is written to disk. Reads the local store, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN, Month, Type, Format, Language
- **Get descriptor coverage report**: Run the descriptor-coverage self-test: for each vehicle, compare the descriptors your selected stream clusters should deliver against those that have actually arrived, and list any that are missing. Answers "I enabled a cluster but no entities appeared -- is it my selection, my car, or a bug?". Reads the local store and live stream only, so it costs no BMW API quota.
  Fields: Vehicle, Config entry, VIN
- **Activate stream fields**: Replace which CarData attributes BMW streams over MQTT for a vehicle, by sending the same request the BMW portal's stream-setup page sends when you save the data selection. Stream selection has no CarData API, so this needs a captured portal browser session (it cannot be refreshed automatically -- the session is short-lived). Costs no BMW API quota. Returns the requested/accepted attribute counts.
  Fields: Account, Config entry, Portal base URL, Locale, Mapped vehicle ID, Cookie header, Attributes, Sections

## Troubleshooting

- **Diagnostics**: Downloads a diagnostics file to attach to a bug report.
- **Repair notices**: Notices it can show in Settings, Repairs:
  BMW motorcycles can't stream their data, A selected data cluster has never streamed, Is no longer on your BMW account

## From the README

> Bring your BMW's or MINI'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).

From the README of [JustChr/BavarianData](https://github.com/JustChr/BavarianData#readme), [MIT License](https://spdx.org/licenses/MIT.html). Shortened.

## At a glance

- Kind: Marketplace integration
- Category: [Vehicles and transport](https://vulpo.app/integrations/category/vehicles-and-transport.md), Cars and EVs
- Number: 397 installs sharing analytics; 22 GitHub stars
- Connection: Needs the vendor's cloud
- Upkeep: Updated in the last 6 months
- Needs: Needs the Marketplace (HACS on 2026.10 and older)
- Latest version: v0.9.23, last updated October 26, 2026
- Domain: `bavariandata`
- Source: <https://github.com/JustChr/BavarianData>
- Issues: <https://github.com/JustChr/BavarianData/issues>
- Screenshot: https://vulpo.app/integrations-img/1290283bae55357b.webp (from JustChr/BavarianData's README)
- Screenshot: https://vulpo.app/integrations-img/c379f4f021b598c7.webp (from JustChr/BavarianData's README)
- Screenshot: https://vulpo.app/integrations-img/378ade2b8527c537.webp (from JustChr/BavarianData's README)

In Vulpo: Calendar card, Chart card, Apple Watch

Independent directory, made by the developer of Vulpo. Not affiliated with Home Assistant or the Open Home Foundation. [About these numbers](https://vulpo.app/integrations/about)

Last updated 2026-10-27. Source: https://vulpo.app/integrations/marketplace/justchr-bavariandata

---

- HTML version of this page: https://vulpo.app/integrations/marketplace/justchr-bavariandata
- Site index for agents: https://vulpo.app/llms.txt
- Everything in one document: https://vulpo.app/llms-full.txt
- All pages: https://vulpo.app/sitemap.xml
