cagnulein / qdomyos-zwift

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

Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) #1209

Closed victorypoint closed 1 year ago

victorypoint commented 1 year ago

I'm testing a Zwift Run workout file loaded and started in Zwift and QZ at the same time. The idea is to have QZ control TM speed while the workout runs in Zwift.

I've loaded this custom Zwift workout into both Zwift (Windows 11) and QZ (Android) - https://whatsonzwift.com/workouts/ai-endurance/run-anaerobic-run

First workout entry in file is a ramp: Warmup Duration="620" PowerLow="0.65" PowerHigh="0.8" pace="1" /

Expected initial workout speed based on 5K pace (pace 1) of 21:34 = 13.91 kph x 0.65 = 9.04 kph (rounded to 9.0 kph)

Zwift displays initial workout speed as 9.0 kph and then progresses to 9.1, 9,2, 9.3, etc.. QZ (when configured with exact paces as Zwift) displays initial workout speed as 8.7 kph and then progresses to 9.2, 9.3, etc

QZ initial speed appears to be incorrect (8.7kph) and the ramp speeds appear to be 0.1 kph ahead of Zwift

Attached is QZ log of a test session where the TM starts at 2.0 kph, then the Zwift workout file is loaded and started. Treadmill/QZ speed starts at 8.7, 9.2 ... 9.5 then manually stopped

debug-Tue_Jan_24_15_47_34_2023.log

victorypoint commented 1 year ago

@victorypoint ok for the auto incline on zwift did you try to select WAHOO KICKR instead of WAHOO TREADMILL ? because I guess zwift wants to see a bike profile first.

@cagnulein, I just tested Zwift auto-inclination in bike mode. Two separate tests - one with Wahoo Treadmill, and one with Wahoo Kickr. Still no luck with either getting auto-inclination. I have treadmill speed force off for both tests. Let me know if you need me to go back to previous versions of QZ and QZCompanion to see where it stopped working. Can you confirm that auto-inclination still works in QZ for other supported equipment?

Logs attached for each test

zwift auto-incline - wahoo tm - speed force off.zip zwift auto-incline - wahoo kickr - speed force off.zip

cagnulein commented 1 year ago

@cagnulein, good! TM speed force off fixed the problem for gpx follow incline. So to summarize, having speed force on and having GPX follow both speed and incline is not supported? Just auto-incline supported?

no it should be supported. Of course the GPX should be from a run not from a cycling session, because the speed to force should be reasonable for a run, I don't know if it's the reason why you don't see it works. I have to test this myself too

cagnulein commented 1 year ago

zwift auto-incline - wahoo tm - speed force off.zip zwift auto-incline - wahoo kickr - speed force off.zip

in the first log i don't see any connection with zwift at all, but just a training program, maybe a wrong log? in the second instead i see a connection to zwift but never an inclination force. That's absolutely stange. because at least in bike mode you have to see it. When you're in bike mode do you see wattage on Zwift? did you try to run/ride a little in order to encounter a first inclination change?

I can re-test this on my end tomorrow, but at least on bike mode it has to work for sure because it's the standard way of running QZ for all the bikes, so I guess we're missing something very simple here.

cagnulein commented 1 year ago

@cagnulein , I just tested QZ Android 2.12.63 with same Roller Coaster zwo file as before. I'm getting the same result this time - the very first incline change was not received by QZCompanion. All other speeds and inclines were sent and received.

got the issue. QZ splitted it but in a very short time (13 ms) so QZC is filtering it as well. I guess I have to work on the QZC side, keeping a cache of the requested metrics

cagnulein commented 1 year ago

@cagnulein , I just tested QZ Android 2.12.63 with same Roller Coaster zwo file as before. I'm getting the same result this time - the very first incline change was not received by QZCompanion. All other speeds and inclines were sent and received.

ok install the QZC 3.2.18, it should be fixed

cagnulein commented 1 year ago

@victorypoint i checked both passo dello stelvio and box hill gpx and they don't have time reference data, that's why speed forcing is not working :) try to load a gpx from a walk or a run outside from strava, and you will see it works! Let me know

victorypoint commented 1 year ago

@cagnulein, I can't recall about seeing wattage but will test again today. In all Zwift tests, I pair in bike mode and go for a ride until I encounter incline change and let that run for a while.

For the debug log that doesn't show connection to Zwift, what should I be looking for in the log to confirm connection? I'll check for this so I'm not wasting your time looking through logs with no connection.

cagnulein commented 1 year ago

