Recording Boulder

Hi all,

I am about to write my first app for Garmin watches. It is to record my boulder sessions.
I know there are already apps doing this but as far as I know they all require me to start and stop every single boulder and need to set grades. Way to much to push and press during an activity. My goal is that the app recognises when I am in a boulder and when I finished it. The app is mainly to count boulders and their height and may be a few more things. I nearly finished the basic tasks: I see when I am bouldering and when I am resting. I count the boulder and see their hight. I have a little chart, displaying them during the session.

All my questions are related to the following session configuration:
_activityRecording = ActivityRecording.createSession({
:sport=>Activity.SPORT_FLOOR_CLIMBING,
:subSport=>Activity.SUB_SPORT_BOULDERING,
:name=>"Bouldering"
});
a) Start / Stop Boulder
When I use this configuration, whenever I start the app, it immidiatly starts counting boulder and because I don't plan to use buttons the boulder stops when I stop the app. How can I programmatically start and stop boulder during a running session?
b) Hight of a boulder
When starting an activity, I see the altitude. But when starting at an altitude of lets say 400m then a boulder hight of 2 to 3 meters is not realy visible in the default views of CIQ web portal. In case of a) and I can manage every single boulder, is there a way of setting my own properties for this?
c) Custom FitContributions
When I work with the session settings from above, custom fitcontribution fields aren't displayed in CIQ web portal. But when I use :sport=>ActivityRecording.SPORT_GENERIC for session settings, they are perfectly shown.

Any help is appreciated
Thanks in advance

  • Actually, 2000 is 2 seconds, not 20.  1 second is 1000 ms.

    And the fit file is written at most every second, so you could be missing some laps.

    if you want every 20 seconds, use 20000.

    Try using Garmin Connect and not monkeyGraph.  I'd change the sport to something like walking or running to check if your addLap is happening when you think it should.

  • I use both monkeygraph and Garmin Connect. Since I am talking to you guys I only use GC to be really sure.

    Changing to running would make the trick for laps but it would then provide such useless infos like speed and distance. It is working. I already made a test. But it is not what I want to have. 

  • Why are you using SPORT_FLOOR_CLIMBING instead of SPORT_ROCK_CLIMBING?  I don't even see SUB_SPORT_BOULDERING in the API doc.  What if you try SUB_SPORT_GENERIC with ROCK_CLIMBING.  Not all subsports work with all sports.

  • I don't understand the logic. I thought your code deduces when you finished a climb and then it triggers a new lap. But if you start a new lap based on time then it won't have anything to do with the real climbs/jumps. So in what it would be better then not having laps in the whole session?

    Nevertheless the reason I asked if it works when you press the lap button is to see if the sport profile is capable to have laps. If it would work with the button press then we would know there's a good chance to trigger it from the code. If it doesn't work even when you press the button then there's no chance it will work from code.

  • This is a PoC (proof of concept). I only focus on Laps. All the other stuff I learned 5 months ago when I first started to write the app. I know how to read sensors. I have my code ready to detect boulders. I failed to add laps in my code 5 months ago and still do. The 20 seconds time frame is just a fake to have intervals and to generate reasonable data.

    Back to your second thought. Garmin itself provides a boulder / climbing app. I quickly installed the app and made a cross check. Surprisingly they seem als not to use laps but instead it looks like they pause and resume to implement their boulder activity.

    It was a long way of discussions to bring me to this simple idea. I will check if it works for me as well.

    I really thank you for the participation in this thread.

    Henry

  • I don't even see SUB_SPORT_BOULDERING in the API doc.

    That's because you're looking at the deprecated ActivityRecording.SubSport enum (which has 27 values, not including bouldering) instead of the newer Activity.SubSport enum (98 valid values, including bouldering.) This has come up in a previous discussion or two (which you were involved in.)

  • I changed the values in  createSession() to Activity.SPORT_ROCK_CLIMBING and Activity.SUB_SPORT_BOULDERING but the result is the same.

    Last chance I can see is to try createSession() with 'autolap' but I cannot find an useful example. It could be time-based or maybe location-based but for the latter I do not know if it could work inside?

  • obviously adding laps is not correct. I converted the original garmin climbing app fit file to csv and here I find split instead of lap. can one tell me how to create such kind of data?

    Definition 3 lap
    Data 3 lap
    Definition 4 time_in_zone
    Data 4 time_in_zone
    Definition 7 split
    Data 7 split
    Data 4 time_in_zone
    Data 7 split
    Data 4 time_in_zone
    Data 7 split
    Data 4 time_in_zone
    Data 7 split
    Data 4 time_in_zone
    Definition 8 split_summary
    Data 8 split_summary
    Data 8 split_summary
  • the profile.xlxs has some info on split and split summary

    mesg_num

    uint16

    split

    312

    split_summary

    313

  • obviously adding laps is not correct. I converted the original garmin climbing app fit file to csv and here I find split instead of lap. can one tell me how to create such kind of data?

    Unfortunately I don't think that's possible in Connect IQ :/. Maybe you could post an enhancement request in the bug reports forum, but I kind of doubt it will be addressed.