[APP][Pro] Bosch eBike - Monitor your Bosch Smart System eBike in Homey - Looking for testers

Monitor your Bosch Smart System eBike directly from Homey. Keep track of your battery level, remaining range in all assist modes (Eco, Tour, Sport and Turbo), odometer, motor hours, charge cycles, and per-mode riding statistics — all updated automatically every 5 minutes.

Connect once using your Bosch account and Homey will continuously sync your bike’s data from the Bosch cloud. Use Flow cards to get notified when your battery is low, when charging starts or stops, or to automate anything based on your bike’s status. Full hardware details including battery, motor, and component serial numbers are available in the device settings.

Please anyone available to test it and let me know.

Read instructions under settings carefully.

Feedback is appreciated.


Bosch eBike Smart System — Homey Pro App

A Homey Pro app to monitor your Bosch Smart System eBike — battery, range, motor stats, per-mode riding statistics, and full hardware details — all inside Homey.


:warning: Important Disclaimer

This integration requires:

  • ConnectModule hardware installed on your bike (sold separately, ~€100-150)

  • Bosch eBike Flow+ subscription (~€30-50/year)

  • Bosch eBike Flow app (Gen 4 and up)

This will NOT work with older Bosch eBike Connect app (Gen 3 and below).

This app is not officially supported, endorsed, or affiliated with Bosch eBike Systems in any way.

The Bosch Smart System does not currently offer a public API for third-party integrations. This app works by using the same private API used by the official Bosch Flow / One Bike App (also known as One Bike App). This approach was reverse-engineered by the community and is used here as a workaround until an official API becomes available.

What this means for you:

  • Bosch may change or disable this API at any time without notice, which could break the app

  • Your Bosch account credentials are used only for authentication — no data is stored outside of your Homey

  • Use at your own risk

If Bosch ever releases an official public API, this app will be updated to use it.


Features

  • Battery state of charge (%) and remaining energy (Wh)

  • Estimated range in all assist modes (Eco / Tour / eMTB / Sport / Turbo)

  • Odometer, motor hours, and charge cycle tracking

  • Per-assist-mode distance and energy consumption

  • Charging status indicator

  • Bike photo displayed on the device tile (from Bosch CDN)

  • Full hardware info in Advanced Settings — battery, motor, connect module, remote, head unit (model, serial, firmware, manufacturing date)

  • Automatic polling every 5 minutes

  • Supports multiple bikes on one account

  • Re-authenticate without removing the device


Requirements

  • Homey Pro (SDK3 — tested on Homey Pro 2023)

  • A Bosch Smart System eBike registered in the Bosch Flow / One Bike App

  • A desktop computer or laptop with Chrome or Firefox (required for the one-time login step — a mobile browser will not work)

  • Your Bosch account login credentials


Adding Your Bike — Step by Step

Because Bosch does not offer a public API, authentication requires a one-time manual step through a desktop browser. This is a workaround to obtain the authorization token that Homey needs to communicate with the Bosch cloud on your behalf.

:warning: This step cannot be completed on a mobile phone. You need a desktop or laptop browser with Developer Tools (Chrome or Firefox). This is a known limitation of the workaround approach.

You only need to do this once per Homey installation, or when your session expires (which is rare with the offline_access token scope).


Step 1 — Generate your Login URL

The app generates a unique, secure login URL for your Bosch account using PKCE (a secure OAuth2 method). You need to copy this URL to your desktop browser.

  1. Open the Homey app on your phone

  2. Go to More → Apps → Bosch eBike → Settings

  3. You will see the Setup tab with a generated Login URL

  4. Tap Copy to copy the URL to your clipboard


Step 2 — Sign in and capture the authorization code