@cagnulein, I can't recall about seeing wattage but will test again today. In all Zwift tests, I pair in bike mode and go for a ride until I encounter incline change and let that run for a while.

if you ride a little for sure you paired the wattage and also you saw the wattage. Also be sure to enable the "controllable" icon in zwift in the pair screen.

For the debug log that doesn't show connection to Zwift, what should I be looking for in the log to confirm connection? I'll check for this so I'm not wasting your time looking through logs with no connection.

Don't worry :) Any just check "erg grade" tag in the file. If you see it, you received a zwift inclination at least one time.

victorypoint commented 1 year ago

@cagnulein, I can't recall about seeing wattage but will test again today. In all Zwift tests, I pair in bike mode and go for a ride until I encounter incline change and let that run for a while.

if you ride a little for sure you paired the wattage and also you saw the wattage. Also be sure to enable the "controllable" icon in zwift in the pair screen.

For the debug log that doesn't show connection to Zwift, what should I be looking for in the log to confirm connection? I'll check for this so I'm not wasting your time looking through logs with no connection.

Don't worry :) Any just check "erg grade" tag in the file. If you see it, you received a zwift inclination at least one time.

@cagnulein, I got auto-incline working again. Very strange - I had to uninstall and reinstall Zwift to get it to work. Maybe something in a Zwift configuration was causing the problem? I don't know. I just tested bike mode and it's all good. I'll test run mode with the meetup pairing trick tomorrow.

cagnulein commented 1 year ago

so strange! maybe you also changed qz? i mean using on windows instead of using on android?

victorypoint commented 1 year ago

so strange! maybe you also changed qz? i mean using on windows instead of using on android?

I did go back and forth trying QZ on Windows and Android but I'm usually very careful of QZ settings and using profiles copied between the two. In bike mode I found that auto-inclination worked even with speed force turned on. Will test run mode later today.

victorypoint commented 1 year ago

@cagnulein , I just tested QZ Android 2.12.63 with same Roller Coaster zwo file as before. I'm getting the same this time - the very first incline change was not received by QZCompanion. All other speeds and inclines were sent and received.

ok install the QZC 3.2.18, it should be fixed

@cagnulein, I think you've nailed it this time! I tested same roller coaster workout with QZ 2.12.63 and QZC 3.2.18. All speeds and inclines were successful. I'll keep testing more .zwo files and let you know how it goes. Nice work!

From QZ log, you can see that all metrics were ttransmitted for https://whatsonzwift.com/workouts/zwift-academy-run-2023/short-workout-roller-coaster

changeSpeed 6 true 1 0 changeSpeed 6.1 true 1 0 changeSpeed 6.2 true 1 0 changeSpeed 6.3 true 1 0 changeSpeed 6.4 true 1 0 changeSpeed 6.5 true 1 0 changeSpeed 6.6 true 1 0 changeSpeed 6.7 true 1 0

changeSpeed 11.4 true 1 0 changeSpeed 6 true 1 0 changeSpeed 11.4 true 1 0 changeSpeed 6 true 1 0 changeSpeed 11.4 true 1 0 changeSpeed 6 true 1 0 changeSpeed 11.4 true 1 0 changeSpeed 6 true 1 0

changeSpeed 6 true 1 0

changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0

changeSpeed 6 true 1 0

changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0 changeSpeed 10.32 true 1 0 changeInclination 6 true 1 0 changeSpeed 10.08 true 1 0 changeInclination 3 true 1 0

changeSpeed 7.2 true 1 0 changeSpeed 7.1 true 1 0 changeSpeed 6.9 true 1 0 changeSpeed 6.9 true 1 0 changeSpeed 6.7 true 1 0 changeSpeed 6.7 true 1 0 changeSpeed 6.6 true 1 0 changeSpeed 6.4 true 1 0 changeSpeed 6.3 true 1 0 changeSpeed 6.2 true 1 0 changeSpeed 6.1 true 1 0 changeSpeed 6.1 true 1 0

cagnulein commented 1 year ago

hurrah! So we can finally close this?! :D

victorypoint commented 1 year ago

hurrah! So we can finally close this?! :D

If you don't mind, I need to get your ideas on how to sync the Zwift workout with the QZ workout so they start at exactly the same time and show the same time elapsed. In QZ, it's a simple matter of hitting the Start button. In Zwift, more complex. Here's what we know about starting Zwift workouts:

So throwing out some ideas for syncing the start:

victorypoint commented 1 year ago

@victorypoint i checked both passo dello stelvio and box hill gpx and they don't have time reference data, that's why speed forcing is not working :) try to load a gpx from a walk or a run outside from strava, and you will see it works! Let me know

