Data Field: OneDataRun

This is a support and Requests thread for OneDataRun.

This field was born from my need as a runner to include a lot of data , keep it visible and not switch between different screens.
In addition , during years of training with different watches I have come to appreciate the number called running index, running Economy, running performance Index or other names , all basically calculating a formula based on pace and speed and factoring distance . In short , the faster you go and lower your heart rate is for that pace the better shape you are in . as Heart rate drifts up over long distances I also take this into account. the number used as RPI is calculated as such and i have learned to appreciate the feel it gives me for my current shape in a run over many years.
good reading :http://www.runnersworld.com/sweat-science/tracking-fitness-with-the-heart-rate-running-speed-index
a good example of tracking over time : (not mine) http://1.bp.blogspot.com/_X6V6FdIyNGM/SWwlAyrXouI/AAAAAAAAC4I/gIFsruIkBGg/s1600-h/Running+Index+%4031Dec2008.JPG

Description

A single data field for running , including all you need for your run.

Highlights: Race Mode, Heart rate gauge, Time in zones, Running performance Index (recorded), Smoothed pace, Average pace, Distance, Time, GPS, Time of day

Now also supporting FR630,FR230,FR235,FR735.

(For previous users - please read below sections 9-10 for new features)

Installation is done as usual through the store . Then add the data field to your running app (note this is a data field, install accordingly- see bottom of page here). Note this is a single field layout.

The Data field is adjusted to your measurements units and your background settings.

(Now able to switch between speed and pace in settings.)

Features:

1. Color coded Heart rate zone gauge.

Gray - Zone 1

Blue- Zone 2

Yellow - Zone 3

Red - Zone 4

Dark Red- Zone 5

Zones are taken from your running profile.

2 .Heart Rate in BPM

3. RPI - Running Performance Index, Shown initially as "--" on the right of the heart rate, is a formula based on Pace, Heart rate and distance that calculates automatically as the run progresses . First values will show after 10 minutes of running. The values should be between 30-70 at the end of a run and are a very good indicator for your performance comparison between different runs. RPI is also saved in your run summary in connect as a graph showing RPI through the whole run.

you can read more about different indexes and measurements of running efficiency here:

http://www.runnersworld.com/sweat-science/tracking-fitness-with-the-heart-rate-running-speed-index

https://www.trainingpeaks.com/blog/the-best-way-to-monitor-your-run-training-daily/

http://fellrnr.com/wiki/Running_Economy

4. Pace - Is a 12 seconds moving window average of GPS pace (can be configured also as speed in Mobile connect settings)

5. A.Pace - Is the average accumulated run pace (or speed) calculate while the app is not stopped.

6. Distance - in KM/Miles based on your device settings

7. Timer - Duration of run calculated while app is running (hours will show up in small characters when relevant).

8. Time of day/GPS Quality - Shown on the bottom of the screen (this will show only on Fenix/D2/Chronos series)

-Background Green- GPS good

-Background Yellow - GPS usable

-Background Red- GPS not usable

9. HR zone graph - The graph will show in the middle of the screen with the time in percentage from overall time plotted as the run progresses. Color coding for zones as the gauge is applied.(note : in 630/235/735 will also have the current heart rate pointer on this graph).In addition the current zone color will show up on the top of the screen for easier visibility during a run.

10. Race mode - can be turned on or off through Mobile connect settings default is off . When switched on when you pass a KM/Mile marker and see that the distance is not correct , click the lap button. distance will round accordingly and pace re calculated. A purple line will now appear below the distance field denoting the distance is now adjusted. if you feel something is not right press the lap button again within 20 seconds and the distance/pace will revert to GPS distance un-adjusted. (of course this can be done at any time by clicking lap and again lap within 20 second).

Note:although tested live , my suggestion is to use before a race at least once to get used to it.

Hope you enjoy.

Comments/feedback/Requests are welcome.

Install a data field:

