Custom activity streams

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.

Update 11 August 2023:

Update 12 August 2023:

12 Likes

That’s an awesome feature!

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

1 Like

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.

1 Like

Here is an example. I created a “PM Power” field for the “Powermeter Power” watts field that indieVelo dual records. I chose “watts” as the units:

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.

6 Likes

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 :frowning:
image
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. :slight_smile:

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.

I don’t know where Di2 stuff goes. I am going to add more general custom activity streams using JavaScript to dig out whatever at some point.

1 Like

No, I am seeing them here:


And some other data here:


Hi, cool feature.

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?

Cheers,

I’m trying to plot rra1 but the graph is not coming out, I leave the configuration


Thanks

Luisma yo si que he podido generarlo, he publicado el chart, puedes descargarlo.

Recuerda regenerar la actividad para que aparezca,

image

Saludos!

Ya lo he hecho eso. He parseado ahora el archivo fit y parece que hay algo mal en ese archivo

Si necesitas te puedo enviar un .fit para probarlo

Luego probaré con otro, justamente el de ayer tuve alguna desconexión con Garmin , es posible que sea eso. Gracias

This is so cool, David.

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.

Robert

4 Likes

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.

@Dr_Robert_D_Saunders Any feedback on eGear data field?

@Inigo_Tolosa Well, on the basis of a single 5 mile test ride, it installed and worked well without any problems! Excellent.

Edit - I’m happy with the Gear Combo field provided by eTap, and I was most interested in having the gear ratio in the fit file.

1 Like

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.

1 Like

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.