This is the trickiest step. Because the Bosch login redirects to a mobile deep link (onebikeapp-ios://) that desktop browsers cannot open, you need to intercept the redirect using Developer Tools.

  1. On your desktop computer, open Chrome or Firefox

  2. Open Developer Tools:

  • Chrome: press F12, or right-click anywhere → Inspect

  • Firefox: press F12

  1. Click the Network tab in Developer Tools

  2. Make sure recording is active (red dot in Chrome, or pause button not active in Firefox)

  3. Paste the Login URL into the browser address bar and press Enter

  4. The Bosch account login page will appear — sign in with your Bosch / One Bike App email and password

  5. After a successful login, the browser will attempt to open a link starting with onebikeapp-ios:// — this will fail, which is completely normal and expected

  6. In the Network tab, look for a request that starts with onebikeapp-ios:// — it will appear in the list. Click on it.

  7. The full URL in the request will look like this:

    onebikeapp-ios://com.bosch.ebike.onebikeapp/oauth2redirect?code=XXXXXXXXXXXXXXXX&state=...
    
    
  8. Copy the value after code= and before the next & — that is your authorization code

:light_bulb: Tip: The code is a long string of random characters. Copy only the code itself, not the code= prefix or anything after the &.


Step 3 — Add your bike in Homey

  1. Open the Homey app on your phone

  2. Go to Devices → + → search for Bosch eBike → tap it

  3. On the pairing screen you will see a reminder of the instructions

  4. In the Authorization Code field, paste the code you copied from the previous Step 2

  5. Tap Next — Homey will connect to Bosch and retrieve your registered bike(s)

  6. Select the bike(s) you want to add and tap Add

Your bike will now appear as a device in Homey. The bike photo and all data will appear within 5 minutes on the first poll.


Re-Authentication

Tokens use offline_access scope and last a long time. However if your bike stops updating, re-authentication is needed.

Option A — Via Advanced Settings (quickest, no re-pairing needed):

  1. Follow Steps 2–3 above to get a new authorization code

  2. Open the device → Settings → Advanced Settings → Connection

  3. Paste the new code into the Authorization Code field

  4. Tap Save

Option B — Via Repair (full re-pairing):

  1. Long-press the device tile → Repair

  2. Follow the full pairing flow (Steps 2–4)

  3. The device stays in place — only the tokens are updated


Capabilities

Battery

Capability Description
Battery (%) State of charge
Charging Whether the battery is currently charging
Remaining Energy Remaining energy in Wh
Battery Capacity Total capacity in Wh
Charge Cycles Total charge cycles (on-bike + off-bike combined)
Charge Cycles On Bike Charge cycles done with battery installed
Charge Cycles Off Bike Charge cycles done with battery removed
Lifetime Energy Total Wh consumed over the battery’s lifetime

Range Estimates

Capability Assist Mode
Range Eco Eco
Range Tour Tour / eMTB
Range Sport Sport
Range Turbo Turbo

Odometer & Motor

Capability Description
Odometer Total distance ridden (km)
Motor Hours Total motor operating hours
Motor Hours (Assist) Hours the motor was actively assisting
Max Assist Speed Speed limit for motor assist (km/h)

Per-Mode Distance & Energy

Cumulative distance and energy consumption per assist mode: Off / Eco / Tour / Sport / Turbo


Advanced Settings

Open device → Settings → Advanced Settings to see:

Connection — paste a new Authorization Code to re-authenticate

Bike — Brand, Category, Frame ID, Gearing system

Battery — Model, Serial, Firmware, Hardware, Part Number, Manufacturing Date

Motor — Model, Product Line, Serial, Firmware, Hardware, Part Number, Manufacturing Date

Connect Module — Model, Serial, Firmware, Manufacturing Date

Remote / Controller — Model, Serial, Firmware, Manufacturing Date

Head Unit (if fitted) — Model, Serial, Firmware, Manufacturing Date

All fields populate automatically on the first poll.


Flows

Custom trigger cards:

  • eBike charging started

  • eBike charging stopped

  • eBike battery drops below X%

Custom condition cards:

  • eBike is / is not charging

  • eBike battery is above / below X%

All numeric capabilities also automatically generate “becomes greater/less than” flow cards.


App Settings & Debug

Open More → Apps → Bosch eBike → Settings:

Setup tab — login URL generator with Copy button and step-by-step instructions

Debug tab — live log of the last API poll per bike. Use Refresh to reload and Clear to reset.


Known Limitations

  • Unofficial API — Bosch may change or disable access at any time. This is the fundamental limitation of this approach.

  • No ride history — the Bosch API does not expose individual ride data to third-party clients

  • 5-minute polling — data reflects the state at the last poll, not real-time

  • Desktop browser required for initial authentication — the authorization code cannot be captured on mobile

  • One Bike App must be set up — your bike must already be registered in the official Bosch Flow / One Bike App before pairing with Homey

Thanks for the app. After copying the link I can’t sign in with my single id.

You copied the link generated from the app/settings page?

After you followed the instructions?

  1. On your desktop computer, open Chrome or Firefox

  2. Paste the Login URL into the browser address bar and press Enter

  3. The Bosch account login page will appear — place in your Bosch / One Bike App email and click “Continue”. Enter the password and before clicking “Continue”.

  4. Open Developer Tools:

  • Chrome: press F12, or right-click anywhere → Inspect

  • Firefox: press F12

  • Click the Network tab in Developer Tools

  • Make sure recording is active (red dot in Chrome, or pause button not active in Firefox)

  • After click “Continue” and if successful, the browser will attempt to open a link starting with onebikeapp-ios:// — this will fail with an error in the browser, which is completely normal and expected

  • In the Network tab, look for a request that starts with onebikeapp-ios:// — it will appear in the list. Click on it.

  • The full URL in the request will look like this:

    onebikeapp-ios://com.bosch.ebike.onebikeapp/oauth2redirect?code=XXXXXXXXXXXXXXXX&state=...
    
    
  • Copy the value after code= and before the next & — that is your authorization code

:light_bulb: Tip: The code is a long string of random characters. Copy only the code itself, not the code= prefix or anything after the &.

Once you have this code you can try to add your bike by adding a device, selecting the app and pasting the code into the form. You have around 60 seconds or else the code will expire.

After copying the link generated from the app I get the Bosch login page. I fill in my email (continue) and password (continue). The I get : redirection. You will be automatically redirected to your application. That’s it.

Sorry I’m not understanding if you are following the instructions I posted before. You need to open the developer tools on the browser as I wrote and you need to copy a code from it, after you login. Bosch does not have authentication available for other apps to login, so that is the only step that is not an easy one. Please follow the instructions as I posted before.

I’m sorry. As I told you I can’t login with my single id. I get this message:

It’s exactly at this stage that you need to have the “developer tools” and see the redirection the browser is trying to connect to. See below:
After click “Continue” and if successful, the browser will attempt to open a link starting with onebikeapp-ios:// — this will fail with an error, which is completely normal and expected.

  • In the Network tab, look for a request that starts with onebikeapp-ios:// — it will appear in the list. Click on it.

  • The full URL in the request will look like this:

    onebikeapp-ios://com.bosch.ebike.onebikeapp/oauth2redirect?code=XXXXXXXXXXXXXXXX&state=...
    
    
    
  • Copy the value after code= and before the next & — that is your authorization code

:light_bulb: Tip: The code is a long string of random characters. Copy only the code itself, not the code= prefix or anything after the &.

Once you have this code you can try to add your bike by adding a device, selecting the app and pasting the code into the form. You have around 60 seconds or else the code will expire.

At this moment Bosch does not support authentication/redirection for 3rd Party applications that’s why at the moment we have to do this step manually. As soon as Bosch allows 3rd Party authentication I will update the app to use it.

It works. Thank you for your support and patience.

great that it worked. Hope you enjoy.

@Goncalo_Barradas Hello, what should I enter in the top input field?

Leave it empty.

I will on the next update add the information to leave it empty. Thank you for sharing your question/doubt

@Goncalo_Barradas It worked. I left the field blank. The 60 seconds were the problem preventing me from proceeding, but now it works. I’m going to test it now, thanks.

Is this app only for the “new” smart system or does it also work on the older Bosch bikes?

Hello, yes this app is based on Flow app API which is for Gen4 and up Bosch Smart Systems.

Sorry if your bike is not supported.

Does it also show data when it’s charging? If so, I can turn off my smart plug at 80% to improve battery-performance.

This is exactly one of the main goals that drove me to create this app. Yes it does show, and you can trigger flows based on that:

Cheers

This is my result: onebikeapp-ios://com.bosch.ebike.onebikeapp/oauth2redirect?error=temporarily_unavailable&error_description=authentication_expired&state…

Second time: onebikeapp-ios://com.bosch.ebike.onebikeapp/oauth2redirect?state=7ixegjw0aci&session_state=560ed8a5-98cb-4ac3-9687-119e3ca74aa2&iss=https%3A%2F%2Fp9.authz.bosch.com%2Fauth%2Frealms%2Fobc&code=bf64f5e5-a34c-4fe7-8665-1a2d82c142f0.560ed8a5-98cb-4ac3-9687-119e3ca74aa2.177d33ff-9ba5-4328-a3c7-844fd66395

End with: Token exchange failed (400): {“error”:“invalid_grant”,“error_description”:“Code not valid”}

After the fourth time, it finally worked. 60 seconds was the problem, I think.

I would recommend (at least partially) removing the “code” from the URL since it can be used by others to login to your account

@Goncalo_Barradas Hello, do I also need to make settings in the Flow app, or do I need a Flow+ account? I am currently not seeing any values ​​for Charging and Remaining energy.

No, that is not possible. It is incomplete and older than 60 seconds.