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
  • Thanks for the reply. Was actually thinking about developing something using the Stryd power field as the key metric and develop a power based GAP. Would have the same lag as power, but offer a transitional view for someone who is new to running with power and translate it into something that are more familiar with. Then they could focus on hitting a GAP instead of a power number. Would effectively be the same, but mentally might be easier to understand for people.

    I was thinking I would use my Power vs Speed curve fit, which gives me a pretty good fit over my range of paces from 5k --> Marathon using a linear fit (r2=0.94) and then use this to back calculate pace based on Power, which would then be the Power based GAP.
  • Ok that worked, easier than I thought. My particular formula:

    1/((-1.73 * TIMEAVG(Power, 2) + 947) / 3600)

    Note this is from a curve fit of s/mile vs Power and I have the datafield set for Pace.

    There is a bit of lag, which in part is due to me using 2s average power. Might try without averaging and see how much it moves around to get quicker response times. In any case this I also set it to record to my FIT file so I can look at how this predicts lap GAP vs what Strava predicts as well.
  • Former Member
    Former Member over 6 years ago
    Ok, interesting application. Just remember that the downhill power curve of Stryd is quite different to Strava's GAP. New version of GAP gives the average runner a much flatter result as demonstrated in the link you posted, while Stryd still drops quite a bit at steep grades unless you're a world record downhill runner. So the GAP you get using Stryd power data won't be comparable to Strava's GAP.

    Simplest way, if one wants simply to convert Stryd power to "Stryd grade adjusted pace" one could just use threshold pace in power center (or if that pace is a bit off to get more accurate result record their flat threshold pace when running at threshold power) then use:

    current power / threshold power * threshold speed

    as a formula.
  • Good point JTH9 the formula you suggest should work, especially if you have a linear power curve like I do. I also agree about differences in GAP between Strava and Stryd Power derived. Other issue, which is probably obvious, is the Stryd method only works for surfaces that the power data is collected on.
  • How do you switch between Profiles on the watch? I have Double-click Start selected, but when I double click Start while in the App I have AppBuilder 5 used as a data field in, I just get a rapid start and stop of the activity. I am sure I am doing something stupid here, but cannot see what it is.
  • Goodmorning, today I tried the datafield and unfortunately I still have the IQ! message...Is there a way to solve or to have the old version of the datafield? Thank you very mutch
  • chimpware the config hotkey is designed so it only works before the activity starts, or within the first 10 seconds. (I wanted to avoid accidentally triggering this during a real activity, since AppBuilder needs the activity to restart to pick up the new settings. It isn't feasible to switch formulas on the fly, because AppBuilder wouldn't have been recording all the data it needs from the start.)

    If the activity was paused when you double-click to Start, AppBuilder should ask you to Press Start (again), because it needs the timer to be running so you can take laps. When you press Start, it should now show you your profile number and name, like "0:AppBuilder". You then take laps to change your profile. If you're happy with your change, double click Start again and it should say "Cfg Saved". At this point you have to discard your activity. If you want to discard your changes, just discard the activity without double-clicking the second time.

    Oh and you have 2 seconds to double-click. While this seemed like enough time to me, maybe it isn't enough given Garmin's mushy buttons. Maybe I'll have to lengthen the detection time if it still doesn't work for you.

    Sorry, I know this is incredibly clunky and unintuitive, but Garmin won't let users interact with datafields -- yet. I think there's some interest in adding menu support in the future, though.

    I just tried it out real quick and it seemed to work.

    albertopirro :( sorry about that. I'll look into it. The problem with sideloading apps (instead of downloading them from the store) is that you can't configure them, which would make AppBuilder useless for you.
  • albertopirro I tried rolling back all my recent changes related to slowing down formula processing (there were only really two), and your formula still consistently runs too slowly in the simulator. Not sure what changed, since I was able to run it before. The good news is I simplified your formula by removing brackets and using a couple of simplifications, and it seems to work now.

    a/(b*c) = a/b/c
    (a mod b) LT c = a mod b LT c

    For operator precedence, you can check the docs. It isn't in the docs, but you also don't need brackets around arguments in function calls. e.g. ALERT(A, B) is the same as ALERT(A, (B)) no matter what B is, because commas have no other meaning in AppBuilder than to separate arguments.

    SETV(1,Distance-PREVT(Distance,30)) ; SETV(2,ALTITUDE-PREVT(ALTITUDE,30)) ; SETV(3,Distance+(10+TotalAscent*5.5-TotalDescent*2.3)/1000) ; SETV(4, SUM((GETV(1) GT 0.03) * (GETV(1) * ((GETV(2) GT 0) * 40 * (GETV(2) / 1000/ GETV(1))^3 + (GETV(2) LT 0) * 6 * (GETV(2) / 1000 /GETV(1))^2 ) )/30 ) ); ALERT((GETV(4)+GETV(3)) MOD 1 LT 0.1 ) ; GETV(4)+GETV(3)


    Good luck!
  • FlowState finally got it to work, sort of. That really is a difficult thing to do as the lap screen covers what you are doing when you use that button to change fields. I don't have a better idea, of course, but will probably just stick with choosing the config on the phone and synching.

    Amazing App BTW, clearly the best on ConnectIQ.
  • chimpware thanks! I think it's a little too complicated for its own good but I'm not sure how it could be simpler, except to fix a couple of mistakes I made in the design (like AVG vs AVG0).

    Yeah, it's clunky. As a "simple" data field which can only display text/numbers, AppBuilder doesn't even know when it's shown (which allows a "complex" data field one additional way to sort of fake receiving input, although it's not much better -- basically you would ask the user to scroll away from the field and scroll back quickly, like press Down and Up quickly).

    The workaround is to quickly dismiss the lap screen with another key, like Down or Up, but it's definitely not a whole lot of fun.

    The other alternative is to use the "Auto Select by Sport" feature, if you use AppBuilder for different sports like Running or Cycling.

    Anyway, if you're stranded on a desert island without your phone and you need to switch formulas in AppBuilder for some reason, the option is there...