Intervals.icu now supports custom activity streams for extracting data from record messages in fit files. Click “Charts” under the activity timeline chart and then “Custom Streams”.
Click “Add Stream” to create a new stream or search for streams created and shared by other athletes. Note that these streams are per athlete. You can add your own streams to athletes you coach using the search button.
Currently you need to enter the name of the field manually. I am going to populate the drop down with field names from the selected activity soon. You can look at record messages in fit files on www.fitfileviewer.com.
Could you please explain a bit more about Units field?
For instance, I want to add “Ground Contact Time” measured in milliseconds. What should I choose there?
I noticed that if I enter manually Units field the same value as in Record field, I get what you showed in your screenshot. But if before that, I choose anything form the drop-down list, I cannot then update the field to a custom value
Tx. You should be able to edit units and make it whatever you want. Making match whatever is in the fit file is probably a good idea.
Intervals.icu uses this to decide what axis to use to plot the stream on custom activity trace charts. Plots with the same units go on the same axis by default.
Now I can create a custom chart comparing the power traces. It is clear that my trainer needs some calibration. I only just bought it and wasn’t about to fuss around with calibration with exciting TDF on the go.
I’m trying to add my favorite missing data stream, Di2 Gear Changes. I believe Rear Gear Changes are in “field 13” and Front Gear Changes are in “field 31” where the rear sends the actual tooth count, but the front appears to only send the position (ie 1 vs 2) and the tooth count is sent somewhere else. But I can’t get the stream graph to appears
Even after selecting Options → Reprocess File The graph never appears even if empty.
Odd request - could I use this to plot the radar data coming off my Varia Radar unit? I see some apps around that can do that (tell you how many cars passed you on a ride and how fast they were going). That data does get encoded into the FIT file if you have the right CIQ app installed (don’t know what fields are though).
Not a great help to my training, but interesting to me nonetheless.
This support is only for fields with names on the record messages. So if you can see it on fitfileviewer.com in a records section with a name then you can plot it.
Can we add the garmin HRV r-r values in to plot? I can’t figure out how you’d separate the varible number of values delimited by colons in each row:
hrv
630:630
1261:630:644
You can see these vaules in the downloaded streams csv, does it need a custom script?
Or more easily, can we plot the HRV values on an activity timeline vs time?
I’ve got WindFactor plotted - this comes from the WindField ConnectIQ app and represents the wind resistance, taking into account speed and relative direction.
I’ve now added Gear Ratio and Rear Gear graphs, these via the eGear+ ConnectIQ app, which adds the eTap gear data to the fit file. It also works with Shimano Di2 and Campagnolo systems.
I need to add specific support for plotting HRV because there is more than one value per second. So unfortunately you can’t use the custom activity streams feature to plot HRV. It might be possible when I add JavaScript for this but you would need to average the values for each second which might be ok for plotting but maybe not for other uses cases.
Thanks for this David, I did spend some time and parsed this data in a custom chart, got a very crude version of what I was after. A great system you have built. Thanks.
That’s great David. If I can remember correctly this would (eventually) also make it possible to show Di2 (and other electronic shifters) gear changes. I think there’s still something that needs to happen before that can work though.
This is a small part from di2 gear shifting in the fit file:
event 694 row(s)
timestamp(s)
data
field 17
field 18
event
event_type
event_group
radar_threat_level_max
radar_threat_count
radar_threat_avg_approach_speed(m/s)
radar_threat_max_approach_speed(m/s)
1058447087
838999554
-
-
rear_gear_change
marker
-
-
-
-
-
1058447087
0
-
-
rider_position_change
marker
-
-
-
-
-
1058447088
839000577
-
-
rear_gear_change
marker
-
-
-
-
-
1058447090
838999554
-
-
rear_gear_change
marker
-
-
-
-
-
1058447090
838998787
-
-
rear_gear_change
marker
-
-
-
-
-
1058447093
570497795
-
-
front_gear_change
marker
-
-
-
-
-
1058447093
570497284
-
-
rear_gear_change
marker
-
-
-
-
-
1058447093
570496773
-
-
rear_gear_change
marker
-
-
-
-
-
1058447093
3
-
-
rider_position_change
marker
-
-
-
-
-
1058447094
0
-
-
rider_position_change
marker
-
-
-
-
-
1058447357
570496262
-
-
rear_gear_change
marker
-
-
-
-
-
1058447357
570495751
-
-
rear_gear_change
marker
-
-
-
-
-
1058447357
570495240
-
-
rear_gear_change
marker
-
-
-
-
-
1058447357
570494729
-
-
rear_gear_change
marker
-
-
-
-
-
1058447605
570495751
-
-
rear_gear_change
marker
-
-
-
-
-
1058447605
838996743
-
-
front_gear_change
marker
-
-
-
-
-
1058447608
838997254
-
-
rear_gear_change
marker
-
-
-
-
-
1058447609
838998276
-
-
rear_gear_change
marker
-
-
-
-
-
1058447609
838998787
-
-
rear_gear_change
marker
-
-
-
-
-
1058447756
838999554
-
-
rear_gear_change
marker
-
-
-
-
-
1058447759
838998787
-
-
rear_gear_change
marker
-
-
-
-
-
1058447764
838998276
-
-
rear_gear_change
marker
-
-
-
-
-
1058447779
838998787
-
-
rear_gear_change
marker
-
-
-
-
-
1058447791
838999554
-
-
rear_gear_change
marker
-
-
-
-
-
In the data field the shift is encoded, but I can’t find it anymore. I think it was in the FIT file SDK from Garmin somewhere.