Ultra Finish Time Prediction and Checkpoints
· v1.1.8
About
*** After updating open the settings and confirm your values as some settings have changed!!!****
Please update to the current version if you are getting a CIQ crash (!) showing in app.
This is feature extended version of my prior datafield. https://apps.garmin.com/en-US/apps/6257a0bf-058c-4d8e-a9c7-a951852132e0
As with that one this is primarily written for my own needs but feel it might useful for others hence the public release. Because of memory limits on older devices I have to release it as a new datafield and it is only avaialble for newer watches with a memory limit greater than 28K.
The primary function is to give you a real time prediction of your estimated finish time based on a configurable window backwards in time and warn you if you're going faster or slower than your target pacing for your target finish time. The new features include prediction weighting, tracking checkpoint distances and mileage correction.
Since I wrote this primarily for use in ultra marathons, I've written it to be as power friendly as I can to keep the battery hit to the minimum possible, 90%+ of the calculations/code only run on the delayed update tick. Features that aren't configured like checkpoints or pace warnings don't get calculated to save cpu cycles (and power).
It will predict shorter races, I've used it for 5K's.
While I've tested it on the watches that in theory should be able to run it using the Garmin simulator, I've only real world tested this version on a Fenix 6X.
Features:
You got this: An runner set inspirational short phrase that will flash at you on the datafield while it's paused pre start and the datafield is on the screen.
Finish Time: Predicts your current projected finish time for the target distance based on a configurable look back time window and update cycle.
Weighting: You can set a weighted predictive average from 50% to 100% of the lookback window. This helps average out highs and lows if you have the weighting less than 100%.
Pace Warnings: If you're too far ahead of or behind your overall target finish time (or next checkpoint) it'll display how far ahead or behind you are. You can set how big a percentage off pace it should trigger on and change the color of the watch face and text. Defaults to red face for 'too hot' and blue for 'too cold'.
Better Elapsed Time: Elapsed or Remaining (predicted) time in hours and minutes (who gives a deuce about seconds in a hundred?) to work around Garmin's ridiculously tiny hours font when it goes double digits.
Race Checkpionts: Add up to 9 checkpoints over the course of the race with a distance, time and optional name. The display will predict how far ahead or behind you are to the next checkpoint time and optionally flip between the elapsed time and checkpoint time in one of the 3 fields.
Mileage Correction: Set up to 2 'mileage correction' checkpoints and correct the prediction using the pause button to trigger them. For example say there's an aid station at mile 52. So you can add a correction checkpoint of 52 miles. When you get to that aid station you see your watch has measured 49 miles. Pause and unpause the activity and now the datafield will predict on the corrected mileage. You can set a second correction checkpoint further down the road as well to re-correct it. Pause a 3rd (or more) time to disable corrections.
Non-Moving Tracking: It can track non-moving time in real time and display it on screen if it exceeds x% of your target time or always. You can also turn on a real time non-moving timer that will start displaying each time you're stopped for 60+ seconds. Non-Moving time is based on cadence, not GPS data to avoid GPS 'scatter distance' during stops. Non-Moving time is displayed rounded down to the nearest minute and only displays when there is 1+ minutes of it.
Color Configurable: You can of course change the color of the screen and text and have different colors for being hot, cold and on pace.
What's new
Rough manual can be found here - https://runsalty.com/uftp/
1.1.0-1.1.8- Fixed crashing due to who knows what but something changed in connect IQ, all these versions were resolve that. no functional changes. it's currently compiled for only 6X as I had to setup the coding environment from scratch. Ping me if you'd like another model added.
1.0.9 - fixed naming and version number, no function changes
1.0.8 - Fixed a crash bug when using 4 or more checkpoints.
1.0.7 - Modified the center field to have the option to display average pacing for the current checkpoint interval (or overall if you have no checkpoints or run out of checkpoints) and a combo flip option of the target time for the next checkpoint if there is one and the average pace.
NOTE: Non-Moving Time: Non-Moving time can be off if you're not using a foot pod of some kind. I calculate non-moving time based on cadence. Without a foot pod cadence is calculated by movements of the watch. If you're moving (walking slow, looking at the watch, whatever) without moving the arm the watch is on the watch will a cadence of 0 so it counts as non-moving time. I don't have a way to fix this, I can't use GPS distance because when you're not moving for real, GPS is 'chaos walking' around you generating distance and would count as moving time. Just something to be aware of, no footpod then non-moving time may be higher than reality.
1.0.6 - This is the version I've been running all summer during training. It now has 'weighted' look back features. Depending on the setting you can now use a weighted ratio of the lookback of XX percent of the total pacing versus the last look back window pacing or you can have it scale over time such that as you get closer to the end of the race it relies less and less on the total pacing and more on the pacing of just the lookback window.
More error checking to handle someone upgrading but not opening settings. If you do have an issue with the app, best step 1 is to uninstall and reinstall.
1.0.2 - Crash bug fixed if the datafield isn't visible when the activity is started.
1.0.3-1.0.4 - A few updates -
CRITICAL NOTE:: The way the time is set in the settings has changed. Time data is now put in as either XXXX minutes (ex: 12 = 12 minutes, 987 = nine hundred eighty seven minutes) OR HH:MM in hours and minutes (ex: 6:32 is 6 hours and 32 minutes). Please open the settings and adjust before trying to use the datafield for real. Do NOT put in a time of XX:XX:XX trying to set seconds as it will will not read correctly. The datafield doesn't accommodate accuracy to the second.
Code to check for an invalid race finish time or you reach the end of the target distance the prediction (top) field will now indicate that with a label of "No overall". Note: If there are valid checkpoints they will still be calculated as normal if you have pace warnings on.
To use a manual (custom) race distance you have to set the Race distance to "Manual Distance". Then set the manual distance in the number field below. This is give the Race distances priority even if there's a manual distance set.
A new toggle to display the elapsed distance alternating in the Prediction field (top). This will use any Correction value if set and activated so that you have a more accurate idea of your current elapsed.
Some general optimizations in the initialization and data set up to reduce memory footprint a tiny bit (0.1k) and 'possibly' a very minor efficiency increase which translates to less power consumed. It'll be immeasurable most likely.
More checks trying to accommodate invalid entries in settings either by typo or misunderstanding of what they're for.
Wording changed in some of the setting descriptions, trying to make it clearer.