cagnulein / qdomyos-zwift

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

[BUG] Delay in Virtual Gears with Tacx Neo 1 #2153

Closed jmlopezdona closed 8 months ago

jmlopezdona commented 8 months ago

Describe the bug When using virtual gears within the app, there is a noticeable delay in the resistance adjustment of the smart trainer (Tacx Neo 1). It seems that the resistance changes only when there is a slope alteration on the Zwift road

To Reproduce Steps to reproduce the behavior:

  1. Open Zwift and begin riding.
  2. Click on the up or down virtual gears tiles.
  3. Observe a delay (varying durations) between clicking on the virtual gears tiles (up or down) and the corresponding resistance adjustment on the smart trainer (Tacx Neo 1).

Expected behavior I expect a rapid (as quickly as possible) adjustment of resistance on the smart trainer when changing gears to simulate the new gear ratio based on the current road slope.

Screenshots N/A

Smartphone (please complete the following information):

Append a debug log

debug-Sat_Feb_24_12_13_09_2024.zip

Additional context N/A

cagnulein commented 8 months ago

Thanks! I will check it ASAP!

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 12:45 José Manuel López Doña < @.***> ha scritto:

Assigned #2153 https://github.com/cagnulein/qdomyos-zwift/issues/2153 to @cagnulein https://github.com/cagnulein.

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

cagnulein commented 8 months ago

@jmlopezdona Check the log, the actual code change it with a max delay of 1.2 second. is it what you are observing? or is it more?

jmlopezdona commented 8 months ago

I'm noticing a considerably longer delay. For instance, in the session I recorded to generate the debug log file, there was an extended section with a 0% slope on the France course. Throughout that time, I changed gears, but there was no effect on the resistance of the Tacx Neo 1. Only when the slope changed did the resistance adjustment occur, and the new gear value was applied (or at least that's the impression I got).

El sáb, 24 feb 2024 a las 13:01, Roberto Viola @.***>) escribió:

@jmlopezdona https://github.com/jmlopezdona Check the log, the actual code change it with a max delay of 1.2 second. is it what you are observing? or is it more?

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

cagnulein commented 8 months ago

ok OK thanks I will deeply check it when I will back home. Thanks.

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 13:07 José Manuel López Doña < @.***> ha scritto:

I'm noticing a considerably longer delay. For instance, in the session I recorded to generate the debug log file, there was an extended section with a 0% slope on the France course. Throughout that time, I changed gears, but there was no effect on the resistance of the Tacx Neo 1. Only when the slope changed did the resistance adjustment occur, and the new gear value was applied (or at least that's the impression I got).

El sáb, 24 feb 2024 a las 13:01, Roberto Viola @.***>) escribió:

@jmlopezdona https://github.com/jmlopezdona Check the log, the actual code change it with a max delay of 1.2 second. is it what you are observing? or is it more?

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962339766>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRHQRCF6JBLLRQYDEYLYVHJBJAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGMZTSNZWGY>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

@jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff **d1 4e** ff aa // changeInclination"
sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4
sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27"
sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff **31 4f** ff 0b // changeInclination"
sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) 

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

jmlopezdona commented 8 months ago

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination" sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination" sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

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

cagnulein commented 8 months ago

the gear value is applied to the actual inclination value so just thinking it as a addition or subtraction to the current inclination value for zwift. zwift sends only this to the trainers and qz is overriding it with the gear value as zwift does for the trainers with virtual gear

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 15:12 José Manuel López Doña < @.***> ha scritto:

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination" sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination" sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962369815>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRAV2363DWXN72IVXJDYVHWLRAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM3DSOBRGU>

. You are receiving this because you were mentioned.Message ID: @.***>

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

jmlopezdona commented 8 months ago

Thanks, Roberto, for the information.

I believe that simulating virtual gearing involves more than just adding or subtracting from the current inclination. In this case, you lose the inertial physics in the simulation. Imagine you are climbing a 15% slope. If you set a virtual gearing of 15, and the result is a simulated incline of 0% in the smart trainer, the simulation won't include the inertia physics that the roller should be calculating for a 15% incline. In my experience it has an impact on pedaling cadence and the generated power.

Virtual gearing/shifting is a topic of interest to me, and some time ago, I invested some effort in it. For example, I found some patent documents with physical details that I'm attaching one of them in case it's of interest to you.

