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
  • Cycloholic LTHR from your profile is not available to apps, but if you know your LTHR, insert it in one of the formulas below:

    %LTHR:
    hr / LTHR * 100

    Max %LTHR:
    max(hr) / LTHR * 100

    (The multiplication by 100 is there to match Garmin, which shows a percentage from 0-100 for HR %Max and %HRR metrics.)

    ---

    EDIT:

    Alternatively, if your HR zones are based on %LTHR (and you are not going to change that), then you can obtain your LTHR by working backwards from your zones.

    For example, if you set your zones by %LT in Garmin, the default for Zone 4 Max / Zone 5 Min is 100% LTHR. So you could change the %LTHR formula to:
    hr / UserHRZone4Max * 100

    If your Zone 4 Max is some other percentage of LT, then just adjust the formula appropriately. e.g. Say I set Zone 4 Max to 95% LT. Then the formula for %LTHR would look like:
    hr / UserHRZone4Max / 0.95 * 100
  • I'm sorry, I didn't understand if barometric data has been implemented. I'd really like to use that to test small dives while I'm snorkeling.
  • Michele17 The issue with Run Power and crashing with certain formulas has been fixed now. Let me know if there are any further problems.


    Tested this evening! all ok now. amazing job and amazing app! thank you man!
  • pistapoci pressure is currently not available in AppBuilder.


    EDIT: On devices running CIQ 2.4 and later which have a barometer, such as 645, 935 and Fenix 5, the following metrics are available to data fields:
    • Ambient pressure (corresponds to native "Ambient Pressure" field). Filtered/smoothed. I assume this is the one you want.
    • Raw ambient pressure. Data directly from sensor
    • Mean Sea Level pressure. Corresponds to native "Barometric Pressure" field, which is corrected for elevation. Requires GPS fix to obtain altitude
    So I could add any or all of these metrics, but there will be a cost in application size/memory usage.

    One limitation would be that CIQ cannot tell what pressure units you have set, so if I implemented this, I would probably just return millibars/hPA and let you do the conversion if necessary.
  • The 645/935/f5 run CIQ 3.x. Activity.Info has ambientPressure, rawAmbientPressure, as well as meanSeaLevelPressure. On devices without these, MSL pressure is available by way of SensorHistory.getGetPressureHistory (on devices with a baro)
    So these are available in CIQ, but not in this DF.
    Sensor.Info.pressure (MSL pressure) is also available in some CIQ app types if there's a baro.

    But in these cases, what you see is "air" pressure".

    For diving, I'd think that the pressure would be used to determine depth.
  • The 645/935/f5 run CIQ 3.x.


    Thanks for the detailed response, Jim.

    By CIQ 2, I implicitly meant "CIQ 2 and higher", and I was using those devices as examples, especially because they have barometers. In the context of this app, I always say "CIQ 2" when I refer to devices in that generation, because the app came out before CIQ 3 was even available.

    I apologize for not making that clear.

    Thank you for that clarification nonetheless.

    Activity.Info has ambientPressure, rawAmbientPressure, as well as meanSeaLevelPressure. On devices without these, MSL pressure is available by way of SensorHistory.getGetPressureHistory (on devices with a baro)
    So these are available in CIQ, but not in this DF.
    Sensor.Info.pressure (MSL pressure) is also available in some CIQ app types if there's a baro.

    But in these cases, what you see is "air" pressure".


    Thank you very much for the clarification re: meanSeaLevelPressure. That should correspond to the native "barometric pressure" field. Sloppy of me to miss that in reading the docs. I was wondering where that was.
  • Update 5.20: AppBuilder 5/5+

    Added the following variables for CIQ 2+ devices with a barometer (e.g. 645, 935, Fenix 5):
    ambientPressure, rawAmbientPressure, meanSeaLevelPressure

    Units: millibars / hPa
    (Note: AppBuilder cannot determine your pressure unit settings, so any conversion will have to be done manually in the formula)

    Description:
    • ambientPressure: Same as native "ambient pressure" field (except units are always in millibars). Smoothed/filtered by device
    • rawAmbientPressure: Raw data from sensor
    • meanSeaLevelPressure: Same as native "barometric pressure" field (except units are always in millibars). Pressure corrected for elevation. Requires GPS fix for altitude
  • Wow, thanks FlowState! (and @jim_m_58)
    FYI my idea was to have a "Depth" data field to add to an activity profile that I would make for the upcoming season's snorkeling sessions.
    I bought my F5 in winter, so I never tried it in open water yet, but when the time comes I would like to track my swims and possibly record the depth of my dives (I'm not really good at holding my breath, so I'm not going far more than 5 m deep without a tank).

    Using meters and millibars, a very rough formula could be like that:
    Depth = (ambientPressure - 1000)/100

    Also, can I record any of this as a custom metric?

    Thanks

  • pistapoci just check the Record to FIT checkbox in the app settings.

    Also, I would like to take this opportunity to emphasize that AppBuilder 5/5+ is not designed for diving and I am not endorsing the use of it for that purpose.

    https://forums.garmin.com/forum/deve...ted-09-19-2018
  • Thank you FlowState.

    You are also right about your clarification. I don't intend to use this data field as a security device, nor to use the F5 in a different way then suggested from Garmin. It is just a curiosity of mine, a thing that I'd like to try while swimming in open water with a snorkel.