Long press UP-Settings-Apps-Running-Data Screens-desired Screen 1..10 -layout- single-Field-Select "ConnectIQ Fields" -RunDataField =Done configuration.

In case of an error while using - uninstall the data field , restart the watch, re-install. in most cases this will solve the issue.
  • Lap Pace/Average Pace switch

    Hello,

    Your OneRunData data field keeps getting better with every new version and I especially love that you were able to squeeze in the “time in zones” diagram.

    I was wondering if it would be possible to add one more setting via Mobile Connect that would let us choose whether we want do display “Lap Pace” instead “Average Pace” field. That option would really come in handy for interval training.

    Keep up the good work, regards,
    Sasha
  • Hello,

    Your OneRunData data field keeps getting better with every new version and I especially love that you were able to squeeze in the “time in zones” diagram.

    I was wondering if it would be possible to add one more setting via Mobile Connect that would let us choose whether we want do display “Lap Pace” instead “Average Pace” field. That option would really come in handy for interval training.

    Keep up the good work, regards,
    Sasha


    Makes sense to me. a question I am wondering on , what is last lap pace? is it the last 1000m moving pace or is it the pace since last Lap push, and then do I want to see my last lap pace (one thats ended) or the current lap?
    thoughts are welcome.
  • Makes sense to me. a question I am wondering on , what is last lap pace? is it the last 1000m moving pace or is it the pace since last Lap push, and then do I want to see my last lap pace (one thats ended) or the current lap?
    thoughts are welcome.


    It would be the average pace since the last lap push (either manual or automatic lap).

    Fenix 3HR has a built-in „Lap Pace“ data field that does what I’m trying to describe here. It shows the average pace of the current lap. Its value is automatically reset when lap counter increases. For my normal runs I use 1km as automatic lap, but for interval workouts (created via Garmin Connect Web) it varies. E.g. I might be doing 5x1000m intervals with 500m resting periods. In this case Fenix’s “lap” lengths will automatically vary: 1000m interval lap length and 500m resting lap lengths. I haven’t tried it but I believe that it should behave similarly when lap counter is manually increased via lap button.

    Now bear with me for a second because I’ve never dabbled with Connect IQ and Monkey C so I don’t know if this info can be easily retrieved. I am browsing the SDK documentation now and it seems that it isn’t exposed as a simple property of Toybox.Activity.Info object and it sure seems that it would require some extra effort to compute this data. Again, I have to say that this is the first time I’m looking at the SDK so I might be way off but I found that onTimeLap() function/event handler is triggered whenever lap counter is increased:
    https://developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/WatchUi/DataField.html#onTimerLap-instance_method

    This could be used to save currentLapStartTime (the value of Toybox.Activity.Info.elapsedTime when onTimeLap is triggered) and currentLapStartDistance (current value of Toybox.Activity.Info.elapsedDistance).
    From there it should be relatively easy to compute “lap pace” in real-time as:
    lapPaceInMsPerMeters = (elapsedTime - currentLapStartTime) / (elapsedDistance - currentLapStartDistance)
    Look out for possible divide by zero errors here, though :)

    Don’t know if any of this would work, because like I said I’ve never played with the SDK on my own.

    Regards,
    Sasha
  • It would be the average pace since the last lap push (either manual or automatic lap).

    Fenix 3HR has a built-in „Lap Pace“ data field that does what I’m trying to describe here. It shows the average pace of the current lap. Its value is automatically reset when lap counter increases. For my normal runs I use 1km as automatic lap, but for interval workouts (created via Garmin Connect Web) it varies. E.g. I might be doing 5x1000m intervals with 500m resting periods. In this case Fenix’s “lap” lengths will automatically vary: 1000m interval lap length and 500m resting lap lengths. I haven’t tried it but I believe that it should behave similarly when lap counter is manually increased via lap button.

    Now bear with me for a second because I’ve never dabbled with Connect IQ and Monkey C so I don’t know if this info can be easily retrieved. I am browsing the SDK documentation now and it seems that it isn’t exposed as a simple property of Toybox.Activity.Info object and it sure seems that it would require some extra effort to compute this data. Again, I have to say that this is the first time I’m looking at the SDK so I might be way off but I found that onTimeLap() function/event handler is triggered whenever lap counter is increased:
    https://developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/WatchUi/DataField.html#onTimerLap-instance_method

    This could be used to save currentLapStartTime (the value of Toybox.Activity.Info.elapsedTime when onTimeLap is triggered) and currentLapStartDistance (current value of Toybox.Activity.Info.elapsedDistance).
    From there it should be relatively easy to compute “lap pace” in real-time as:
    lapPaceInMsPerMeters = (elapsedTime - currentLapStartTime) / (elapsedDistance - currentLapStartDistance)
    Look out for possible divide by zero errors here, though :)

    Don’t know if any of this would work, because like I said I’ve never played with the SDK on my own.

    Regards,
    Sasha


    you are actually very close to the way I implement pace anyway. I dont like the pace from the info object . I do it with distance/time and will implement the same in lap.
    The only problem with all these is memory issues as this datafield is feature reach and I am on the limit all the time (16Kb.....yes, the year is 2107...). I already implemented it similar to what you guessed from API. just need some time to polish . weekend hopefully.
  • It would be the average pace since the last lap push (either manual or automatic lap).

    Fenix 3HR has a built-in „Lap Pace“ data field that does what I’m trying to describe here. It shows the average pace of the current lap. Its value is automatically reset when lap counter increases. For my normal runs I use 1km as automatic lap, but for interval workouts (created via Garmin Connect Web) it varies. E.g. I might be doing 5x1000m intervals with 500m resting periods. In this case Fenix’s “lap” lengths will automatically vary: 1000m interval lap length and 500m resting lap lengths. I haven’t tried it but I believe that it should behave similarly when lap counter is manually increased via lap button.

    Now bear with me for a second because I’ve never dabbled with Connect IQ and Monkey C so I don’t know if this info can be easily retrieved. I am browsing the SDK documentation now and it seems that it isn’t exposed as a simple property of Toybox.Activity.Info object and it sure seems that it would require some extra effort to compute this data. Again, I have to say that this is the first time I’m looking at the SDK so I might be way off but I found that onTimeLap() function/event handler is triggered whenever lap counter is increased:
    https://developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/WatchUi/DataField.html#onTimerLap-instance_method

    This could be used to save currentLapStartTime (the value of Toybox.Activity.Info.elapsedTime when onTimeLap is triggered) and currentLapStartDistance (current value of Toybox.Activity.Info.elapsedDistance).
    From there it should be relatively easy to compute “lap pace” in real-time as:
    lapPaceInMsPerMeters = (elapsedTime - currentLapStartTime) / (elapsedDistance - currentLapStartDistance)
    Look out for possible divide by zero errors here, though :)

    Don’t know if any of this would work, because like I said I’ve never played with the SDK on my own.

    Regards,
    Sasha


    actually this is how I already implemented it :-)
    Soon to be released.
  • This seems to be a great data field. Only thing missing for me is cadence data. Do you plan to add it somewhere?
  • This seems to be a great data field. Only thing missing for me is cadence data. Do you plan to add it somewhere?


    thanks for the feedback. this is planned for one of the future versions.
  • From a design perspective, I guess it would be quite easy to add cadence in Garmin 230/235 by separating the upper third of the screen into two fields, one for cadence and one for heart rate. Colours on the top would also reflect the two metrics accordingly. For Fenixes and other more expensive devices that have the heart rate graphic on the top of the screen, things are more complex.
  • Is there any way to create graphs with RPI over time without needing to manually copy/paste each data point?

    Also- does it matter if I start out the run with raised heart rate instead of starting with resting heart rate in the calculation of RPI? I guess not if you use the personal settings of heart rate zones in Garmin connect? :) Would be nice to have an explanation of the calculation formula.