It's working! I loaded a GPX dog walk/run I did in the summer. The treadmill is following the exact speed and inclination I was doing with the dog. Haha - this is great! So I had speed force on for this. So we just have to remember that bike GPX files with no time reference/speed will not work when speed force is turned on.

cagnulein commented 1 year ago

It's working! I loaded a GPX dog walk/run I did in the summer. The treadmill is following the exact speed and inclination I was doing with the dog. Haha - this is great! So I had speed force on for this. So we just have to remember that bike GPX files with no time reference/speed will not work when speed force is turned on.

great!

So throwing out some ideas for syncing the start:

  • For options 1 and 2, is it possible to sync pressing the TM start button with QZ start?

if you load a training program and the treadmill speed goes to 0 the training program is automatically paused. So you can use this feature to sync

  • For option 3, is it possible to have QZ start at the exact same meetup time - e.g. 7:45pm?

yes in case we can add a metatag on the zwofile

also the option4 is the ocr on android ;)

victorypoint commented 1 year ago

if you load a training program and the treadmill speed goes to 0 the training program is automatically paused. So you can use this feature to sync

@cagnulein, thanks for your ideas. This one works! Pause the TM (speed 0), load the training program in QZ and hit start, load the training program in Zwift, then unpause the TM and both are in sync to the exact second! So that's the good news. The bad news is I ran the roller coaster training plan again with both Zwift and QZ in sync and unfortunately QZC missed a few incline changes. According to QZ debug log, all speed and incline changes were transmitted fine as before. Unfortunately I didn't get a TM logcat this time. I'll run this again tonight with both programs in sync and get complete logs.

also the option4 is the ocr on android ;)

This option is looking better all the time.

debug-Thu_Feb_16_14_35_13_2023.log

cagnulein commented 1 year ago

oh that's a shame! let's check the logcat next time!

victorypoint commented 1 year ago

oh that's a shame! let's check the logcat next time!

@cagnulein, I ran the Zwift/QZ synced workout again and got both logs this time. So again QZ transmitted all the proper speed and inclines. QZC on the other hand missed a few speed and swipe changes - including the first 3% incline change. The only difference this time is that Zwift is connected and receiving speed metrics over Wahoo Treadmill. The previous test was just QZ and the treadmill, no Zwift. QZ debug and QZC logcat attached.

Here's the QZ metrics:

Thu Feb 16 22:17:40 2023 1676600260857 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0
Thu Feb 16 22:18:24 2023 1676600304863 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7 true 1 0
Thu Feb 16 22:19:09 2023 1676600349866 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.1 true 1 0
Thu Feb 16 22:19:54 2023 1676600394862 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.2 true 1 0
Thu Feb 16 22:20:39 2023 1676600439860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.3 true 1 0
Thu Feb 16 22:21:24 2023 1676600484861 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.4 true 1 0
Thu Feb 16 22:22:09 2023 1676600529860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.5 true 1 0
Thu Feb 16 22:22:54 2023 1676600574860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.6 true 1 0
Thu Feb 16 22:23:39 2023 1676600619860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Thu Feb 16 22:24:09 2023 1676600649860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Thu Feb 16 22:24:54 2023 1676600694888 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Thu Feb 16 22:25:24 2023 1676600724860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Thu Feb 16 22:26:09 2023 1676600769860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Thu Feb 16 22:26:39 2023 1676600799859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Thu Feb 16 22:27:24 2023 1676600844858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Thu Feb 16 22:27:54 2023 1676600874860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Thu Feb 16 22:28:39 2023 1676600919859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0

Thu Feb 16 22:29:39 2023 1676600979860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:29:39 2023 1676600979863 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:30:39 2023 1676601039867 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:30:39 2023 1676601039868 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:31:39 2023 1676601099860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:31:39 2023 1676601099862 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:32:39 2023 1676601159860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:32:39 2023 1676601159862 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:33:39 2023 1676601219860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:33:39 2023 1676601219862 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:34:39 2023 1676601279863 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:34:39 2023 1676601279866 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:35:39 2023 1676601339858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:35:39 2023 1676601339860 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0

Thu Feb 16 22:36:39 2023 1676601399857 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0

Thu Feb 16 22:38:39 2023 1676601519860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:38:39 2023 1676601519862 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:39:39 2023 1676601579860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:39:39 2023 1676601579862 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:40:39 2023 1676601639859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:40:39 2023 1676601639861 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:41:39 2023 1676601699858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:41:39 2023 1676601699860 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:42:39 2023 1676601759861 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:42:39 2023 1676601759863 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Thu Feb 16 22:43:39 2023 1676601819863 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.9629 true 1 0
Thu Feb 16 22:43:39 2023 1676601819865 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Thu Feb 16 22:44:39 2023 1676601879861 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Thu Feb 16 22:44:39 2023 1676601879864 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0

