cagnulein / qdomyos-zwift

Zwift bridge for smart treadmills and bike/cyclette
https://www.qzfitness.com/
GNU General Public License v3.0
343 stars 104 forks source link

[REQ] Nordic Track Grand Tour (not Pro) bike - half working but need help #2357

Open Andrew-Opitune opened 3 weeks ago

Andrew-Opitune commented 3 weeks ago

Hi there

I've got a Nordic Track Grand Tour (not Pro) bike and I'm trying to connect it via QZ. It's half working but I think it needs a little tweaking to get it to fully work. I originally started by compiling/installing on Raspberry Pi but that didn't work out so I bought the iOS version which half works with the bike.

My aim is simple. I used to use the bike with the iFit paid service which gave me Google Street View on the bike. iFit unilaterally cut off the paid service to me as my bike is old (2016?) and I was left with a completely dumb (but completely mechanically sound) bike. I found https://drumuri.bike which is simple and provides me with everything I need (is there anything like this but better out there? - I like the Google Earth mode for anywhere where this isn't Street View - I like to cycle in real places in the world) and connected it all together.

I've tried all of the Proform/Nordic Track bike types and options but the results have been mixed. At best I get:

Watts: Reads OK Cadence: Reads OK Incline Set: Sets OK, but sometimes stops working after a while Resistance Set: Nothing

The Grand Tour bike has no gears. I can manually adjust the resistance on the controls on the bike, but it would be good if the resistance on the bike was automatically set to simulate automatic gears based on a target power or cadence (??).

Is this bike one that could be supported? What info would you need to do this? I've provided some basic info on the bike and the web sockets messages at the end.

There is always the chance that it does work and I just haven't tried a particular setting. Or else drumuri.bike could be dodgy. I don't know.

Anything you are able to do to help me would be much appreciated.

Thanks Andrew

Key bits of the bike info: Websocket Version 2.1 Model EBNT71015 Machine Type Bike Equipment Key B7 Part Number 375551 Version 3.4.0324.0.0.5.2.7 Machine UUID 00000000-0000-0000-0000-000000000000 Features Fan, Speakers, Capacitive Touchscreen, Audio Line In, Chest Pulse Receiver Minimum Incline -10.0 Maximum Incline 10.0 Maximum MPH 0.0 Maximum KPH 0.0 Commercial False Default Units English Minimum Resistance 1 Maximum Resistance 24 MPH 0.0 KPH 0.0 Resistance 0 RPM 0 Incline -10.0 Actual Incline 10.0 Target Torque 0 Current Torque 0 Target Watts 0 Current Watts 0 Current Watts per Kg 0.00 BLE Status 0 Calibrate Incline 0 Workout Type NONE Calibrate Watts 0 Resistance Offset 0 Cal Watts RPM 80 Torque Offset -1 User Weight 83 Weight Override 0 Power Override 0 Error Request 0 Power Dev ID -1 Ant Power Status 0 ANT HR Status 0 BLE HR Status 0 BLE HR Index 0

Web Sockets Messages (I manually sent the Tx ones using a stub and they worked correctly to adjust the bike, the Rx ones were sent from the bike - I cycled for 30 seconds or so):

Tx => {"Resistance":"15" },"type":"set" } Rx => { "Resistance":"15" } }

Tx => {"Incline":"4" },"type":"set" } Rx => { "Incline":"4.0" } } Rx => { "Actual Incline":"9.5" } } Rx => { "Actual Incline":"9.0" } } Rx => { "Actual Incline":"8.5" } } Rx => { "Actual Incline":"8.0" } } Rx => { "Actual Incline":"7.5" } } Rx => { "Actual Incline":"7.0" } } Rx => { "Actual Incline":"6.5" } } Rx => { "Actual Incline":"6.0" } } Rx => { "Actual Incline":"5.5" } } Rx => { "Actual Incline":"5.0" } } Rx => { "Actual Incline":"4.5" } } Rx => { "Actual Incline":"4.0" } }

Rx => { "Workout Type":"MANUAL" } }