Regardless, if the smart trainer firmware doesn't take into account the virtual/physics bike ratio (front chain ring teeth / rear wheel cog teeth) when calculating resistance in simulation mode, along with factors like inclination, biker and bike weight, etc., it might pose a challenge in simulating an effective virtual gearing/shift.

Regarding the Tacx Neo smart trainer, I've reviewed the class that I assume the QZ app is using to control the resistance (src/devices/tacxneo2/tacxneo2.cpp). In my understanding (sorry if I'm mistaken), it manipulates the inclination (plus gear) to adjust the resistance. While I'm not an expert in using the API to control Tacx Neo, I've found the zacharyedwardbull/pycycling repository, and in the file pycycling/tacx_trainer_control.py, it describes a "Simulation mode" with three input objects (user_configuration, wind_resistance, and track_resistance) with parameters such as:

Out of all these parameters, the one that grabs my attention the most is gear_ratio. In the documentation of the function: "The bike gear ratio (front chain ring teeth:rear wheel cog teeth)." In my understanding, bike gear ratio = physical ratio / virtual ratio. So, for a determinate bike if it always uses the same ring/cog teeth configuration the physical ratio is always a constant number.

I 'm going to do some tests with this python library pycycling and my Tacx Neo 1. I would like to verify if the simulation is conducted by the smart trainer for the values of grade plus gear_ratio and what is the feeling of changing the gear_ration to simulate a virtual gear configuration.

If you're interested, I'll share my conclusions from these tests.

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 15:21, Roberto Viola @.***>) escribió:

the gear value is applied to the actual inclination value so just thinking it as a addition or subtraction to the current inclination value for zwift. zwift sends only this to the trainers and qz is overriding it with the gear value as zwift does for the trainers with virtual gear

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 15:12 José Manuel López Doña < @.***> ha scritto:

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination" sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) " >> a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination" sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962369815>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRAV2363DWXN72IVXJDYVHWLRAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM3DSOBRGU>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962384890>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAALYWAZFLH36YF6A4ZXFETYVHYNNAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DIOBZGA>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

sure i can add the gear ratio if you can confirm that the python script is working. it will be very easy

let me know

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 17:57 José Manuel López Doña < @.***> ha scritto:

Thanks, Roberto, for the information.

I believe that simulating virtual gearing involves more than just adding or subtracting from the current inclination. In this case, you lose the inertial physics in the simulation. Imagine you are climbing a 15% slope. If you set a virtual gearing of 15, and the result is a simulated incline of 0% in the smart trainer, the simulation won't include the inertia physics that the roller should be calculating for a 15% incline. In my experience it has an impact on pedaling cadence and the generated power.

Virtual gearing/shifting is a topic of interest to me, and some time ago, I invested some effort in it. For example, I found some patent documents with physical details that I'm attaching one of them in case it's of interest to you.

Regardless, if the smart trainer firmware doesn't take into account the virtual/physics bike ratio (front chain ring teeth / rear wheel cog teeth) when calculating resistance in simulation mode, along with factors like inclination, biker and bike weight, etc., it might pose a challenge in simulating an effective virtual gearing/shift.

Regarding the Tacx Neo smart trainer, I've reviewed the class that I assume the QZ app is using to control the resistance (src/devices/tacxneo2/tacxneo2.cpp). In my understanding (sorry if I'm mistaken), it manipulates the inclination (plus gear) to adjust the resistance. While I'm not an expert in using the API to control Tacx Neo, I've found the zacharyedwardbull/pycycling repository, and in the file pycycling/tacx_trainer_control.py, it describes a "Simulation mode" with three input objects (user_configuration, wind_resistance, and track_resistance) with parameters such as:

  • user_configuration: user_weight, bicycle_weight, bicycle_wheel_diameter, gear_ratio
  • wind_resistance: wind_resistance_coefficient, wind_speed, drafting_factor
  • track_resistance: grade, coefficient_of_rolling_resistance

Out of all these parameters, the one that grabs my attention the most is gear_ratio. In the documentation of the function: "The bike gear ratio (front chain ring teeth:rear wheel cog teeth)." In my understanding, bike gear ratio = physical ratio / virtual ratio. So, for a determinate bike if it always uses the same ring/cog teeth configuration the physical ratio is always a constant number.

I 'm going to do some tests with this python library pycycling and my Tacx Neo 1. I would like to verify if the simulation is conducted by the smart trainer for the values of grade plus gear_ratio and what is the feeling of changing the gear_ration to simulate a virtual gear configuration.

