-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Entities and Devices
Each VIN on your account becomes its own Home Assistant device. A separate integration-level "CarData Debug Device" carries the diagnostics entities (stream connection, quota, last-message timestamps).
Every descriptor BMW streams becomes a native entity:
- Streamed descriptors become sensors and binary sensors, named from a curated English title set (baked into the catalogue and the HA translations). German names ship too — open an issue or PR if a name looks off.
- Numeric fields get sensible device classes; distances use
device_class: distance, and odometer/mileage usesstate_class: total_increasingso long-term statistics work. - Every entity exposes its source timestamp plus its catalogue
clusterandcategoryas attributes — the dashboard card uses these to group values regardless of the user's HA language.
The full field-per-cluster catalogue lives in telematics-fields.md.
These aren't sent by BMW — the integration derives them. They are named from the integration's own translations (so German installs get German names too).
| Entity | What it is |
|---|---|
| Charged Energy (Total) | Monotonic kWh counter (device_class: energy, state_class: total_increasing). Add to the Energy dashboard. |
| Charged Energy (Session) | Resets at the start of each charging session. |
| Charging Energy (This Month) | Monthly charged-energy total. |
| Charging Cost (This Month) | Monthly cost — only once a price source is set. |
| Charging Cost (Last Session) | Cost of the most recent session — only with a price source. |
| Charging Cost per 100 km | Needs the odometer and two sessions to measure a distance. |
| Battery Health | Learned usable capacity (kWh), with vs-new %, sample count and a capacity-vs-mileage trend. |
| Driving Distance (This Month) | Monthly distance + business/private/commute split. |
| API Quota Remaining | Diagnostic: requests left in the 50/24 h window. |
| State-of-charge estimate / rate | Extrapolated SoC helpers (need the Electric vehicle cluster). |
| Stream Connection Status | Diagnostic: MQTT connection state. |
| Last Message Received | Diagnostic: timestamp of the last stream payload. |
| Last Telematics API Call | Diagnostic: timestamp of the last REST call. |
Each VIN also gets an image entity holding BMW's rendered picture of the car.
It is cached and survives restarts, so it doesn't burn quota on every boot;
refresh it manually with bavariandata.fetch_vehicle_image.
Each VIN gets a device_tracker ("car") carrying the vehicle's location from the GPS stream, usable on the HA map and in zone-based automations.
Entities keep exposing their cluster/category attributes even when restored
or unavailable, because the card's cluster views depend on them. An entity may
read unavailable until the car next streams that descriptor — trigger a
lock/unlock in the MyBMW app to prompt an update.
BavarianData is an independent, community-built integration and is not affiliated with, endorsed by, or sponsored by BMW Group. "BMW", "Mini", "Rolls-Royce" and "CarData" are trademarks of their respective owners. Screenshots and documentation images of the MyBMW / BMW CarData portal are © BMW AG, shown here solely to document how to set up the service; personal data has been redacted. Released under the MIT License. · Issues · Discussions
Getting started
The card
Features
- Entities & devices
- Charging history & cost
- Battery health
- Trips
- Energy & statistics
- Export
- Events & blueprints
- API quota
Reference