Rx => { "Resistance":"1", "Incline":"0.0" } } Rx => { "Actual Incline":"3.5" } } Rx => { "Actual Incline":"3.0" } } Rx => { "Actual Incline":"2.5" } } Rx => { "Actual Incline":"2.0" } } Rx => { "Actual Incline":"1.5" } } Rx => { "Actual Incline":"1.0" } } Rx => { "Actual Incline":"0.5" } } Rx => { "Actual Incline":"0.0" } }

Rx => { "RPM":"11", "Current Watts":"4" } } Rx => { "Current MPH":"3.0", "Current KPH":"4.8", "RPM":"28" } } Rx => { "RPM":"49", "Current Watts":"13" } } Rx => { "Current Watts":"32" } } Rx => { "RPM":"72" } } Rx => { "Current Watts":"62" } } Rx => { "Total Time":"234:03:07" } } Rx => { "RPM":"87" } } Rx => { "Current Watts":"85" } } Rx => { "RPM":"97" } } Rx => { "Current Watts":"96" } } Rx => { "RPM":"106" } } Rx => { "Current Watts":"102", "Total Miles":"3194" } } Rx => { "RPM":"112" } } Rx => { "Current Watts":"106" } } Rx => { "RPM":"118", "Total Time":"234:03:08" } } Rx => { "RPM":"123", "Current Watts":"108" } } Rx => { "Current MPH":"23.4", "Current KPH":"37.6", "Miles":"0.004", "Kilometers":"0.006", "Current Watts":"110" } } Rx => { "RPM":"127" } } Rx => { "Current Watts":"111" } } Rx => { "RPM":"129" } } Rx => { "Current Watts":"112", "Total Miles":"3194" } } Rx => { "RPM":"130" } } Rx => { "Total Time":"234:03:09" } } Rx => { "RPM":"129" } } Rx => { "Total Miles":"3194" } } Rx => { "Total Time":"234:03:10" } } Rx => { "Total Miles":"3194" } } Rx => { "RPM":"130" } } Rx => { "Total Time":"234:03:11" } } Rx => { "Total Miles":"3194" } } Rx => { "Current MPH":"26.0", "Current KPH":"41.8", "Miles":"0.034", "Kilometers":"0.054" } } Rx => { "Total Time":"234:03:12" } } Rx => { "RPM":"129" } } Rx => { "Total Miles":"3194" } } Rx => { "Total Time":"234:03:13" } } Rx => { "Total Miles":"3194" } } Rx => { "RPM":"0" } } Rx => { "Current Watts":"0" } } Rx => { "Total Time":"234:03:14" } } Rx => { "Total Miles":"3194" } } Rx => { "Current MPH":"0.0", "Current KPH":"0.0", "Miles":"0.052", "Kilometers":"0.083" } }

Rx => { "Workout Type":"NONE" } } Rx => { "Miles":"0.000", "Kilometers":"0.000" } }

cagnulein commented 3 weeks ago

hi! so you set the TDF4 ip setting with the IP of the bike? If so it's using the same protocol my tdf4 and I have ERG mode working, resistance and incline. Create a debug log of the issue so in case I will see on it the errors that you are mentioning Thanks

cagnulein commented 3 weeks ago

also qz has the drumuri functionaly builtin, did you check the gpx feature? it will load also the 3d map in realtime!

Andrew-Opitune commented 3 weeks ago

Roberto

Thanks for your speedy replies. Much appreciated. I think I’ve made some progress. I just put in the TDF4 IP but didn’t select any of the other Nordic Track or Proform bike options. I also selected the Settings > Bike Options > Zwift Workout / Erg Mode to On.

I then selected a GPX route and clicked on it and then pressed start. The route started and the incline changed with the route (I assume - anyway, it changed up and down) and it was easier to cycle when the incline was less (but the resistance reading on the bike didn’t change and stayed at 1).

I tried to see it on the mapping function in 3D and pressed the map button up the top right in the purple bar, but all I could see on the screen was this:

[image0.png]

A few stars and an orange blob.

What am I doing wrong?

Thanks Andrew

On 27 May 2024, at 14:18, Roberto Viola @.***> wrote:



also qz has the drumuri functionaly builtin, did you check the gpx feature? it will load also the 3d map in realtime!