If you're interested, I'll share my conclusions from these tests.

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 15:21, Roberto Viola @.***>) escribió:

the gear value is applied to the actual inclination value so just thinking it as a addition or subtraction to the current inclination value for zwift. zwift sends only this to the trainers and qz is overriding it with the gear value as zwift does for the trainers with virtual gear

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 15:12 José Manuel López Doña < @.***> ha scritto:

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination"

sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination"

sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962369815>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRAV2363DWXN72IVXJDYVHWLRAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM3DSOBRGU>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962384890>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAALYWAZFLH36YF6A4ZXFETYVHYNNAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DIOBZGA>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962386545>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRC6W4XEMVBSLZ6S66LYVHZOJAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DMNJUGU>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

anyway zwift is a very poor app so all your considerations doesn't work on the zwift side where zwift doesn't send anything about wind and coefficients even without qz. keep this in mind :)

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 18:01 cagnulein @.***> ha scritto:

sure i can add the gear ratio if you can confirm that the python script is working. it will be very easy

let me know

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 17:57 José Manuel López Doña < @.***> ha scritto:

Thanks, Roberto, for the information.

I believe that simulating virtual gearing involves more than just adding or subtracting from the current inclination. In this case, you lose the inertial physics in the simulation. Imagine you are climbing a 15% slope. If you set a virtual gearing of 15, and the result is a simulated incline of 0% in the smart trainer, the simulation won't include the inertia physics that the roller should be calculating for a 15% incline. In my experience it has an impact on pedaling cadence and the generated power.

Virtual gearing/shifting is a topic of interest to me, and some time ago, I invested some effort in it. For example, I found some patent documents with physical details that I'm attaching one of them in case it's of interest to you.

Regardless, if the smart trainer firmware doesn't take into account the virtual/physics bike ratio (front chain ring teeth / rear wheel cog teeth) when calculating resistance in simulation mode, along with factors like inclination, biker and bike weight, etc., it might pose a challenge in simulating an effective virtual gearing/shift.

Regarding the Tacx Neo smart trainer, I've reviewed the class that I assume the QZ app is using to control the resistance (src/devices/tacxneo2/tacxneo2.cpp). In my understanding (sorry if I'm mistaken), it manipulates the inclination (plus gear) to adjust the resistance. While I'm not an expert in using the API to control Tacx Neo, I've found the zacharyedwardbull/pycycling repository, and in the file pycycling/tacx_trainer_control.py, it describes a "Simulation mode" with three input objects (user_configuration, wind_resistance, and track_resistance) with parameters such as:

  • user_configuration: user_weight, bicycle_weight, bicycle_wheel_diameter, gear_ratio
  • wind_resistance: wind_resistance_coefficient, wind_speed, drafting_factor
  • track_resistance: grade, coefficient_of_rolling_resistance

Out of all these parameters, the one that grabs my attention the most is gear_ratio. In the documentation of the function: "The bike gear ratio (front chain ring teeth:rear wheel cog teeth)." In my understanding, bike gear ratio = physical ratio / virtual ratio. So, for a determinate bike if it always uses the same ring/cog teeth configuration the physical ratio is always a constant number.

I 'm going to do some tests with this python library pycycling and my Tacx Neo 1. I would like to verify if the simulation is conducted by the smart trainer for the values of grade plus gear_ratio and what is the feeling of changing the gear_ration to simulate a virtual gear configuration.

If you're interested, I'll share my conclusions from these tests.

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 15:21, Roberto Viola @.***>) escribió:

the gear value is applied to the actual inclination value so just thinking it as a addition or subtraction to the current inclination value for zwift. zwift sends only this to the trainers and qz is overriding it with the gear value as zwift does for the trainers with virtual gear

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 15:12 José Manuel López Doña < @.***> ha scritto:

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination"

sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination"

sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962369815>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRAV2363DWXN72IVXJDYVHWLRAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM3DSOBRGU>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962384890>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAALYWAZFLH36YF6A4ZXFETYVHYNNAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DIOBZGA>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962386545>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRC6W4XEMVBSLZ6S66LYVHZOJAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DMNJUGU>

. You are receiving this because you were mentioned.Message ID: @.***>

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

jmlopezdona commented 8 months ago