Thu Feb 16 22:45:39 2023 1676601939861 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.3 true 1 0
Thu Feb 16 22:45:47 2023 1676601947860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.2 true 1 0
Thu Feb 16 22:45:55 2023 1676601955859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.1 true 1 0
Thu Feb 16 22:46:03 2023 1676601963859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8 true 1 0
Thu Feb 16 22:46:11 2023 1676601971866 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.9 true 1 0
Thu Feb 16 22:46:19 2023 1676601979860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.8 true 1 0
Thu Feb 16 22:46:27 2023 1676601987863 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.7 true 1 0
Thu Feb 16 22:46:35 2023 1676601995862 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.6 true 1 0
Thu Feb 16 22:46:43 2023 1676602003868 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.5 true 1 0
Thu Feb 16 22:46:52 2023 1676602012862 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.4 true 1 0
Thu Feb 16 22:47:00 2023 1676602020860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.3 true 1 0
Thu Feb 16 22:47:08 2023 1676602028860 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.2 true 1 0
Thu Feb 16 22:47:16 2023 1676602036859 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.1 true 1 0
Thu Feb 16 22:47:24 2023 1676602044858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7 true 1 0

And here's the input swipes in QZC:

    Line   5631: 02-16 22:17:39.562  1414  5957 I QZ:UDPListenerService: input swipe 1845 776 1845 625 200
    Line   7911: 02-16 22:18:23.514  1414  6776 I QZ:UDPListenerService: input swipe 1845 625 1845 622 200
    Line  10318: 02-16 22:19:08.989  1414  3150 I QZ:UDPListenerService: input swipe 1845 621 1845 618 200
    Line  12683: 02-16 22:19:53.526  1414  9539 I QZ:UDPListenerService: input swipe 1845 618 1845 615 200
    Line  15221: 02-16 22:20:38.425  1414  7147 I QZ:UDPListenerService: input swipe 1845 615 1845 612 200
    Line  17715: 02-16 22:21:23.862  1414  5957 I QZ:UDPListenerService: input swipe 1845 612 1845 609 200
    Line  20173: 02-16 22:22:08.413  1414  6776 I QZ:UDPListenerService: input swipe 1845 609 1845 606 200
    Line  22665: 02-16 22:22:53.863  1414  3975 I QZ:UDPListenerService: input swipe 1845 606 1845 603 200
    Line  25158: 02-16 22:23:38.415  1414 12733 I QZ:UDPListenerService: input swipe 1845 603 1845 430 200
    Line  26834: 02-16 22:24:08.827  1414  5957 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
    Line  29381: 02-16 22:24:53.993  1414 17503 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
    Line  31007: 02-16 22:25:23.462  1414 25993 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
    Line  33586: 02-16 22:26:08.977  1414 26393 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
    Line  35222: 02-16 22:26:38.430  1414 21604 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
    Line  37862: 02-16 22:27:23.945  1414 23444 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
    Line  39631: 02-16 22:27:53.427  1414 23810 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
    Line  45951: 02-16 22:29:38.489  1414 29319 I QZ:UDPListenerService: input swipe 1845 621 1845 476 200

    Line  49689: 02-16 22:30:38.689  1414 15525 I QZ:UDPListenerService:  input swipe 75 714 75 528 200
    Line  53736: 02-16 22:31:38.924  1414  9539 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
    Line  57931: 02-16 22:32:38.504  1414  1888 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
    Line  62375: 02-16 22:33:38.452  1414 22336 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
    Line  66342: 02-16 22:34:38.971  1414  8728 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
    Line  66344: 02-16 22:34:38.976  1414  6776 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
    Line  70473: 02-16 22:35:38.574  1414 20862 I QZ:UDPListenerService:  input swipe 75 528 75 621 200

    Line  74819: 02-16 22:36:38.535  1414  1888 I QZ:UDPListenerService: input swipe 1845 476 1845 621 200
    Line  83035: 02-16 22:38:38.869  1414  8403 I QZ:UDPListenerService: input swipe 1845 621 1845 476 200

    Line  87268: 02-16 22:39:38.523  1414 13105 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
    Line  91741: 02-16 22:40:39.034  1414 10524 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
    Line  96330: 02-16 22:41:38.642  1414 11995 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
    Line 101223: 02-16 22:42:38.559  1414  8737 I QZ:UDPListenerService:  input swipe 75 528 75 621 200

    Line 106104: 02-16 22:43:39.107  1414 10524 I QZ:UDPListenerService: input swipe 1845 476 1845 467 200
    Line 111113: 02-16 22:44:38.694  1414 27433 I QZ:UDPListenerService: input swipe 1845 466 1845 475 200
    Line 115838: 02-16 22:45:38.549  1414 21604 I QZ:UDPListenerService: input swipe 1845 476 1845 581 200
    Line 116480: 02-16 22:45:46.603  1414 20496 I QZ:UDPListenerService: input swipe 1845 581 1845 584 200
    Line 117092: 02-16 22:45:54.499  1414 31530 I QZ:UDPListenerService: input swipe 1845 585 1845 587 200
    Line 117842: 02-16 22:46:02.878  1414 27103 I QZ:UDPListenerService: input swipe 1845 587 1845 590 200
    Line 118405: 02-16 22:46:10.690  1414  3613 I QZ:UDPListenerService: input swipe 1845 590 1845 593 200
    Line 119087: 02-16 22:46:18.582  1414 32203 I QZ:UDPListenerService: input swipe 1845 594 1845 597 200
    Line 119704: 02-16 22:46:26.546  1414 25660 I QZ:UDPListenerService: input swipe 1845 597 1845 600 200
    Line 120328: 02-16 22:46:34.466  1414 15525 I QZ:UDPListenerService: input swipe 1845 600 1845 603 200
    Line 121013: 02-16 22:46:43.012  1414 23177 I QZ:UDPListenerService: input swipe 1845 603 1845 606 200
    Line 121739: 02-16 22:46:51.641  1414 11909 I QZ:UDPListenerService: input swipe 1845 606 1845 609 200
    Line 122368: 02-16 22:46:59.625  1414 27433 I QZ:UDPListenerService: input swipe 1845 609 1845 612 200
    Line 122909: 02-16 22:47:07.610  1414 29426 I QZ:UDPListenerService: input swipe 1845 612 1845 615 200
    Line 123510: 02-16 22:47:15.680  1414 19728 I QZ:UDPListenerService: input swipe 1845 615 1845 618 200
    Line 124160: 02-16 22:47:23.699  1414 31133 I QZ:UDPListenerService: input swipe 1845 618 1845 621 200

