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

Hey everyone!

Spring is just around the corner, so it’s time to get our eBikes ready — and what better way than having all your bike data right in Home Assistant?

I’ve built a custom integration for Bosch eBike Smart System that connects to the official Bosch Data Act API. If your eBike runs on the Bosch Smart System (Performance Line CX, SX, etc.), you can now monitor everything directly in HA.

What you get:

Bike Sensors

  • Odometer, motor hours (total & with assist), max assist speed
  • Active assist modes, walk assist speed
  • Battery lifetime Wh, charge cycles (on-bike / off-bike)
  • Next service odometer

Last Ride Sensors

  • Distance, duration, average & max speed
  • Rider power in watts (avg/max) and cadence (avg/max)
  • Calories burned, elevation gain & loss
  • Ride title and date

Key features:

  • OAuth2 authentication via Bosch SingleKey ID
  • Automatic token refresh
  • Multi-bike support
  • 30-minute polling interval
  • HACS compatible
  • English and German translations

Setup requires registering an app in the Bosch Data Act Portal to get a Client-ID and enabling data sharing — all steps are documented in the README.

GitHub: GitHub - Xunil99/ha-bosch-ebike: Home Assistant custom integration for Bosch eBike Smart System (Data Act API) · GitHub

Happy to hear your feedback and ideas for improvements. If you’re running a Bosch Smart System eBike, give it a try and let me know how it works for you!

1 Like

Looks interesting!
I tried, but got to a few hurdles, likely all related to each other:

  1. When creating the client application, I had to fill out a Login URL and a Redirect URI. I filled out http://localhost:8888/callback in both, but I suspect that’s not correct
  2. I don’t get a share button in step 4. Do I have to wait for approval of my application?
  3. My token isn’t accepted in step 5.

Hi, thanks for trying it out! You’re right, those issues are likely all connected. Here’s what’s going on:

1. Login URL & Redirect URI

The Redirect URI http://localhost:8888/callback is correct — keep that one.

For the Login URL, this should be the Bosch OAuth authorize endpoint:

https://p9.authz.bosch.com/auth/realms/obc/protocol/openid-connect/auth

2. No Share button / Application approval

Yes, after creating your application in the Bosch Data Act Portal, it needs to be approved by Bosch first. This can take a few hours up to a couple of days. You’ll receive an email notification once it’s approved. Only after approval will you be able to:

  • See the “Share” button in the Flow app / portal to grant data access
  • Successfully exchange tokens via the API

3. Token not accepted

This is a direct consequence of #2. Until your application is approved by Bosch, the Client-ID won’t be authorized to request tokens. Once you get the approval email, the OAuth flow should work.

So the steps in order are:

  1. :white_check_mark: Create application in Bosch Data Act Portal (Login URL = Bosch auth endpoint, Redirect URI = http://localhost:8888/callback)
  2. :hourglass_flowing_sand: Wait for Bosch approval (check your email)
  3. Open the Flow app → go to Data Sharing → enable sharing for your application
  4. Then set up the integration in Home Assistant — the token exchange should work now

Let me know once your app is approved and if you run into any other issues!

Thank you so much for this integration! I am stuck with waiting for Bosch to approve the app. It’s been more than two days and I haven’t received anything. If I try to enable the service from the Flow portal, I get a “Invalid request” error, which I assume means that the app really hasn’t been approved.

Followed the Step-by-Step Setup Guide:

2.4. (Your bike will now appear in the Flow Portal at portal.bosch-ebike.com)
It does not. Instead it asks if I want to add my account as a distributor or a manufacturer.

Nevertheless, proceeded with the guide.

My bike is listed in flow.bosch-ebike.com.

Waiting for Bosch’s approval…

1 Like

Sorry, got the wrong link. Login here (after you created a Client-ID) and activate the your bike for data-usage of the app: https://flow.bosch-ebike.com

It’s been more than a week and still no approval from Bosch, therefore I’m still stuck.

First, go to Unauthorized | eBike Systems and login. Create a Client-ID (I don’t fully remember, how I did this, however, it worked :-)).

Thanks for the effort :slight_smile: The instructions on your GitHub repo are really precise, which also means that I’m still locked out of the integration.

I did go to that page and created a Client ID. I did authenticate the Home Assistant integration. But again, as you mentioned in your instructions, if Bosch doesn’t approve the Client ID app, the integration won’t report any devices, which is what’s happening to me.

If I try to enable the app from Bosch’s portal, I get the “Invalid request” error.

So it really seems like I need to wait for Bosch to approve the app before I can continue, but it’s been more than a week now.

Not in your email spam folder? I’d be amazed if it was a manual approved process with such long delays.

I note the Bosch backend systems have been closed for maintenance recently and quite a few times. Maybe try again when they are up.

Believe it or not, I just refreshed and it was approved! :scream: I triple checked the email, even in the spam folder, and I never received anything. But it works now, and I can confirm the HA integration works as well :sunglasses: Thanks everyone for the support!

1 Like

I am still waiting for the approval for 8 days now and still get the “Invalid request” error.

@sgotti took 8 days, so that might be the worst case scenario. Did you retry like they did, and do you have the latest update?

I deleted and re-setup the application without checking ‘Confidential client’ and was able to activate it right away.

Can’t find the custom:bosch-ebike-map-card though.


Browser refreshed. Anyone else?

The correct path for the file “bosch-ebike-map-card.js” is “homeassistant/custom_components/bosch_ebike/www/”. Just copy the file into this folder and restart Home Assistant (full restart required).

Strangely enough, Bosch actually granted me access to the Data Act API within just a few minutes. I didn’t receive an email from Bosch either.

After manually adding /bosch_ebike/bosch-ebike-map-card.js to the dashboard ressources the card was found.
Thank you Xunil99 for sharing your great work.

Awesome work! Thank you very much

@Xunil99, is there also a way to track the current (or last state) battery charging rate? Or do we need the connect module for that data?

1 Like

I was wondering the same thing, or well, what I would really like is to see how much the battery was charged when last connected, so don’t need to see it when charging, just want to see the 80% or something, which it shows in the app