Hi all,
I’m sharing a custom Home Assistant integration for PON Bike Connected, which I originally built for personal use, but may be useful to others with connected PON bikes (Urban Arrow, Gazelle, Kalkhoff).
The integration connects to the PON Bike Connected cloud API and exposes your bike(s) as devices in Home Assistant, including GPS location and basic telemetry.
Important upfront
- This is a personal project
- APIs are undocumented
- Development may pause or stop at any time
- No guarantees on maintenance or feature completeness
What it does
- OAuth2 authentication (PKCE, public client)
- One Home Assistant device per bike
- GPS location via
device_tracker - Telemetry sensors (currently):
- Odometer (km, total increasing)
- Module / battery charge (%)
- Friendly device naming (nickname + frame number)
- Automatic token refresh handled by Home Assistant
- Cloud polling via coordinator (
iot_class: cloud_polling)
Supported / expected brands
- Urban Arrow (tested)
- Gazelle (expected)
- Kalkhoff (expected)
Anything using the same PON Bike Connected backend may work, depending on what the API exposes.
Known limitations
Urban Arrow battery reporting
For Urban Arrow bikes, the API currently reports:
moduleCharge = 100%
regardless of the actual battery level.
This appears to be a PON backend issue, not an integration bug. Until PON exposes correct battery telemetry, Home Assistant will always show 100%.
Prerequisites (important – don’t skip)
This integration requires an active connected-bike subscription using one of the official apps:
- Gazelle Connect
- Urban Arrow Connected
- Kalkhoff Smart eBike
Your bike must already be visible in your PON consumer account before setting up Home Assistant.
Step 1 — Ensure bike visibility on PON consumer portal
- Create an account at: consumer-account.pon.bike
- Log in and ensure your bike is visible under “My bikes”
If your bike does not appear here, the integration will not work.
Step 2 — Create a PON developer application
- Create a developer account at data-act.pon.bike
- Click Login
- Choose Sign up
- Create a New Application
-
Name: e.g. Home Assistant integration
-
Description: anything
-
Callback / Allowed origin / Logout URL: Link to OAuth2 Authorize Callback – My Home Assistant
-
Client aliases: anything (e.g.
1234) -
Copy the Application ID (this will be your OAuth
client_id)
You will need this during Home Assistant setup.
Installation (HACS – recommended)
- Ensure HACS is installed
- Open HACS
- Add this repository as a Custom repository
- Repository:
https://github.com/rschobben/pon-bike-connected-ha
- Category: Integration
- Install PON Bike Connected
- Restart Home Assistant
Configuration in Home Assistant
- Go to Settings → Devices & Services → Add integration
- Search for PON Bike Connected
- When asked for OAuth details:
- Client ID → Application ID from PON developer portal
- Client secret → enter anything (e.g.
dummy, this is a public PKCE client)
You will be redirected to the PON consumer portal:
- Click Add bike
- Enable:
- Location
- Telemetry
- Bike status (IoT)
After authorization, your bike should appear as a device in Home Assistant.
Roadmap (no promises)
- Multi-account support
- MQTT / streaming telemetry (PON has not published endpoints yet)
- Additional sensors if the API exposes them
- Entity allow-listing / pruning
- Possible HACS default-store submission later
These are intentions, not commitments.
Repository
The README contains full setup instructions, limitations, and disclaimers.
Feedback
If you:
- use this with another PON bike brand,
- notice missing telemetry,
- or observe API changes,
feel free to open an issue with logs or observations (sanitized).
This project is unofficial and not affiliated with PON, Urban Arrow, Gazelle, or Kalkhoff.
Hope this helps others with connected PON bikes.