Yes, I am aware that Zwift operates as a black box, only collecting power data sent by the device, and applying it to their internal algorithm to calculate speed based on drafting, height and weight of the avatar, road grade, etc.

I presume that Zwift delegates the simulation of the physics of virtual gearing to the (firmware) smart trainer. Therefore, they are requesting the vendor (such as Wahoo, which seems to be collaborating, while others like Garmin are not) to provide a compatibility API/firmawre. With this API, Zwift can send virtual gear information, and the device will simulate it accordingly.

El sáb, 24 feb 2024 a las 18:03, Roberto Viola @.***>) escribió:

anyway zwift is a very poor app so all your considerations doesn't work on the zwift side where zwift doesn't send anything about wind and coefficients even without qz. keep this in mind :)

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 18:01 cagnulein @.***> ha scritto:

sure i can add the gear ratio if you can confirm that the python script is working. it will be very easy

let me know

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 17:57 José Manuel López Doña < @.***> ha scritto:

Thanks, Roberto, for the information.

I believe that simulating virtual gearing involves more than just adding or subtracting from the current inclination. In this case, you lose the inertial physics in the simulation. Imagine you are climbing a 15% slope. If you set a virtual gearing of 15, and the result is a simulated incline of 0% in the smart trainer, the simulation won't include the inertia physics that the roller should be calculating for a 15% incline. In my experience it has an impact on pedaling cadence and the generated power.

Virtual gearing/shifting is a topic of interest to me, and some time ago, I invested some effort in it. For example, I found some patent documents with physical details that I'm attaching one of them in case it's of interest to you.

Regardless, if the smart trainer firmware doesn't take into account the virtual/physics bike ratio (front chain ring teeth / rear wheel cog teeth) when calculating resistance in simulation mode, along with factors like inclination, biker and bike weight, etc., it might pose a challenge in simulating an effective virtual gearing/shift.

Regarding the Tacx Neo smart trainer, I've reviewed the class that I assume the QZ app is using to control the resistance (src/devices/tacxneo2/tacxneo2.cpp). In my understanding (sorry if I'm mistaken), it manipulates the inclination (plus gear) to adjust the resistance. While I'm not an expert in using the API to control Tacx Neo, I've found the zacharyedwardbull/pycycling repository, and in the file pycycling/tacx_trainer_control.py, it describes a "Simulation mode" with three input objects (user_configuration, wind_resistance, and track_resistance) with parameters such as:

  • user_configuration: user_weight, bicycle_weight, bicycle_wheel_diameter, gear_ratio
  • wind_resistance: wind_resistance_coefficient, wind_speed, drafting_factor
  • track_resistance: grade, coefficient_of_rolling_resistance

Out of all these parameters, the one that grabs my attention the most is gear_ratio. In the documentation of the function: "The bike gear ratio (front chain ring teeth:rear wheel cog teeth)." In my understanding, bike gear ratio = physical ratio / virtual ratio. So, for a determinate bike if it always uses the same ring/cog teeth configuration the physical ratio is always a constant number.

I 'm going to do some tests with this python library pycycling and my Tacx Neo 1. I would like to verify if the simulation is conducted by the smart trainer for the values of grade plus gear_ratio and what is the feeling of changing the gear_ration to simulate a virtual gear configuration.

If you're interested, I'll share my conclusions from these tests.

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 15:21, Roberto Viola @.***>) escribió:

the gear value is applied to the actual inclination value so just thinking it as a addition or subtraction to the current inclination value for zwift. zwift sends only this to the trainers and qz is overriding it with the gear value as zwift does for the trainers with virtual gear

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 15:12 José Manuel López Doña < @.***> ha scritto:

Thanks, I'll run more tests when I come back home.

One question: Does changing gears only affect the simulation grade in the smart trainer, or does it also take into account the 'real' grade, considering factors like inertia?

El sáb, 24 feb 2024, 14:55, Roberto Viola @.***> escribió:

@jmlopezdona https://github.com/jmlopezdona i deeply checked the log and I can confirm you that the actual max delay is 1.2

this is the relevant part of the log of one gear changing (same for all of them)

sáb. feb. 24 12:17:25 2024 1708773445130 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff d1 4e ff aa // changeInclination"

sáb. feb. 24 12:17:25 2024 1708773445567 Debug: ../src/devices/bike.cpp void bike::setGears(double) setGears 4 sáb. feb. 24 12:17:25 2024 1708773445719 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "writing inclination -1.27" sáb. feb. 24 12:17:25 2024 1708773445722 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &) "

