Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Tacx Neo Bike i.e. FE-C over Bluetooth support #221

Open
divyenduz opened this issue Dec 17, 2022 · 2 comments
Open

Support for Tacx Neo Bike i.e. FE-C over Bluetooth support #221

divyenduz opened this issue Dec 17, 2022 · 2 comments
Assignees

Comments

@divyenduz
Copy link

divyenduz commented Dec 17, 2022

Here are all my notes on this issue so far, the support for the bike I use is currently only partial, when I connect it via bluetooth, I see this warning message

CleanShot 2022-12-17 at 21 59 59@2x

Besides this, the following observations about dundring dashboard vs the built-in screen on the bike

IMG_0933

Metric Dundring Bike Screen Notes
Heart rate 138 138 ✅ Dundring connected to the sensor via bluetooth, bike automatically picks ANT+ signals. Same sensor, same data, all good.
Wattage 4 watt 4 watt ✅ They are usually off a bit but mostly the same. I think dundring reads this from the device.
Speed 4.4 km/hr 17.8 km/hr ⚠️ This is not a problem, the speeds are usually similar w/ dundring lagging a bit to reflect (so the big difference here is irrelevant). What I am curious about is why aren't they same? Can we just use the emitted speed from the device?
Cadence/rpm 0 rpm 0 rpm ❌ The image is misleading, I probably stopped paddling to take a picture. The bike screen shows RPM while dundring doesn't, it is probably not reading it from my bike.

So why doesn't it work? (snippets copied from code, might be outdated when you read this)

  • Dundring needs cycling_power (wattage) service and optionally fitness_machine (FTMS, controlling bike resistance) service
const device = await navigator.bluetooth
      .requestDevice({
        filters: [{ services: ['cycling_power'] }],
        optionalServices: ['fitness_machine'],
      })

Tacx actually does support FTMS on all their non-NEO series just fine, but doesn’t do FTMS on the NEO series due to FTMS’s lack of ability to transmit weight information to apps (which is needed for the virtual flywheel in this specific trainer series).

Next steps (for me), play around with web bluetooth a bit with a simpler device and eventually implement control support for Tacx Neo Bike 🎉

Resources

@sivertschou
Copy link
Owner

Awesome work! 🙌 We obviously have a lot to fix, and your notes will be essential in that process!

Most of the core developers have been using Wahoo smart trainers, which would explain the lacking support for other brands at the moment 🙈 Very interesting that they use the Ant+ FE-C protocol over Bluetooth – I had no idea!

It appears that now is the time for a review and improvement of the bluetooth-parts of the code – I'll try to prioritize it during the holidays ❄️

As always, feel free to reach out to me over at Slack if you want to discuss or even rubber duck 🦆

@morteako
Copy link
Collaborator

I can probably explain the speed difference.

Regarding the picture, the reason the difference is so huge (17.8 km/h vs 4.4 km/h) is probably because the speed on your device is more realistic in terms of speed decrease over time.
Dundring's speed estimate is just based on the current power (4W) and therefore instantly decreases to a low speed.
The device probably decreases more gradually over time, like in the real world.

For the normal differences between the two, it is probably because the speed estimate from the device is just a bit different from the speed estimate used in dundring (which is based upon https://www.omnicalculator.com/sports/cycling-wattage).
The estimate implementation in dundring can be found here : #147

Regarding using the emitted speed from the device, I am not sure. I guess it is nice that they are in sync, but there is also some possible issues regarding "fairness" when comparing speeds across devices.
We will take it into consideration.

Hope that kinda made sense and thanks for the great and detailed feedback 🎉

@sivertschou sivertschou self-assigned this Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Priority todos
Development

No branches or pull requests

3 participants