zwo-sync-test.zip

victorypoint commented 1 year ago

@cagnulein, here's another related input swipe problem I encountered during testing the workout with QZ and QZC/treadmill. I launch QZ on my phone, start the TM in manual mode at 2 kph, load the .zwo in QZ and press start. No speed change from 2 - 6.9 kph happens on the TM. I click the QZ +speed button to change speed from 2 to 2.5kph. This works. I then reload the same .zwo in QZ and press start. The TM changes speed to 6.9kph.

So looking at the logs, QZ is transmitting the correct speeds.

Thu Feb 16 22:04:48 2023 1676599488858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0
Thu Feb 16 22:04:55 2023 1676599495692 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 2.5 true 1 0
Thu Feb 16 22:05:18 2023 1676599518857 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0

QZC only receives 2 swipes, the 2-2.5 I did manually, and the final 2.5-6.9 that the workout sent. The first 6.9 was missed.

Line 1871: 02-16 22:04:54.633  1388 16862 I QZ:UDPListenerService: input swipe 1845 776 1845 761 200
Line 3147: 02-16 22:05:17.738  1388  9088 I QZ:UDPListenerService: input swipe 1845 761 1845 625 200

QZ and QZC logs attached.

_adb remote problem.zip

cagnulein commented 1 year ago

@cagnulein, here's another related input swipe problem I encountered during testing the workout with QZ and QZC/treadmill. I launch QZ on my phone, start the TM in manual mode at 2 kph, load the .zwo in QZ and press start. No speed change from 2 - 6.9 kph happens on the TM. I click the QZ +speed button to change speed from 2 to 2.5kph. This works. I then reload the same .zwo in QZ and press start. The TM changes speed to 6.9kph.

So looking at the logs, QZ is transmitting the correct speeds.

Thu Feb 16 22:04:48 2023 1676599488858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0
Thu Feb 16 22:04:55 2023 1676599495692 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 2.5 true 1 0
Thu Feb 16 22:05:18 2023 1676599518857 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0

QZC only receives 2 swipes, the 2-2.5 I did manually, and the final 2.5-6.9 that the workout sent. The first 6.9 was missed.

