New Integration: Bosch eBike Smart System (Data Act API) – Track your rides in Home Assistant

Unfortunately not :-(. I’d love to implement that, because that’s one of the things I’d used most.

I’ve added an estimate of battery consumption. While the Bosch API doesn’t provide any data on battery level or consumption, it does report the total Wh delivered by the battery — so if you know the battery’s capacity, you can use a simple rule of three to calculate the percentage of battery used. That said, it’s still only an estimate, since the total capacity of the battery naturally degrades over the years. But better than nothing…

Thank you for the great integration! Awesome work especially with the great card as extension compared to other available integrations!

One remark. I had issues with Dashboard with that link:
/bosch_ebike/bosch-ebike-map-card.js

I checked the custom components folder and in my case the integration is stored in ha_bosch_ebike instead just bosch_ebike.

I correct the path under resources and then it worked
/ha_bosch_ebike/bosch-ebike-map-card.js

@Xunil99 From what does it depend if the battery value is shown or not? I dont get the status yet.

The battery value is being calculated - Bosch does not provide the battery value. So you have to make at least two rides for the battery value to be calculated and shown.

1 Like

My wife and I both have ebikes with the Bosch system and ive just found this post - so mow I have to try this integration.
Before I play with this can anyone confirm if the integration supports multiple bikes on different accounts? I’m presuming you can create more than one “device” in the integration?

Thanks,
Richie

Hi Richie,

yes, fully supported since v1.4.0. Both setups work out of the box and can even be combined:

Two separate Bosch accounts (your case)

Just add the integration twice. For each account:

  1. Create your own app registration at Unauthorized | eBike Systems to get a separate Client-ID per account
  2. In Home Assistant: Settings → Devices & Services → + Add Integration → “Bosch eBike (Smart System)”
  3. Paste the Client-ID, run through the OAuth flow with that account’s SingleKey ID
  4. Repeat for your wife’s account with her Client-ID

Each integration instance is fully isolated, own tokens, sensors, activities, battery-consumption tracking. You’ll see two devices per bike in the Devices panel and two sets of last_ride_* / total_* sensors.

One Bosch account with two bikes (also supported)

If you ever consolidate to a single account with both bikes attached, the integration creates per-bike hardware sensors automatically and uses an odometer-matching heuristic (1.5 km tolerance) to attribute rides to the correct bike, so no manual setup needed.

Lovelace card

The optional bosch-ebike-map-card auto-shows two filter dropdowns above the activity list when more than one account or bike is present. You can also pin a card to one specific account/bike via its visual editor (or account_id / bike_id in YAML) and place two cards side-by-side in a horizontal-stack for direct comparison views, handy if you want to compare a ride that you and your wife did together on the same day.

Have fun with the integration!

Best,
Volker

2 Likes

Great, thanks for the quick reply.
I will try this out in the next couple of days.

Richie

Hello, thank you for this integration and instruction how to implement it. I added it to my system and it works! However, the integration created it a Drive Unit Performance Line item with 48 entities and my bike with only 1 entity, the Battery Capacity. I think I miss some entities on my bike, for example the current battery percentage is one I want to see.

Bosch doesn't provide battery percentage via the EU Data Act API. The battery percentage is being calculated, once you have done more than one ride after installing the integration. If you want live battery percentage, you have to use the ESP firmware provided with the integration and update your eBike to V19 firmware.

@Xunil99 Thank you for the update adding the ESP Bridge. I wanna share my experience.
I had some trouble to get the ESP device running in ESPHome and could not add the device. Error message was API connection issues

The issue was the board definition. You example defines:

esp32:
  variant: esp32

Once i changed it like below it worked

esp32:
  board: esp32dev

@smartmatic Thanks for this information, helps me to keep the HA-integration and the ESP Project running and developing to other user's needs. The definition of the board variant depends on what board exactly you're using. I'll add this to the readme.md!

Thanks a lot for the report, that was the right diagnosis. The root cause is what you found: with only variant: esp32, PlatformIO can fall back to board defaults that mismatch the actual ESP32-DevKitC (typically wrong crystal frequency or partition table), which produces unstable WiFi RF rather than no WiFi. The ESPHome API then drops every few seconds.

Pinning board: esp32dev next to variant: esp32 locks PlatformIO to the canonical defaults (40 MHz crystal, DIO flash, standard partitions) and the symptom goes away.

I just pushed the fix to both YAMLs in the repo plus the web-installer firmware build, released as v1.10.4:

Web installer at Bosch eBike LDI Bridge - Web Installer will pick up the new firmware automatically once the CI build attaches the assets to the release. DIY YAML in esphome/example-bridge.yaml already has both keys, so anyone pulling fresh from main (or pinning @v1.10.4) is covered.

Added a row to the troubleshooting table in the README too, so future users hitting the same symptom find the fix without having to dig through the diff:

"API connection issues" in Home Assistant after a successful flash → Board defaults are wrong (typically wrong crystal frequency or partition table). Add board: esp32dev next to variant: esp32 in the esp32: block.

Thanks again for taking the time to write it up. Saves the next person a chunk of head-scratching.