a4 09 4e 05 33 ff ff ff ff 31 4f ff 0b // changeInclination"

sáb. feb. 24 12:17:26 2024 1708773446721 Debug: ../src/devices/bluetooth.cpp void bluetooth::debug(const QString &)

at the sáb. feb. 24 12:17:25 you asked to change gears, then on the first inclination request received from zwift 200ms after, qz wass sending the new inclination with the gear applied.

I guess you can double check my analysis increasing more the gears in one time so that you can feel immediately the new resistance applied. Consider that 1 gear value for your trainer means 1% grade for zwift (you can increase or decrease this ratio increasing or decreasing the gear gain setting under the advanced setting)

Let me know!

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962369815>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRAV2363DWXN72IVXJDYVHWLRAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM3DSOBRGU>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962384890>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAALYWAZFLH36YF6A4ZXFETYVHYNNAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DIOBZGA>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962386545>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRC6W4XEMVBSLZ6S66LYVHZOJAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGM4DMNJUGU>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962422508>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAALYWFLX3LOWJE62DZPTX3YVILXLAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGQZDENJQHA>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

Ok cool. Ok so let's see how the gear way works! Keep me posted!

jmlopezdona commented 8 months ago

Hi Roberto,

I share the insights after doing some tests:

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 18:16, Roberto Viola @.***>) escribió:

Ok cool. Ok so let's see how the gear way works! Keep me posted!

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

cagnulein commented 8 months ago

For qz : test with zwift, I'm applying this only when zwift sends the inclination

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno sab 24 feb 2024 alle 20:18 José Manuel López Doña < @.***> ha scritto:

Hi Roberto,

I share the insights after doing some tests:

  • The Python library works well, but the gear_ratio parameter doesn't seem to influence the resistance of the trainer. After reviewing the issue list in github, someone mentioned in a comment that this parameter is used by the Tacx Neo to estimate cadence. Unfortunately, it's disappointing because I don't believe Garmin will update the firmware to simulate the physics of virtual gearing, similar to what it does in the Tacx Neo Bike.

  • On the other hand, I tested the QZ app without connecting to Zwift, and in this case, I did not observe any resistance changes in the trainer (gears ranging between -15 and 15).

Regards,

Jose Manuel

El sáb, 24 feb 2024 a las 18:16, Roberto Viola @.***>) escribió:

Ok cool. Ok so let's see how the gear way works! Keep me posted!

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1962426677>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRABP3SUFNQPASRAUWDYVIN65AVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGQZDMNRXG4>

. You are receiving this because you were mentioned.Message ID: @.***>

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

smulrine commented 8 months ago

I have to agree that something like this is happening; while riding on completely flat terrain (an underwater section) in Zwift, I changed to an easier gear, and although I could see the gears value changed immediately, it was at least 10 seconds before I felt the difference.

cagnulein commented 8 months ago

@smulrine did you try in that case to change the gear again? maybe the trainer is filtering out some value?

smulrine commented 8 months ago

Yes, I shifted up and down a couple of times but it didn't feel any different until it suddenly took effect a while later. Also had the same thing at the start of the ride (another flat section), changed right up to gear 7 step by step because I couldn't feel anything happening and suddenly, after about maybe 5 seconds, it became very hard to pedal.

cagnulein commented 8 months ago

Collect a debug log and write down the timestamp when it happens so I can check it! Thank you!

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno dom 25 feb 2024 alle 19:01 smulrine @.***> ha scritto:

Yes, I shifted up and down a couple of times but it didn't feel any different until it suddenly took effect a while later. Also had the same thing at the start of the ride (another flat section), changed right up to gear 7 step by step because I couldn't feel anything happening and suddenly, after about maybe 5 seconds, it became very hard to pedal.

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

smulrine commented 8 months ago

Here's a good one - joined a pace partner who happened to be on a flat section. I pushed the virtual gear up to 8 but it didn't take effect for about 10 seconds. I stopped the ride a couple of seconds later.

debug-Sun_Feb_25_19_23_10_2024.log

cagnulein commented 8 months ago

perfect got the issue, since it's flat zwift doesn't update the inclination, let me do a patch right now

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno dom 25 feb 2024 alle 20:34 smulrine @.***> ha scritto:

