Export workout to Trainingspeaks using HR (instead of power)

Ok you can now convert workouts or entire weeks in our calendar to heart rate based. See below.

If more people start using this feature we will enhance it because right now it is 1 to 1 between % of HR threshold and % of FTP when in reality most people would have a slightly different calculation but this should be close enough. Not that short duration intervals are a bit hard due to HR lag and the conversion of values much greater than 100% of FTP will be more inaccurate.

1 Like

Nice Alex, will try out instantly for my workout today. Love already that the color of the grap changes from blue to read when yo switch to HR. Let’s see if TP recognizes the changes!

Will report back.

1 Like

So, here’s what I learned from the workout 2 days ago:

a) conversion seemed to work flawless in calender for the whole week and by clicking on the little heart of just a single workout (love this detail :heart:). So on the “technical side” this seems to be fine

b) Converting from FTP to HR results in crazy high HR, see screenshots for examples:
the FTP of 120%/203watts (Fig 1) resutls in a HR-T of 172%/279bpm (Fig 2). This doesn’t seem to be the 1:1 conversion you were talking about, right? Not sure if I’m missing a point here though :slight_smile:

c)Syncing with TP via calender works as expected ("% threshold heart rate" as unit) . That said, it shows differnet values than in TD: 172%/255bpm (instead of 172%/279bpmin TD)(FIg 3). HR-T is set to the same values in both platforms.

d) With FTP Workout (i.e. “unconverted”) opened in TD: when sending via the “send to” button in TD and then “TraingsPeaks HR” -> TP will show FTP (not HR). (Fig 4)

e)With HR workout (i.e. “converted”) opened in TD: when sending via the “send to” button in TD and then “TraingsPeaks HR” -> TP will show HR, as told to

f) using the procedure from e) results in perfectly reasonable HR-Values in TP! (Fig 5) Something happend on the way that seems to be right :partying_face:

g) also note how in procedure e) the TSS in TP changes from 107 to 94. Donno where that comes from

h)Wahoo showed 3 workouts on the ELEMNT Roam to choose from?

i) Wahoo had some trouble syncing the finished workouts with ELEMNT app, showing only basic valses like total distance and time but not the track and HR etc…

Not sure if h) and i) are related to this, but never expereicend these things before

Thanks again Alex for your deep dedication!
Marco

Addendum:

Just was checking today’s workout in the calendar and the sync with TP resulted in “% Functional Threshold Power” as unit in TP instead of HR, although, of course, was converted in TD before. So there seems to be something going on somewhere.

“Send to” didn’t have any effect in TP (in contrast to e) above).

BUT when “converting back” (using the little heart button) to FTP and then “Send to” to produce reasonable HR values in TP.

Strange stuff. Let us review.

Thanks for working through this new feature. I’ve like the design so far. If you can get the math right, I think there will be a lot of interest. Especially if you start the workout planning process from CJ.

Getting the math right, in my mind, includes addressing the observations by Macco above and solving for the conversion of workout power-based plan to HR.

Perhaps instead of prescribing a specific heart rate, can you specify a HR Zone (e.g., Z2 for 5 mins, and then perhaps just look up the HR range (e.g., 105-125) for the user, and write that in as the “planned HR”).

Since Zones are broad in terms of BPM, the HR range masks some of the HR lag (e.g., while moving into an interval of increased intensity, if the user can achieve the lower end of the Zone and complete the interval below the higher end of the interval, it’s a success. Or, if moving into a lower intensity interval it’s the reverse with HR).

Is it more important that a user hits the HR or Power exactly per interval, or is it better to get the TSS (or other similar metric) for the whole workout close to the planned TSS? I ask this, just as a way of guiding HR based users, and perhaps the design, to not require “tracing the outline” of each interval.

If the user starts from CJ, and only uses HR, is there any conversion happening, since you won’t have any FTP based no Power? How are you establishing the workout intensities? It seems if you solve this, then you solve for the “conversion” use case.

For the next few weeks, I am able to borrow a power meter, but I will try to make some observations between HR and Power conversions.

Ok this is fixed. Currently it is 1:1 meaning 105% of FTP = 105% of HR-T. We put a cap, since short duration HR does not make sense, we put cap at 130% so greater than 130% = 130%.

Yes I agree. This is V1 of this feature but we should improve it. The problem is each individual has different relationships between HR and power and it changes at differnt times, so you are right zones are almost more appropriate. Coggan also has his conversion averages we could use or it could be user definiable. I am struggling what to do with > 110% or > 130%. Really we should automatically generated interval comments lets say that popup and tell the user ok go super hard for 1 minute or something. :slight_smile:

I want to keep exploring ideas and having disucussions about this. I also need to consult with Andrea my main coach and a few others I run ideas by. It’s hard to do generically for all workouts but much easier to get it right for Coach Jack. I think TSS accuracy is not so critical I think TSS is a good broad stroke metric to use similar to HR. Just don’t increase your TSS crazy amounts for too long and generally if you raise your 90/180 day TSS slowly your fitness should improve, assuming you are getting addequate rest.

So here’s what I found on my last workout almost a week ago:

Conversion into HR worked fine and so did the sync wit TP (i.e. BPM shown in TD and autamtically and correctly (=same value) in TP).

What I found though was that the goal HR-range seemed to be pretty low after the conversion from power to HR. In my case, the workout (Pratfall 75 from Coach Jack) should include a lot/almost only Z2 (according to text), but after the conversion the highest HR was 110 BPM. As from the settings in TP (and also -+ wahoo and Strava) Z1 in my case ranges from 97-115 and Z2 from 116-134 and thus, Z2 ws never the goal on the workout (according to numbers). See Screenshots for reference also.