Line 1871: 02-16 22:04:54.633  1388 16862 I QZ:UDPListenerService: input swipe 1845 776 1845 761 200
Line 3147: 02-16 22:05:17.738  1388  9088 I QZ:UDPListenerService: input swipe 1845 761 1845 625 200

QZ and QZC logs attached.

_adb remote problem.zip

i got the issue! since probably QZC was already open before this qz session, it has cached the last requested speed that was exactly 6.9. So when QZ ask for the very first time again 6.9, QZC skipped it. It shouldn't happen if you restart QZC too. What could it be a fix for this? Checking the current KPH instead of the last requested one? But I'm worried about the moment where qz sent the input swipe command but the treadmill didn't react yet. What do you think?

cagnulein commented 1 year ago

@cagnulein, I ran the Zwift/QZ synced workout again and got both logs this time. So again QZ transmitted all the proper speed and inclines. QZC on the other hand missed a few speed and swipe changes - including the first 3% incline change. The only difference this time is that Zwift is connected and receiving speed metrics over Wahoo Treadmill. The previous test was just QZ and the treadmill, no Zwift. QZ debug and QZC logcat attached.

fixed! it's in the QZC 3.2.21 !

victorypoint commented 1 year ago

Checking the current KPH instead of the last requested one? But I'm worried about the moment where qz sent the input swipe command but the treadmill didn't react yet. What do you think?

That could work. Or perhaps clearing the QZC cache of previous speed and incline after a specific time period?

victorypoint commented 1 year ago

fixed! it's in the QZC 3.2.21 !

Thank-you. What did you do to solve this? Will test soon.

cagnulein commented 1 year ago

That could work. Or perhaps clearing the QZC cache of previous speed and incline after a specific time period?

i like the idea to clear it when a new changed kph event will come in the log. What do you think?

Thank-you. What did you do to solve this? Will test soon.

the fact that the incline is still miss some steps

victorypoint commented 1 year ago

i like the idea to clear it when a new changed kph event will come in the log. What do you think?

Worth testing for sure. It seems like an elegant solution.

victorypoint commented 1 year ago

fixed! it's in the QZC 3.2.21 !

@cagnulein, great news! New QZC did all the swipes. Excellent work! I'll keep testing more workouts but this is performing quite nice and we have a way to sync the start of the workouts. Auto-speed and auto-incline in Zwift workouts is here!

QZ metrics:

Fri Feb 17 12:06:37 2023 1676649997824 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.9 true 1 0
Fri Feb 17 12:07:21 2023 1676650041827 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7 true 1 0
Fri Feb 17 12:08:06 2023 1676650086810 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.1 true 1 0
Fri Feb 17 12:08:51 2023 1676650131810 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.2 true 1 0
Fri Feb 17 12:09:36 2023 1676650176792 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.3 true 1 0
Fri Feb 17 12:10:21 2023 1676650221810 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.4 true 1 0
Fri Feb 17 12:11:06 2023 1676650266811 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.5 true 1 0
Fri Feb 17 12:11:51 2023 1676650311810 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.6 true 1 0
Fri Feb 17 12:12:36 2023 1676650356821 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Fri Feb 17 12:13:06 2023 1676650386816 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:13:51 2023 1676650431806 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Fri Feb 17 12:14:21 2023 1676650461812 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:15:06 2023 1676650506826 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Fri Feb 17 12:15:36 2023 1676650536866 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:16:21 2023 1676650581800 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 13.2148 true 1 0
Fri Feb 17 12:16:51 2023 1676650611820 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:17:36 2023 1676650656829 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:18:36 2023 1676650716846 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:18:36 2023 1676650716848 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:19:36 2023 1676650776821 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:19:36 2023 1676650776823 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:20:36 2023 1676650836798 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:20:36 2023 1676650836800 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:21:36 2023 1676650896839 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:21:36 2023 1676650896841 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:22:36 2023 1676650956794 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:22:36 2023 1676650956795 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:23:36 2023 1676651016848 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:23:36 2023 1676651016850 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:24:36 2023 1676651076781 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:24:36 2023 1676651076782 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:25:36 2023 1676651136780 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 6.95518 true 1 0
Fri Feb 17 12:27:36 2023 1676651256823 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:27:36 2023 1676651256826 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:28:36 2023 1676651316805 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:28:36 2023 1676651316807 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:29:36 2023 1676651376810 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:29:36 2023 1676651376812 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:30:36 2023 1676651436809 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:30:36 2023 1676651436811 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:31:36 2023 1676651496832 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:31:36 2023 1676651496834 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:32:36 2023 1676651556831 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.9629 true 1 0
Fri Feb 17 12:32:36 2023 1676651556834 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 6 true 1 0
Fri Feb 17 12:33:36 2023 1676651616847 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 11.6847 true 1 0
Fri Feb 17 12:33:36 2023 1676651616850 Debug: ../src/treadmill.cpp virtual void treadmill::changeInclination(double, double) changeInclination 3 true 1 0
Fri Feb 17 12:34:36 2023 1676651676858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.3 true 1 0
Fri Feb 17 12:34:44 2023 1676651684837 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.2 true 1 0
Fri Feb 17 12:34:52 2023 1676651692836 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8.1 true 1 0
Fri Feb 17 12:35:00 2023 1676651700822 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 8 true 1 0
Fri Feb 17 12:35:08 2023 1676651708819 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.9 true 1 0
Fri Feb 17 12:35:16 2023 1676651716784 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.8 true 1 0
Fri Feb 17 12:35:24 2023 1676651724808 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.7 true 1 0
Fri Feb 17 12:35:32 2023 1676651732845 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.6 true 1 0
Fri Feb 17 12:35:40 2023 1676651740818 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.5 true 1 0
Fri Feb 17 12:35:49 2023 1676651749845 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.4 true 1 0
Fri Feb 17 12:35:57 2023 1676651757804 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.3 true 1 0
Fri Feb 17 12:36:05 2023 1676651765824 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.2 true 1 0
Fri Feb 17 12:36:13 2023 1676651773798 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7.1 true 1 0
Fri Feb 17 12:36:21 2023 1676651781858 Debug: ../src/treadmill.cpp virtual void treadmill::changeSpeed(double) changeSpeed 7 true 1 0

