Core Body Temperature Sensor FIT File Issues

When I look at what data channels are being written to the FIT file when using a Core Body Sensor I see the following:

@core_data_quality

@core_reserved

@heat_strain_index

@skin_temperature

I don’t see you adding the @core_temperature channel which is arguably the most important as it’s the channel that contains your actual temperature.

The data for the @skin_temperature channel is also written a little strange as you are writing 31.90 degrees as 3,190

will the temperature recording from the Momentum be saved in the .fit file in the future? Currently it is not exported.

The way the skin temperature is written like that due to the formatting of the FIT file. Near the top of the File the developer field is defined which includes the scaling factor that is used for the specific field. As these are none standard fields it is possible that some applications that can decode FIT files do not automatically apply the scaling factor like you might get for the default/standard fields.

Concerning the Core Temperature, while this is an important value to understand what our temperature was, the value by itself does not indicate how effective your heat training has been. For this the Heat Strain Index (HSI) is more valuable. This will show if you were training the the correct zone.

@Philip_Amos and @Fabian_1992

Thank you both for flagging this to our attention. The team is investigating it.

Zwift utilizes FIT table 206 descriptors to define variables such as skin temperature, core data quality, and the heat strain index. However, for core temperature, Zwift instead employs a pseudo-native field with the identifier ID139, rather than assigning an explicit name to the variable. As a result, core temperature is present in the data stream as field xxx139 and must be programmatically mapped and interpreted by any software parsing the FIT file.

All CORE data fields are stored as UINT16 integers. For example, skin temperature is recorded as ‘3190’, which must be converted by the software to the correct value in degrees Celsius (31.9 °C).

Note that the core temperature field is mandatory, while anything else is optional; if any CORE data is present, core temp must be there. Based on your mention of channels, I infer that you are viewing CORE data in TrainingPeaks or WKO5, where access may be restricted to subscribers.

For accurate and free display of CORE data, I recommend using Intervals.icu or Golden Cheetah, both of which correctly interpret and present these fields at no cost.

Here is some display of CORE data from Zwift FIT in Intervals.icu


Thank you! Could you perhaps give some instructions on how to get that field to show in Intervals icu?

Activities > Click on any activity with CORE data > Charts. Core Temp and Skin Temp should be there.

If you cannot see them or you want to make some custom adjustments, click on the +Chart > Add Plot and pick Core Temp / Skin Temp from the menu.

To get Core Heat Zones or any other visual interpretation of data programmed by other users, click on the plus sign next to my Tab 8 to create a new tab. Press Activity Charts > Chart and select your desired chart from the menu.

Thanks. I get the error below.

This issue occurs because some users’ JavaScript code is not well-structured. The fix is to open a new tab and place your chart there first.