In my opinion, @LWC510 suggestion would be a huge step, by simply picking zones and converting them directly into HR. Optimally, each user would be able to specify/automatically calculate his/her own HR Zones.

Because from what I understand, TD workouts already are based on the zone system. so that would be the most direct and precise way?

As for the >110% thing, I don’t see any problems with “go super hard and have fun suffering”-approach :slight_smile:

I’ve been riding outdoors with the longer CJ workouts (like “Z2/Z3 Free-Ride Outside”) and following the intervals with a power meter and watching my heart rate. From what I can tell (and I am a new user, so sorry for anything that’s widely understood already) the workouts follow a template and then get “dialed in” using the user’s FTP. But the structure of the workout doesn’t change. So, sometimes you see a new interval start with only a few watts different. That’s fine, it keeps my attention. But, it’s also clear that CJ is trying to keep you at certain % of your FTP.

So, when trying to convert from wattage to an HR, perhaps you can come up with a formula that converts FTP to a Zone (using Coggan zones for example). But instead of just prescribing just a single zone, e.g., HR = 116-134 (“Zone 2”), what happens if you divide the zone into 3 segments: Z2.1 = 116-122, Z2.2=122-128, Z2.3 = 128-134. So let’s say the FTP % was in the lower 1/3 of Zone 2, then you assign an HR = Z2.1 = 116-122.

The reason I suggest this, is because the watts being prescribed for each interval are clearly trying to get you into a specific spot in a zone, e.g., “high Z2”, so rather just have an HR rider being anywhere from 116-134, instead the rider knows "he I gotta go for 128-134 (my “Z2.3”), and I need to get there sorta of quickly if my interval is 3 mins.

I think this approach would also help with inherent HR lag. 2 intervals that are next to each other that might differ by 10 watts are likely to have the same HR range (in my scheme, both wattages might fall into “Z.3”). So you get some smoothing of HR, but still get some nuance of bottom, top, or middle of the range.

Now, if the next interval is dropping from 200 watts down to 100 watts, in the “watts world” a power decrease is almost instantaneous reflected. However, HR is gonna take while to go from Z3.3 to Z1.3. But at least the user knows to back off quite a bit (e.g., 150 bpm to 110 bpm).

A user that’s actually trying to follow in an interval based on an HR zone is going to understand within a few rides that it take “a minute” to get to the next target HR zone. They might also not understand why there are 3 intervals that are all Z2.3 in a row (because the template that was used had a ramp of 10 watts each from first to 3rd interval, but they all fell within Z2.3).

I could be wrong here, but a good warm up, that has that short Zone 4/5 interval, seems like a must to get the heart responsive to bigger efforts later on in the workout.

Alex would have to test this approach out for all types of workouts and see where it works well and where it doesn’t. If you doing highly polarized intervals with short interval lengths, I don’t seen an answer as HR lag will not respond quick enough.

If you could give a tip about perceived exertion for each interval, this might be helpful. I’m not sure, it might be too much information. Maybe just by indicating “HR 128-134 @ 4 mins (Z2.3)” , the “Z2.3” ends up being a proxy for perceived exertion (PE). But now, I feel like I’ve created new industry terminology, which could confuse users. SO, maybe instead of my Z2.1, Z2.2, Z2.3, you never expose that and your instead showing “HR 128-134 @ 4 mins (PE = 3)” (using Freil’s RPE scale).

Anyway, hope this helps advance some thoughts.

So, two things. Generally CJ plans contain a lot of easy riding (especially the Z2 rides) and many people don’t like easy :), or easy is too easy, it takes practice. But yes, for some riders especially strong ones this conversion could be extra easy, this is not much risk from a quality training perspective but is a risk that it drives you crazy because it is just much too easy. But for the average person this 68% should be more like 75-78% which is a pretty big difference. 75% is easy but tolerably easy. First step was just to get it working but yes now we need to add user defined zones or conversion in some way. We are working on a few other things but should be able to start this in 10 days or so. I really want to support this in a useful way for people so we will do this.

1 Like

Yes, exactly. Using Coggans conversion would be much better than what it is now, or Coggan as the default allowing user to over ride it is the best and hopefully what we will do. Thanks so much for your feedback. Yes with HR making small HR changes does not make much sense. Even for outdoor small power changes don’t make that much sense, but right now we don’t clearly differentiate what is indoor versus outdoor. This is also something I want to improve but since people change oh it’s raining I will do indoor. A dynamic solution or multiple workouts (sync simplified to TrainingPeaks or download simplified vs indoor) and in our app keep the more interesting version. These discussions help me so again thanks.

Here’s another thought:

Since every platform I use (Trainingspeaks, Strava, Wahoo (and Garmin from what I know)) has already its own prespecified Zones: Wouldn’t it be possible to just use them / pick them up 7 trigger them?

Why don’t use whtas already there?

Generally I agree it sucks to have this data in so many places and have to change it in all of them when you want to change. Just to point out conversion from power % to HR % is not the same as zone ranges. We could use generic Coggan ranges but then put multipliers for each range, or we could allow custom HR zones like TP or other platforms do. Even connecting to get custom ranges from each platform would be a large task. The easiest initial solution is just simple conversions.

Zones would just be for the purpose of definining the multiplier at each level. This would be simplist model and give you 95% of what you need for the problem above.

For Zone 2 HR = (Power * 1.06) You could change the 1.06 to what you wanted.
For Zone 3 HR = (Power * 1.1)
…

As for the relative HR zones (instead of absolute point values) that @LWC510 suggests:

The Wahoo (at least the Elemnt Roam) indicates if you’re in, below or above the target HR, as shown in the screenshots. There even seems to be a tolerance (pic 2), where target HR is 122, actual HR is 118 but the LED on the left ondicates your “in the zone”. Pretty convenient feature :slight_smile:

1 Like