QZC input swipes:

Line   2005: 02-17 12:11:51.726  1402 18162 I QZ:UDPListenerService: input swipe 1845 606 1845 603 200
Line   4452: 02-17 12:12:36.863  1402 17796 I QZ:UDPListenerService: input swipe 1845 603 1845 430 200
Line   6097: 02-17 12:13:06.656  1402 19236 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
Line   8609: 02-17 12:13:51.814  1402 18860 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
Line  10262: 02-17 12:14:21.927  1402  3530 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
Line  12792: 02-17 12:15:06.793  1402 19932 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
Line  14540: 02-17 12:15:37.823  1402 14134 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
Line  17142: 02-17 12:16:22.053  1402 12970 I QZ:UDPListenerService: input swipe 1845 621 1845 429 200
Line  18992: 02-17 12:16:52.191  1402  8670 I QZ:UDPListenerService: input swipe 1845 429 1845 621 200
Line  25229: 02-17 12:18:36.987  1402  7852 I QZ:UDPListenerService: input swipe 1845 621 1845 476 200
Line  25231: 02-17 12:18:37.017  1402 18528 I QZ:UDPListenerService:  input swipe 75 714 75 621 200
Line  29475: 02-17 12:19:36.870  1402 22040 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  33783: 02-17 12:20:37.409  1402 30759 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  33784: 02-17 12:20:37.419  1402 19236 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  38132: 02-17 12:21:36.767  1402  1615 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  38134: 02-17 12:21:36.772  1402 11402 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  42358: 02-17 12:22:36.894  1402 19566 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  46724: 02-17 12:23:37.124  1402  7108 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  50645: 02-17 12:24:36.789  1402 26584 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  54837: 02-17 12:25:36.903  1402 17423 I QZ:UDPListenerService: input swipe 1845 476 1845 621 200
Line  62709: 02-17 12:27:36.715  1402 17342 I QZ:UDPListenerService: input swipe 1845 621 1845 476 200
Line  67215: 02-17 12:28:37.032  1402 16350 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  67216: 02-17 12:28:37.043  1402  5094 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  71713: 02-17 12:29:36.898  1402 13502 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  71714: 02-17 12:29:36.900  1402 32113 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  76363: 02-17 12:30:36.910  1402 20269 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  76368: 02-17 12:30:36.977  1402  4687 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  81211: 02-17 12:31:36.824  1402 28321 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  85919: 02-17 12:32:37.282  1402 30063 I QZ:UDPListenerService: input swipe 1845 476 1845 467 200
Line  85943: 02-17 12:32:37.437  1402  7852 I QZ:UDPListenerService:  input swipe 75 621 75 528 200
Line  91091: 02-17 12:33:37.053  1402 24324 I QZ:UDPListenerService: input swipe 1845 466 1845 475 200
Line  91150: 02-17 12:33:37.401  1402 28367 I QZ:UDPListenerService:  input swipe 75 528 75 621 200
Line  95899: 02-17 12:34:37.200  1402 31749 I QZ:UDPListenerService: input swipe 1845 476 1845 581 200
Line  96613: 02-17 12:34:45.102  1402 21548 I QZ:UDPListenerService: input swipe 1845 581 1845 584 200
Line  97298: 02-17 12:34:52.950  1402 26925 I QZ:UDPListenerService: input swipe 1845 585 1845 587 200
Line  98062: 02-17 12:35:01.827  1402  5915 I QZ:UDPListenerService: input swipe 1845 587 1845 590 200
Line  98658: 02-17 12:35:09.061  1402  9239 I QZ:UDPListenerService: input swipe 1845 590 1845 593 200
Line  99277: 02-17 12:35:17.063  1402 19643 I QZ:UDPListenerService: input swipe 1845 594 1845 597 200
Line  99912: 02-17 12:35:24.922  1402 19566 I QZ:UDPListenerService: input swipe 1845 597 1845 600 200
Line 100597: 02-17 12:35:32.928  1402 22739 I QZ:UDPListenerService: input swipe 1845 600 1845 603 200
Line 101143: 02-17 12:35:40.904  1402  5094 I QZ:UDPListenerService: input swipe 1845 603 1845 606 200
Line 101734: 02-17 12:35:49.852  1402 23993 I QZ:UDPListenerService: input swipe 1845 606 1845 609 200
Line 102349: 02-17 12:35:58.054  1402 20599 I QZ:UDPListenerService: input swipe 1845 609 1845 612 200
Line 103008: 02-17 12:36:05.820  1402 14134 I QZ:UDPListenerService: input swipe 1845 612 1845 615 200
Line 103656: 02-17 12:36:14.174  1402  9051 I QZ:UDPListenerService: input swipe 1845 615 1845 618 200
Line 104278: 02-17 12:36:21.743  1402 18285 I QZ:UDPListenerService: input swipe 1845 618 1845 621 200