— Reply to this email directly, view it on GitHubhttps://github.com/cagnulein/qdomyos-zwift/issues/2357#issuecomment-2133471227, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AV47SLTMKDBAHGSNSJ7QIHLZEMXDTAVCNFSM6AAAAABILFVXY2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZTGQ3TCMRSG4. You are receiving this because you authored the thread.Message ID: @.***>

cagnulein commented 3 weeks ago

I can't see any attachments if you send them by email. Send them on the ticket directly on the github web interface

Also please attach a debug log so I can see if everything is working correctly

For the resistance is righr: qz is changing directly the inclination that affects also the resistance

For the map I already fixed in the beta. Send me an email to Roberto.viola83 at Gmail.com indicating this ticket and I will send you the beta

Andrew-Opitune commented 3 weeks ago

IMG_0081

Screenshot of map issue

cagnulein commented 3 weeks ago

Yes send me the email as I said above and the map error will go away

Andrew-Opitune commented 3 weeks ago

Sent the email and here is the debug log. Actually there seem to be a few debug files

debug-Mon_May_27_19_55_17_2024.log debug-Mon_May_27_19_56_35_2024.log debug-Mon_May_27_20_00_03_2024.log debug-Mon_May_27_19_55_27_2024.log

cagnulein commented 3 weeks ago

Beta sent! Let me know

Andrew-Opitune commented 3 weeks ago

I'm on the road for a few days so there will be a delay in me sorting out the beta. Probably next week

cagnulein commented 3 weeks ago

No worries, thanks for the heads up!

Il giorno lun 27 mag 2024 alle 21:57 Andrew-Opitune < @.***> ha scritto:

I'm on the road for a few days so there will be a delay in me sorting out the beta. Probably next week

— Reply to this email directly, view it on GitHub https://github.com/cagnulein/qdomyos-zwift/issues/2357#issuecomment-2133992812, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALYWCXNRB7RHRLSZLYBLTZEOF3HAVCNFSM6AAAAABILFVXY2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZTHE4TEOBRGI . You are receiving this because you were assigned.Message ID: @.***>

Andrew-Opitune commented 1 week ago

Thanks for the beta link - that fixed the map issue

cagnulein commented 1 week ago

Glad it worked!

Il giorno sab 8 giu 2024 alle 16:34 Andrew-Opitune @.***> ha scritto:

Thanks for the beta link - that fixed the map issue

— Reply to this email directly, view it on GitHub https://github.com/cagnulein/qdomyos-zwift/issues/2357#issuecomment-2156059162, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALYWC5IYTPHO3OQBJY3ZTZGMJAVAVCNFSM6AAAAABILFVXY2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNJWGA2TSMJWGI . You are receiving this because you were assigned.Message ID: @.***>

Andrew-Opitune commented 1 week ago

I spent some time getting it all to work - it mostly does now. There are a few snags and a feature request. The architecture I had to go with was this..

IMG_0093

I went with drumuri.bike as I like the streetview plus 3D tile Google Earth of real places on GPX - perhaps this is something QZ could do? So drumuri.bike provides the incline value for where on the GPX route you are. This goes to QZ and is passed on to the NordicTrack bike. I had to use both an iPad and an iPhone as QZ seems to need to be in the foreground for it to work. So QZ passes the incline to the bike. The bike passes back power and cadence (and other stuff which is not used). The iPad then RDP’s into the Windows PC to display the browser as the iPad GPU is not powerful enough for the 3D tile stuff and drumuri.bike doesn't support iPad/Safari anyway.

All of this worked. There was an issue when if the power dropped suddenly to zero then this wouldn’t be picked up and the previous power would be kept, but this seemed to disappear on its own.

So the only issue is that nothing seems to set the resistance on the bike and so this has to be done manually on the bike itself. Rather like changing gears (there are no actual gears on the bike).

It would be great if QZ could control the resistance to effectively provide an automatic gearbox, keeping the cadence roughly right. You suggested previously that this could be done through the Erg mode, but when I tried this it didn’t change the resistance and the incline stopped working as well.

So overall, it’s pretty much there for me, but if there could be an automated gearbox/resistance updates, that would be fantastic!

cagnulein commented 1 week ago

For the 3d maps it's something already builtin in qz, you can load the gpx and click on the map icon to see the cesium 3d world! In real time!

For the gearbox is already in, use the gears tile!

Let me know