Here's a good one - joined a pace partner who happened to be on a flat section. I pushed the virtual gear up to 8 but it didn't take effect for about 10 seconds. I stopped the ride a couple of seconds later.

debug-Sun_Feb_25_19_23_10_2024.log https://github.com/cagnulein/qdomyos-zwift/files/14397546/debug-Sun_Feb_25_19_23_10_2024.log

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

jmlopezdona commented 8 months ago

Yes, it was my impression. When the terrain is flat, Zwift does not update the incline promptly, and there can be a delay of several seconds before sending the incline again. Shouldn't the QZ app remember the last incline value sent by Zwift and update the device's simulation slope when the virtual gear goes up or down?

Thanks Roberto.

El dom, 25 feb 2024, 20:46, Roberto Viola @.***> escribió:

perfect got the issue, since it's flat zwift doesn't update the inclination, let me do a patch right now

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno dom 25 feb 2024 alle 20:34 smulrine @.***> ha scritto:

Here's a good one - joined a pace partner who happened to be on a flat section. I pushed the virtual gear up to 8 but it didn't take effect for about 10 seconds. I stopped the ride a couple of seconds later.

debug-Sun_Feb_25_19_23_10_2024.log < https://github.com/cagnulein/qdomyos-zwift/files/14397546/debug-Sun_Feb_25_19_23_10_2024.log>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1963038684>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAALYWBSAEREVO6BHV73CODYVOG4ZAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRTGAZTQNRYGQ>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

done! @smulrine pull, build and report back! thanks!

smulrine commented 8 months ago

That was quick! Compiling just now but it might take a while since bike.h has changed. In the meantime here is a photo of my mini gears display :smile: 2024-02-25-16-37-45-821_exported_5861~2

cagnulein commented 8 months ago

that's nice! a lot of space for other metrics!

smulrine commented 8 months ago

Looks like it's working - I rode a couple of mostly flat miles there and I could feel the resistance change immediately when I shifted up and down. :+1: Excellent work as ever!

cagnulein commented 8 months ago

amazing @smulrine thanks for the confirmation!

@jmlopezdona are you on android right? i will build a new one ASAP

jmlopezdona commented 8 months ago

Yes I am in Android beta program. Thanks

El lun, 26 feb 2024, 7:19, Roberto Viola @.***> escribió:

amazing @smulrine https://github.com/smulrine thanks for the confirmation!

@jmlopezdona https://github.com/jmlopezdona are you on android right? i will build a new one ASAP

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

cagnulein commented 8 months ago

Great you will see the version 2.16.46 in the next few days

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno lun 26 feb 2024 alle ore 08:31 José Manuel López Doña < @.***> ha scritto:

Yes I am in Android beta program. Thanks

El lun, 26 feb 2024, 7:19, Roberto Viola @.***> escribió:

amazing @smulrine https://github.com/smulrine thanks for the confirmation!

@jmlopezdona https://github.com/jmlopezdona are you on android right? i will build a new one ASAP

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1963396814>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEIIMRGHGOLR465JX4VWNK3YVQSO7AVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRTGM4TMOBRGQ>

. You are receiving this because you were mentioned.Message ID: @.***>

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

jmlopezdona commented 8 months ago

Thanks fot the update. Now it's perfect!!!!

El lun, 26 feb 2024, 8:39, Roberto Viola @.***> escribió:

Great you will see the version 2.16.46 in the next few days

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno lun 26 feb 2024 alle ore 08:31 José Manuel López Doña < @.***> ha scritto:

Yes I am in Android beta program. Thanks

El lun, 26 feb 2024, 7:19, Roberto Viola @.***> escribió:

amazing @smulrine https://github.com/smulrine thanks for the confirmation!

@jmlopezdona https://github.com/jmlopezdona are you on android right? i will build a new one ASAP

— Reply to this email directly, view it on GitHub <

https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1963396814>,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AEIIMRGHGOLR465JX4VWNK3YVQSO7AVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRTGM4TMOBRGQ>

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub < https://github.com/cagnulein/qdomyos-zwift/issues/2153#issuecomment-1963476926>,

or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAALYWHSOCIK2QTKV4KQABDYVQ26XAVCNFSM6AAAAABDX6G6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRTGQ3TMOJSGY>

. You are receiving this because you were mentioned.Message ID: @.***>

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

cagnulein commented 8 months ago

Glad to hear that!