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
  • Formulas for the above examples:

    Current power, lap power and last lap power, side-by-side:
    power +"/" + lapavg(power) + "/" + lastlap(lapavg(power) )

    Power, lap NP and last lap NP, side-by-side:
    setv(1, lapavg(ifs(lapTime gte 30,timeavg(power,30,1)^4))^0.25) ; power + "/" + getv(1) + "/" + lastlap(getv(1))

    Sorry for the separate posts, but the forum really hates brackets, and it helps if you put the stuff with lots of brackets in a separate post.
  • Unfortunately I'm not sure if it's possible for you to compare Power from the Stryd app and AppBuilder side-by-side, for the reason I mentioned above. I know Stryd mentioned AppBuilder as a way to get a second power field, but I could've sworn their own app talks to the Stryd directly, which means that Power is no longer available natively. It could be that if you connect as a generic power meter, the Stryd app will still talk to the Stryd footpod, but I wouldn't know for sure.

    But you could always just use "Power" for a run, and see if the number looks reasonable. Once that's working (can't see why it wouldn't), you should be able to use any of the power examples.
  • Former Member
    Former Member over 6 years ago
    Stryd IQ data field automatically connects to Stryd and is limited to recording the data and displaying one metric at a time. Luckily it's still possible to connect to Stryd as a power meter through watch sensor settings at the same allowing a 3rd party data field like AppBuilder to read power too, I believe this is possible due to ANT+ allowing multiple connections.

    So even though the default run activity doesn't take advantage of it a 3rd party data field like AppBuilder can still read power, manipulate and display it.

    Like already noted, the Stryd IQ data field can only display one metric at a time. I believe this is due to compatibility with older watches so the data field is probably already running at its limit connecting to power meter, displaying power, recording it and the other metrics (Stryd running dynamics).

    Not sure why Stryd doesn't make a separate data field to display additional metrics, or a full screen data field for watches with more memory, but they've made similar limiting decisions in other areas too. Most of the time they claim it's to avoid user confusion and support requests, but seems they get equal amount of confusion not allowing certain things. But this is another discussion, so will not speculate it further here.

    The most probable reason why Stryd doesn't use the native connection with their own data field is that lower end watches don't support this. Also they can probably only record their own running dynamic metrics through their own data field as this is not supported by native power meter connection.

    This is basically a short version of this complicated issue, at least I tried to keep it as short as possible ;)
  • Not sure why Stryd doesn't make a separate data field to display additional metrics, or a full screen data field for watches with more memory, but they've made similar limiting decisions in other areas too. Most of the time they claim it's to avoid user confusion and support requests, but seems they get equal amount of confusion not allowing certain things. But this is another discussion, so will not speculate it further here.


    I 100% understand why they don't want to make extra data fields <_<. It's funny how they basically blame it on Garmin limitations in their support article. #marketing101

    The most probable reason why Stryd doesn't use the native connection with their own data field is that lower end watches don't support this.

    Yeah I got this part (only multisport watches support Power), but I was unaware that Stryd could support multiple ANT+ connections, unlike a normal foot pod or HR strap AFAIK. That pretty much answers my question. Thanks.

    The other thing is I don't know if power meters will automatically connect during a running activity or whether you have to manually pair the sensor every time, since Garmin running activities don't even have power as an available metric.
  • Former Member
    Former Member over 6 years ago
    You can connect Stryd in various ways. I've succesfully had a BT connection running on another watch, while using ANT+ Foot pod connection to Stryd, ANT+ Power Connection to Stryd and Stryd IQ field at the same time :)

    Power is connected automatically regardless of activity type. You can't see the sensor in activity sensor icons, but you get a prompt when the sensor is connected or if it drops out.

    Only downside from native power connection is that it takes a bit running to wake up the connection. The IQ field has a separate command to wake up the pod faster. I think they stated this was to help the battery last longer when moved in a backpack etc.

    BTW, I'm really starting to hate this forum. Requiring me to log in several times as otherwise it doesn't allow me to post if I stay connected too long. Makes typing even a short post like this almost an impossible task...
  • Thanks for the suggestions. Went out for a short run and tried

    Current power, lap power and last lap power, side-by-side:
    power +"/" + lapavg[power] + "/" + lastlap[lapavg[power] ]


    "power" seems to work as intended.

    "lapavg[power]" started by giving reasonable numbers, but then jumps to 800-900. Tried walking and it started OK, but then jumped to 1800s. Something weird is going on.

    I think "lastlap[lapavg[power] ]" may be working but it is simply getting bogus data from lapavg.


    Then I tried

    Power, lap NP and last lap NP, side-by-side:
    setv[1, lapavg[ifs[lapTime gte 30,timeavg[power,30,1]^4]]^0.25] ; power + "/" + getv[1] + "/" + lastlap[getv[1]]


    and these seem to work as expected which is god enough for my needs. Will test more extensively on my next run.


  • cccrabbb Hmmm, the code for avg/lapavg is very simple. And the only difference between avg and lapavg is that the latter resets when a lap is taken. I tested lapavg(hr) and it seems to work fine.

    What happens if you actually record power and lap power? Turn on Record to FIT in the settings and replace power with record(power) and lapavg(power) with recordlap(lapavg(power)).

    Do the numbers/graphs make sense?

  • Former Member
    Former Member over 6 years ago
    cccrabbb You're probably just another victim of Garmin bug concerning power meters in their latest firmware. It's either downgrade firmware to 5.10 or add limiter to AppBuilder that ignores power values over 2000.

    The reason Normalized Power examples work better is that NP will give less weight to short drops or spikes in power, it will still be affected although to much lesser extent...

    I don't know the exact size of the spikes, but most users seem to get values over 2000. You could even try to set the limiter to something lower like 1000, as it's still very unlikely you will ever hit values of even 1000W with Stryd unless you're the next Usain Bolt.

    My F5+ came with 5.10 and I've turned off automatic upgrades because of this. But if you only need lap and average power and not willing to downgrade then it's worth a try. It's taking frustratingly long for Garmin to fix this even though 5.10 is working without problems...
  • Former Member
    Former Member over 6 years ago
    Anyway you could try something like:

    avg(if(power lt 2000, power, null))

    or for laps

    lapavg(if(power lt 2000, power, null))

  • JTH9 thanks for the explanation! Now I remember ppl complaining about the power spike bug.

    Update: AppBuilder 5
    5.11: Large memory devices - 645 Music, Fenix 5 Plus, Fenix 5 X, Edge: Add ability to use code from the webapp. This means you can use larger/more complex formulas

    If you have a large memory device, now the only difference between 5 and 5+ is the full-screen layout for 5+.

    Update: AppBuilder 5+
    2.0beta: Fix several functions that didn't work: record, format...
    Note: if want to use the FIT native number functionality with web app code, you must get new code from the web app. Existing code will work without native number functionality

    Update: Web App (https://ciq-appbuilder.blogspot.com/p/5plus.html)
    Support for FIT native num.
    Show text formula on single line. Now you can validate your multi-line formula and get a single-line text formula suitable for copying into app settings.