# Building workout using zone number instead of percentage range

Hello, I have read through the post regarding workout building, and I wondered if it is possible to specify an intensity using zones?

e.g.

• 10m Z1 LTHR
• 1h10m Z2 LTHR
• 10m Z1 LTHR

If not, do people generally memorize the percentages of their zones, or look them up in the settings view?

Thanks.

I have added that to the todo list. I think people tend to use percentages because the zones are quite wide e.g. there is a huge difference between 106% and 120% and thats all Z5 for me (power zones).

1 Like

Yeah that makes sense. Perhaps a nice improvement would be to show the power and HR ranges in a tooltip or popup on the workout builder modal.

Thats a good idea. Will do soon.

2 Likes

In triathlon people use zones all the time. (Also, intervals defined by distance instead of time)

The ability to quickly create a workout using zones and then specify the percentages if necessary would be nice

1 Like

How would your ERG trainer react in this situation? The range of power in L4 is 90-105%, so the Garmin workout pegs it in the middle, i.e. 97%.

As someone that uses a non-smart trainer, itâ€™s easy to increase/decrease power based on how average HR is tracking; the goal would be to have minimal cardiac drift.

Thereâ€™s a good argument for having a â€śrangeâ€ť of values within a zone/level. If my athletes are supposed to do a workout at VO2max power, and they struggled on the previous workouts, or are feeling a little fatigued, Iâ€™ll tell them to keep it closer to 106% and see how they react; the first and last interval needs to be the same for it to be effective. Likewise, if theyâ€™re feeling good, then Iâ€™ll ask them to push it closer to 120% for all intervals. Itâ€™s still within the same â€śzone/levelâ€ť. The % doesnâ€™t really make a difference, and nor would having it a â€śzonesâ€ť. Executing it is key, and being able to review it afterwards is all Iâ€™m really interested to see.

1 Like

Most trainers (software/apps) also has the quick +/- button to get the % or Raw Watts up or down to further fine tune it based on what you are feeling. so using the exact wattage/% range to me is really a bit counter to the final goal of just riding to the zone.

I have added support for specifying workout steps by zone for power, heart rate and pace. So you can do:

``````- 30m Z2 HR
``````

And the range will be low Z2 - high Z2 for the athlete.

6 Likes

Great update, thanks!

I think there is a little bug introduced, it looks like itâ€™s not counting Z1 anymore:

Until yesterday everything was ok.

EDIT: oh, I understand what is happening here. My â€śdescriptionsâ€ť (Z3, Z4,â€¦) are now clashing with this new functionality, probably triggering this workout to be interpreted as power based.

If I copy your workout, it shows Z1 once it is added.

• Warmup Z1 10m 60-58% LTHR

3x
Z3 2m 83-94% LTHR

Edit: or get rid of the Z1/2 and only use

• 10m 50-68-% LTHR

3x

• 2m 83-94% LTHR

1 Like

Curiousâ€¦ this is a Bike Workout thatâ€™s HR Based? (Indoors on Turbo or outdoors?)

Yes, outdoors. Itâ€™s not ideal, but good enough for the start without powermeter

1 Like

Drat â€¦ that is going to cause some problems with existing workouts. The default is power so if you have â€śZ2â€ť in a step for an existing HR based workout you now also have power. Intervals.icu will pick power or HR for the workout depending on the settings of the athlete.

@david for Zone based workouts targets, I noticed in the JSON file it is marked as (for a Z2 workout)

â€śdurationâ€ť:4800,â€śpowerâ€ť:{â€śvalueâ€ť:55,â€śunitsâ€ť:"%ftp"},â€śhrâ€ť:{â€śvalueâ€ť:2,â€śunitsâ€ť:â€śhr_zoneâ€ť}}

Where would I be able to get the definition of the Zones? I hope that you have planned to add the zones definition somewhere in the JSON file downloads (similar to how youâ€™re already adding LTHR and MAX_HR and the like into the JSON file)

Thanks

Which endpoint are you getting that from?

They will be different from a direct download vs getting it from the API?
let me check.

For a workout like this:

