Data Field: AppBuilder

By user request, this app lets you define your own data field, based on a simple math formula like cadence / 2.

If you want to get fancy, there's conditional expressions (like IF in Excel), functions for data analysis (like MIN and AVG), and the data field can also display the text of your choice. The resulting data can be (optionally) written to the activity FIT file.

With AppBuilder, you can implement almost any field that involves math, such as: calculating normalized power and saving the data to the FIT activity file, showing the average pace for even-numbered laps, or recording the amount of time you sprinted.

Full documentation and examples here:
http://ciq-appbuilder.blogspot.com/

AppBuilder 5:
Now with new features! AppBuilder 5 is a completely new app, so please check it out in the store if you are interested in any of the new features.
https://apps.garmin.com/en-US/apps/fd690281-9c22-4fee-a81e-3b7f39aa67c5

- Store up to four formulas per app. Switch between formulas directly on the watch, without using a phone or PC. With four clone apps, you can store up to 16 formulas total
- User variables. Allows for powerful formulas where information can be stored at one point, like the start of a lap, and used later. e.g. Lap elevation change
- Improved timeavg() options. Allows for simpler, more flexible normalized power function
- More functions and variables

4 clones of AppBuilder are available in the store, so you can have 2 formulas in the same activity
  • 2.6.10: FIx MOD so it works properly with decimals.

    e.g. 5.75 MOD 2 = 1.75
  • 2.6.12: Change behaviour of SUM, WHEN, MIN and MAX so they ignore data while timer is not running. This is more in line with user expectations and is consistent with other functions and Garmin metrics such as max HR.

    If there is enough demand, I will consider making it an option for certain functions to use data while the timer is not running. I can see how this might be useful for MIN, MAX or the PREV functions, for example.
  • 2.6.13: Modern/CIQ2 devices only: when "Record Data to FIT File" is enabled, also record the final value to the FIT summary. This is useful for formulas that are averages or counts, for example.
  • 2.6.16 ? Modern devices: Add ALERT[]. Like WHEN[], but simpler. Uses fixed in/out thresholds of 1 second, instead of 5. IOW, it alerts you immediately.

    ALERT[condition, inAction, outAction]
    [optional] inAction: default 1
    [optional] outAction: default 0

    actions: 0: nothing, 1: beep/vibe [per device settings], 2: beep, 3: vibe


    e.g. Alert me when the timer reaches 10 minutes, using default device settings

    ALERT[Timer GTE 60*10]
  • Hej! Do you happening to know which parameter i need to use for an external cadence sensor. I am using a Vaaka paddling cadence sensor and would like to calculate distance per stroke
  • Hi! AppBuilder don't have direct access to external sensor data per se. However, if the standard Cadence field displays the Vaaka cadence data, then "Cadence" in AppBuilder should give you the same data, in strokes per minute. Assuming that Speed is also displayed properly during paddling, then you could use something like the following formulas for stroke distance (in metres):

    Average stroke length:
    AvgSpeed_raw / AvgCadence * 60

    Current stroke length, based on smoothed speed (10 second average):
    TIMEAVG(Speed_raw, 10) / Cadence * 60

    (Speed_raw is in metres per second.)
  • For anyone who need Yachting race timer 5min with signals and after that average speed 10s
    ifs(timer LTE 60 ,(when (timer GT 59,1,1,1,1)),timer LTE 120 ,( when (Timer GT 119 , 1,1,1,1)) ,timer LTE 180 ,(when (timer GT 179,1,1,1,1)), timer LTE 240 ,(when (timer GT 239,1,1,1,1)) , timer LTE 293 ,(when (timer GT 290,1,2,1,1)) ,timer LTE 298 ,(when (timer GT 295,1,2,1,1)), timer LTE 300 ,(when (timer GT 298,1,1,1,1)) , Timer GTE 301, (TIMEAVG(Speed_raw, 10) * 1.94384))

    it is work I LOVE IT
    Thank You
  • Thanks for this - very useful. One request - if I've checked the option in the app settings to record data to FIT file, is it possible for this be recorded so that when uploaded to Garmin Connect, the graph in the activity details is identified with the label I've assigned to the field in the settings (eg "Gradient") rather than just labelled as "AppBuilder" or "AppBuilder2".
  • Glad you found it useful!

    Unfortunately the graph/summary label is fixed. What I can do is write the label as a separate field in the FIT activity summary. However, this would use up some memory, so I would probably only add the feature for newer CIQ2 devices. (e.g. not FR230/235/630/Fenix 3/920XT).

    Which device do you have?
  • Which device do you have?


    I have the Edge 1000. It has a built-in gradient field, but this doesn't record to the FIT file, so I'd rather use your app and have a record of the gradient, which is useful to refer to when setting up routes for other riders, where one can inform them of the gradients to be encountered at various points in the ride.