The text to use for average power is show_avg=“1” , and needs to be added after each line where there’s a lap/interval, as shown in the bug report above from @SkayKand
Hmm … according to this site show_avg is not supported for IntervalsT: https://github.com/h4l/zwift-workout-file-reference/blob/master/zwift_workout_file_tag_reference.md#element-IntervalsT
Would you or @Momiar mind testing this file? I have manually added show_avg.
JOIN_Cycling_20x_2_min_intensive_endurance_intervals.zwo (835 Bytes)
Thanks for testing. IntervalsT elements now get show_avg=1. If you don’t want this add the “hidepower” flag to the first step in the set:
4x
- 2m 80% hidepower
- 1m 60%
Thanks David and Gerald. Appreciate the extra effort to make this work again!
Apologies for reviving this old topic, but it seems quite relevant - it is about using IntervalsT
for intervals.
With Zwift integration working great, there is a benefit to have almost entire workout made up from the intervals - Zwift awards 20% of the XP for the intervals compared for regular blocks.
I tried to make workouts which use intervals like this:
7x
- 60s 66%
- 61s 51%
This works fine and translates to IntervalsT
block. However when I tried to add more intervals like this, things break down, for example:
1x
- 60s 43%
- 61s 45%
1x
- 60s 47%
- 61s 50%
7x
- 60s 66%
- 61s 51%
1x
- 60s 47%
- 61s 50%
Translates to:
<workout>
<SteadyState show_avg="1" Power="0.43" Duration="60">
<textevent message="1/1" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.45" Duration="61"/>
<SteadyState show_avg="1" Power="0.47" Duration="60">
<textevent message="1/1" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.5" Duration="61"/>
<IntervalsT OnPower="0.66" OffPower="0.51" show_avg="1" Repeat="7" OffDuration="61" OnDuration="60">
<textevent message="7x"/>
</IntervalsT>
<SteadyState show_avg="1" Power="0.47" Duration="60">
<textevent message="1/1" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.5" Duration="61"/>
</workout>
For the life of me, I can’t find a way to force it to use IntervalsT
- any idea what am I doing wrong?
And somewhat related question - is it possible to create repeating blocks which have other repeating blocks inside?
i believe nested blocks are not supported (yet)
meaning things like
3x
-5m 40%
-5m 70%
2x
- 10m 80%
- 10m 50%
or in math terms
3x [ (5@40%, 5@ 70%), 2x[(10@80%, 10@59%)] ]
Well, hope there was a request for them (the original forum thread is excessively long), but if not - my post should count as one
well, interval blocks are by definition - blocks of > 1x
what you’re trying to do technically isn’t interval blocks. Seems more like gaming the system
Having said that, I guess it’s perfectly legal in terms of what Zwift would allow (?)… you could try manually doing the ZWO and see if it works.
yes there is
Yes, it works perfectly well in Zwift and no, the 1x
is not the issue, seems like Intervals code insists on making first several minutes of the workout in SteadyState
blocs regardless:
2x
- 60s 43%
- 61s 45%
7x
- 60s 66%
- 61s 51%
Results in this:
<workout>
<SteadyState show_avg="1" Power="0.43" Duration="60">
<textevent message="1/2" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.45" Duration="61"/>
<SteadyState show_avg="1" Power="0.43" Duration="60">
<textevent message="2/2" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.45" Duration="61"/>
<IntervalsT OnPower="0.66" OffPower="0.51" show_avg="1" Repeat="7" OffDuration="61" OnDuration="60">
<textevent message="7x"/>
</IntervalsT>
</workout>
There seems to be some logic in this, but I am at loss - why
Maybe @david can clarify…
Warmup
-5m 50%
2x
-10m 40%
-10m 40%
2x
-10m 45%
-10m 40%
2x
-10m 50%
-10m 40%
2x
-10m 55%
-10m 40%
2x
-10m 60%
-10m 40%
5x
-5m 80%
-2m 40%
IntervalsT seems to only be triggered once the interval target is at > 45% (i only did try 5% increments) and I noted yours shows 43%
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workout_file>
<author>app4g</author>
<sportType>bike</sportType>
<tags/>
<workout>
<SteadyState show_avg="1" Power="0.5" Duration="300"/>
<SteadyState show_avg="1" Power="0.4" Duration="600">
<textevent message="1/2" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.4" Duration="600"/>
<SteadyState show_avg="1" Power="0.4" Duration="600">
<textevent message="2/2" duration="10"/>
</SteadyState>
<SteadyState show_avg="1" Power="0.4" Duration="600"/>
<IntervalsT OnPower="0.45" OffPower="0.4" show_avg="1" Repeat="2" OffDuration="600" OnDuration="600">
<textevent message="2x"/>
</IntervalsT>
<IntervalsT OnPower="0.5" OffPower="0.4" show_avg="1" Repeat="2" OffDuration="600" OnDuration="600">
<textevent message="2x"/>
</IntervalsT>
<IntervalsT OnPower="0.55" OffPower="0.4" show_avg="1" Repeat="2" OffDuration="600" OnDuration="600">
<textevent message="2x"/>
</IntervalsT>
<IntervalsT OnPower="0.6" OffPower="0.4" show_avg="1" Repeat="2" OffDuration="600" OnDuration="600">
<textevent message="2x"/>
</IntervalsT>
<IntervalsT OnPower="0.8" OffPower="0.4" show_avg="1" Repeat="5" OffDuration="120" OnDuration="300">
<textevent message="5x"/>
</IntervalsT>
</workout>
</workout_file>
That first set of reps is not made into IntervalsT because the OnPower (43%) is less than the OffPower (45%). I have an explicit check for that. I could remove it but am worried that maybe the workout won’t work in Zwift if I do.
Could you please check that OnPower < OffPower works in Zwift. If it does I will change the Intervals.icu ZWO generator. Tx.
<workout>
<IntervalsT OnPower="0.43" OffPower="0.45" show_avg="1" Repeat="7" OffDuration="61" OnDuration="60">
<textevent message="7x"/>
</IntervalsT>
<IntervalsT OnPower="0.66" OffPower="0.51" show_avg="1" Repeat="7" OffDuration="61" OnDuration="60">
<textevent message="7x"/>
</IntervalsT>
</workout>
Hi!
I run several workouts where OnPower is less than OffPower - simulated warmup ramp and they worked.
But I will test the one you posted specifically and report tomorrow.
I wonder if specific way to tag a pair of intervals for IntervalsT
makes sense… For example - use +
instead of -
Or somehow tax the multiplier, ex. 3x!
…
Just a thought
If IntervalsT with OnPower lower than OffPower works in Zwift then I would rather just generate those. Thats what people would expect.
I tested the specific sample you provided first:
It works fine - however there is a well-known issue with custom workouts in Zwift - they have their power rounded to nearest value, divisible by 5 - so your sample with 43% and 45% ended up the same W:
I changed this to be 39% and 51% so you can see that it is still fine:
But good thing is - when Zwift integrated TrainerRoad, they were “forced” to fix this issue, but only for workouts passed via API - so here is a sample of actual recovery workout I used today which was pushed from Intervals calendar:
So - if you can remove this restriction and allow for IntervalsT
to be generated from any pair - that would be great!
Also - thinking about second level nesting - if you can make some updates syntax which generates IntervalsT
from a single line, then things like this would be much easier, example:
5x
- 1x 1m 40% / 1m 50%
- 1x 1m 60% / 1m 70%
- 1m 30%
This can generate 5 repeats of a pair of IntervalsT
with Repeat/OnPower/OffPower power as specified on each line… Such syntax addition may remove need for 2nd level nesting when repeating a set of intervals and steady state sections…
I have deployed the update, tx for testing. Regarding changing the workout syntax, I need to be very careful with that. Risk of breaking existing workouts etc…
Thank you so much for a quick response! I will test this out later tonight
Yes, I understand that changing syntax can be dangerous, but still hope you can come up with a way to implement this - will be so much easier to make repeats of intervals blocks!
Other way I was thinking of is using blocks:
5x
(
1x
- 1m 40%
- 1m 50%
1x
-1m 60%
- 1m 70%
- 1m 30%
)
This is same as the sample in my previous post. Usually, using some unique markers for the block start/end should be safe.