{â€śdurationâ€ť:600,â€śstepsâ€ť:[{â€śpowerâ€ť:{â€śvalueâ€ť:2,â€śunitsâ€ť:â€śpower_zoneâ€ť},â€śdurationâ€ť:600}]
{â€śidâ€ť:â€śZ2â€ť,â€śzoneâ€ť:2,â€śnameâ€ť:â€śZ2â€ť,â€ścolorâ€ť:"#009e00",â€śmaxâ€ť:75,â€śminWattsâ€ť:111,â€śmaxWattsâ€ť:150,â€śpercentRangeâ€ť:â€ś56% - 75%â€ť,â€śsecsâ€ť:600}

So, it should be plausible to get the Power Zone Ranges from the id:Z2

Having a Power Zone range for indoor turbo training would be troublesome. Looks like intervals.icu just provides the middle of the zone 65.5 % ((56+75)/2) for MRC. Which is fine. ERG mode needs an actual target rather than a range. Edit: Supported now. BreakAway can now parse Power Zone Workouts using

1. if not a ramp, will use the middle of the zone as Power Target
2. if ramp, we will ramp from bottom of zone to top of zone (eg: from 56% to 75% of Power Z2)

For Z2 HR workout

This is what I get from the API Endpoint as well as the Download JSON.

[{â€śdurationâ€ť:600,â€śhrâ€ť:{â€śvalueâ€ť:2,â€śunitsâ€ť:â€śhr_zoneâ€ť}}]

Dratsâ€¦ I just got caught by this as wellâ€¦
Changing it to Zone3 instead of Z3 worked.

using plain text is indeed going to be more challenging

I have update the â€śJSONâ€ť workout download to include the actual watts, bpm and mps values for power, hr and pace targets in steps. These are calculated using the zones etc for the athlete.

``````{
"duration": 3600,
"ftp": 290,
"target": "POWER",
"steps": [
{
"duration": 3600,
"power": {
"value": 2.0,
"units": "power_zone"
},
"hidepower": false,
"_power": {
"value": 190.0,
"start": 162.0,
"end": 218.0
}
}
],
"options": {}
}
``````

The resolved values are in _power, _hr and _pace.

Absolute (not a range) power, pace and HR targets are converted into a range using a percentage of value (powerRange=2.5, paceRange=2.5, hrRange=1.5). You can specify these as query parameters to override.

If the workout has steps using power and/or HR and/or pace then the athletes preferences for the sport are used to choose how to execute the workout. This is in the â€śtargetâ€ť field. All targets are resolved in any case but maybe someone wants to use this.

So you donâ€™t have to mess around with the zones to try calculate power etcâ€¦

1 Like

some observations and quick question.

1. TARGET
You mentioned that this is in the Athleteâ€™s preference for the sport. Then this would not have any impact? (I tried on a workout that has both Power and HR, and used â€śHRâ€ť and it still shows â€śtarget: POWERâ€ť. Only when I removed all references of power, then the workout becomes â€śtarget=HRâ€ť. This is the intended behaviour? )

This may become useful as I too am trying to differentiate between w HR Based workout (No Power Targets at all), a Power Based workout (no HR Targets at all) and a Hybrid Power + HR
based workout.

Hybrid power + hr workout = some parts user is using Power to control the trainer, some parts, user is asking for HR to control power targets. I may also expand this to using slope targets instead of wattage targets which would make HR Based training simpler (something like riding outdoors - and users get a > HR target beep or < hr target beep)

2. Whatâ€™s the usage of â€śhidepowerâ€ť?

3. Looks like youâ€™ve removed all the (power)zoneTimes, maxHR, LTHR, FTP valuesâ€¦
Would it be at all possible to re-instate the maxHR / LTHR / FTP . I currently store power based workouts as % of FTP as it easier to scale as userâ€™s FTP changes. (The workouts donâ€™t have to change. ) Iâ€™m doing the same thing for HR Based Training as well. Basically, this change broke everything Iâ€™m been testing/coding for past ~3weeks lolz.)

If you could re-instate the maxHR/LTHR/FTP, then I can actually back-calculate the actual watts/bpm/mps into %. power_zone and hr_zone and it can be â€śbest of both worldsâ€ť in terms of flexibility.

Edit: Stupid meâ€¦ youâ€™ve provided %FTP and %HR values as well as the corresponding actual watts/bpmâ€¦ i think I can work w thisâ€¦ just need to refactor a bunch of stuffsâ€¦ "dontâ€™ change anything yet"

1. I donâ€™t quite understand the powerRange/hrRange parameters. How does the workout that uses this look like?