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
  • You're welcome ! Thanks for the feedback! Glad you found it useful :).
  • Hello! It would be very good to add Steps of Activity Data field because it looks like Garmin totally removed it from Activity Data in Garmin Connect. With possibility to write them in fit-file
  • Note to anyone using Garmin Connect Mobile on iOS and the ALERT function.

    Currently, entering the text "alert" followed by "(" in the app settings will cause an "Access denied" page to appear in GCM, and settings won't be saved.

    As a workaround, please substitute ALERT[X] with WHEN(X, 1,1).

    (Because the forum is also not working, please imagine that I typed round brackets wherever you see square brackets)

    e.g.

    ALERT[Speed gt 15]
    becomes
    WHEN(Speed gt 15, 1, 1)

    I've notified Garmin of this problem, but until they fix it, I think this is the only workaround, unless I create a new version of AppBuilder with an ALRT function or something. (I'd prefer to wait and see if this gets fixed on their end).


    Sorry, I made a mistake in the quoted post. It should've read:

    As a workaround, please substitute ALERT[X] with WHEN(X, 1, 1, 1).

    e.g.

    ALERT[Speed gt 15]
    becomes
    WHEN(Speed gt 15, 1, 1, 1)


    Without the 3rd 1, you won't get a beep/vibe notification. I never really think about the WHEN() function because it's so awkwardly defined.
  • Hello! It would be very good to add Steps of Activity Data field because it looks like Garmin totally removed it from Activity Data in Garmin Connect. With possibility to write them in fit-file


    That's interesting suggestion. Thanks! Unfortunately, IIRC, steps during activity is not available to apps as a native variable, and would have to be calculated by the app. So it would take a bit of coding effort and also impact memory usage.

    I'll put it on the wishlist!

    In the meantime you can try a datafield such as this:
    https://apps.garmin.com/en-CA/apps/0e8f63ea-bb54-4942-98a2-7b8a5ad92c51#0
  • Earlier I already found some of such Steps Data fields but no one of them has possibility to write steps of Activity in fit-file. This is why I asked you to do it if possible
  • Hello
    AppBuilder is fantastic !
    But I am knew to it and it is somehow difficult to master it.

    1) what is the unit of :
    Vertical speed (15 second avg) : TIMEAVG((Altitude - PREV(Altitude)) / (Timer - PREV(Timer)),15)
    and if I want that to be displayed in meter per hour, what should I do ?

    2) If I want the average pace on an interval (lap) and not on the whole workout ?

    3) Also which field contains the remaining time of a interval (countdown value) ?

    Basic question I am sure but whose answers would be most useful.

    Best regards
  • Thanks, glad you're finding it useful.

    1) As per the docs:
    Altitude: metres or feet (per device settings)
    Timer: seconds
    Altitude_raw: always metres

    If you want metres per hour:
    - Maybe use Altitude_raw (so you don't have to worry about device settings
    - Convert seconds to hours, using the fact that there are 3600 seconds in an hour

    TIMEAVG((Altitude_raw - PREV(Altitude_raw)) / (Timer - PREV(Timer)),15) * 3600

    2) Use:
    LAPAVG(Speed) which ignores zeroes
    or
    LAPAVG0(Speed) which does not ignore zeroes

    Display Format: Pace

    3) This isn't really possible, because appbuilder doesn't know anything about your workouts. The best you can do is put your workout info in the formula by hand.

    e.g. If your workout has intervals with the following lengths:
    5:00, 2:00, 2:00, 2:00, 5:00

    IFS( Lapcount eq 0, 60 * 5, Lapcount eq 1, 60 * 2, Lapcount eq 2, 60 * 2, Lapcount eq 3, 60 * 2, Lapcount eq 4, 60 * 5 ) - LapTime
    or
    IFS( Lapcount eq 0, 60 * 5, Lapcount gte 1 or Lapcount lte 3, 60 * 2, Lapcount eq 4, 60 * 5 ) - LapTime

    Display Format: Time

    Probably less than ideal.
  • Just trying to make sure I am reading this correct... With a 920xt, there is no version of lapavg that works? Is there any clever way to get avg power by summing the power and dividing by lap time or anything like that ? (trying to figure out how to get a lap power from my stryd)

    Thanks.
  • dcohen24, unfortunately not. I see that the Stryd datafield app supports the following metrics:

    https://apps.garmin.com/en-IE/apps/6...034c8b6dc90f#0
    1. Real time power
    2. 3 second power
    3. 10 second power
    4. 30 second power
    5. Lap power
    6. Total average power


    Maybe you can use the Stryd datafield for lap power? If you need a second power metric, 1-4 are covered with Power, and TIMEAVG(Power, ...) or TIMEAVG0(Power, ...). TIMEAVG() does not include zeros, and TIMEAVG0() includes zeros.

    6. you can calculate with
    Includes zeros: SUM(Power) / Timer
    or
    Does not include zeros:SUM(IF(Power GT 0, Power, NULL)) / SUM(IF(Power GT 0, 1, NULL))

    So, yes, there's another way to calculate total average (with or without zeros), but I can't think of another way to calculate lap averages. Unfortunately there just isn't enough memory on older devices to fit everything in, and I've already rewritten the app several times to add more features to them.

    However, I'll put it on the wishlist although I can't really make any promises. I'll only add it if I can find a way to save memory somewhere else, because I don't want to break any existing formulas. (The problem is that the formulas themselves take up memory as well....)
  • Thanks a lot at FlowState for this wonderful App :=)

    For me it works this way, stryd with 920xt:
    Stryd Power field with lap average power, Appbuilder with power (also 3,10, 30 sec average power possible).
    For getting Appbuilder to work, connect stryd as a powermeter. You can also connect stryd as a footpod to get pace, both connection at the same time are possible.
    Set up Appbuilder this way:
    Label: Power
    Formula: POWER or TIMEAVG0(POWER, 3)
    instead of 3 you can use any other number, it is for the average time