_zwo sync test.zip

cagnulein commented 1 year ago

great!

victorypoint commented 1 year ago

@cagnulein, testing workout sync again today, The speed change timings were a little off, then I I realized that my Zwift 5K pace changed on the weekend and I forgot to update it in QZ. Is there any way you know of to sync Zwift pace timings with QZ automatically? I don't see pace information in Zwifts prefs.xml for example.

cagnulein commented 1 year ago

no i can't unfortunately, zwift doesn't have any API for this. I'm always thinking more that OCR will be the way to go. Could you ask you to run a zwift workout session with the peloton auto sync on from android so we can collect a full zwift workout session by OCR? then we can check if it's doable

What do you think?

Il giorno lun 27 feb 2023 alle 23:30 Al Udell @.***> ha scritto:

@cagnulein https://github.com/cagnulein, testing workout sync again today, The speed change timings were a little off, then I I realized that my Zwift 5K pace changed on the weekend and I forgot to update it in QZ. Is there any way you know of to sync Zwift pace timings with QZ automatically? I don't see pace information in Zwifts prefs.xml for example.

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

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

victorypoint commented 1 year ago

Oh absolutely. Always happy to test new things ☺️

victorypoint commented 1 year ago

@cagnulein, just to confirm, I just have to enable peloton auto-sync and no other QZ settings while connected to NT treadmill with QZC?

cagnulein commented 1 year ago

Hah enable also the notification icon in the experimental settings if you didn't already. You can also simple use the fake treadmill setting for this, no need to be really connected to a treadmill. Then qz has to be on background and zwift on foreground for the whole workout

victorypoint commented 1 year ago

@cagnulein, I tested workout sync again last night. One problem kept coming up as I repeated the test. When TM is stopped, the iFit screen does not show the onscreen speed and elevation controls - just a big stop and start button. When the synced workout starts by pressing the TM start button (which always sets speed to default 2.0 kph), the first QZ swipe is often missed. In this case, the first swipe should be speed 7.0 kph. If I let the workout continue then eventually the 7.1 kph swipe is received. So the problem is there's a bit of delay when the TM switches from paused screen to workout screen (where the speed and incline sliders appear). This delay is causing the TM to miss the first 7.0 kph swipe.

cagnulein commented 1 year ago

a solution could be keep forcing the speed or inclination until that value is confirmed by a "changed" log line. what do you think?

victorypoint commented 1 year ago

a solution could be keep forcing the speed or inclination until that value is confirmed by a "changed" log line. what do you think?

Sure, let's give it a try. It makes sense.

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.