Garmin Developer Key

0 views
Skip to first unread message

Tisham Candella

unread,
Aug 4, 2024, 3:25:40 PM8/4/24
to numneyclamon
Thanksa lot, it worked!

One question: have you (or some other people) had a recent problem with some apps suddenly not recognized by ERA, and thus not listed there? These apps, actually, appear in the app list inside ERA (when clicking on the ERA menu item 'Manage Apps'), but in red, indicating a problem.



When, in that list, I select one of these apps, and click on the 'i' button (with circle around it) on top of this popup window, I can 'edit' that app. When I put in the developer key file location, and click OK, a message appears: 'The selected key does not belong to . Please select another key.'.



Do you have an idea what this could be caused by? By the way, some other apps of mine don't have this problem.



I am wondering if this problem has appeared after I started using Connect IQ SDK 4.0.4.


Thanks! Seems to be the same problem as what I have. Also: it does seem to be the case that this has something to do with new updates. Those apps that are OK in ERA (and shown in black in the ERA list) I haven't updated recently.



Maybe it does have something to do with using one of the recent (maybe the most recent) SDK, AND updating the app using that SDK. I can't think of having made any recent changes in my programming environment, other than using SDK 4.0.4.


Hi Jim. There's no dashboard showing in the app store. When I sign in, I see a link saying Connect Dashboard, and then, when I click that it takes me to my Garmin Connect activity dashboard. Is this the dashboard to be connected? If it is, there's nothing to say "connect this dashboard" or anything of that sort. Am I missing something in the docs?


I will note that you actually do not have to log in. You could simply search the store website for any of your uploaded apps and click on your developer name. (Obviously this means that your developer ID is public knowledge.)


Thank you, FlowState. After I log on to connect.garmin.com it takes me straight to the activity dashboard, and daily summary and what not. There's nowhere to click "developer dashboard", as you suggest.


I appreciate your help, because the path to getting to see this blessed developer ID is far from obvious and not very well documented. Would it make sense to include something on this in the New Developer FAQ, or this this one of those security by obscurity things?


Yeah, that could be right. When I click on the link you posted, I get a "page not found" error. It seems like you probably would need to upload a non-beta app, since beta apps are never approved. Sorry for the bad advice!


I think it's fine, because there isn't much point in setting up the ERA tool unless you have an app with actual users. And as you've found, knowing your developer ID is useless if you can't do anything with it.


My first idea is for simply getting the average time after doing 10x400m which is a test I do almost every month. I'm fairly certain I can do this with the health API but I don't know how to request it as a hobbyist and fairly new programmer.


Have you developed anything on this for your own data? I would suggest starting there. You have access to all the fit files from your own garmin connect account and you'll then basically have an MVP that you could host on the web.


Daniel Leahy has the right idea, linking Garmin to Strava (free to do) and pulling from Strava APIs works for all activity data that you record. Where that plan falls short is if you're hoping to supplement sleep data, resting heart rate, steps, or any of the other health metrics that Garmin won't sync as activities to Strava


Garmin reserves the right to provide you the finest product available to date. Engineering enhancements are ongoing and may not be reflected in the pictures, videos, support content and specifications.


Garmin offers software developers and content providers access to free and licensed Garmin resources as well as a library of Application Programming Interfaces (APIs), toolkits, web services, and more. Developers can utilize these resources for a variety of uses, including:


At bene : studio we love knowledge sharing to help the community of professionals. With 10+ years and over 100 projects behind us, we have a vast amount of experience. This is why we have launched a knowledge base on our blog with regular updates of tutorials, best practices, and open source solutions.


Developers often face the situation when they need to use a third-party library for integration, mostly requested by the client of their work project. It was no exception when I had to integrate Garmin into one of my projects; Coopah, a running coach as a mobile application made for runners. As you may know, Garmin is a company that specializes in GPS technology for automotive, marine, outdoor, and sports activities. Our focus was solely on running activities.


Training plans are created by an admin user. A plan is a list of sessions with different intensity running exercises for a given period. E.g. a 6-week plan for 10km running. Or an 18-week plan for marathon training.


Users during registration (and later anytime) can set their goal of distance and the period during which they want to achieve that distance. After this, sessions are distributed for this period and can be viewed/edited. Each session is a list of interval(s), these are goals for a session, like 10 min running at a 5:20 min/km pace


To access their services you must implement OAuth1 for authentication. This means that the user authenticates with his/her Garmin account on the mobile device and at the end of the steps this results in a user access token stored in the database. The whole flow is the following:


Once authenticated, the user can create Garmin workouts. And not just create, but delete, update and also schedule them, which makes sense to see your Coopah sessions for one particular day to be on the same day when you open your Garmin app for some running. A workout consists of interval(s). Each interval might have a time, distance, or a pace value associated, but at least one of them.


One little side-note to developers: when you create a workout in the scope of your integration (meaning with the access token acquired as above), the workout can not be edited on Garmin Connect. Garmin Connect is the dashboard tool for tracking, analyzing, and sharing health and fitness activities from your Garmin device, mostly used as a website but the mobile app is also available. It says that workout details are visible in your 3rd party app.


The difference between pull and push methods is that the pull method is more user-driven. Imagine that a user wants to update his/her activities in the mobile app. This sends a request to our backend which calls the Garmin API to query a list of activities. In the end, the user sees these activities.


On the other hand, the push method is event-driven. When Garmin has a new activity recorded they send it to your backend (to the dedicated endpoint), you can process it and notify the user however you feel like it.


When you join the Garmin Developer Program, you get a developer API key, which is rate limited, but perfectly usable for testing, and prototyping. To acquire a production key, you have to go through the verification process. These are the requirements for that:


An Activity Details Summary is a raw JSON formatted data sent to your backend endpoint once a user completes a run. Garmin, unfortunately, does not provide the exact intervals, but rather two separate lists of measurements.


One is laps, an array of timestamps when a new lap started either automatically or by the user pressing the lap button on the watch. Keep in mind, that Garmin watches have the auto-lap feature auto-enabled, this starts a new lap after every 1 km/mile.


In the previous section, we discussed how inaccurate the measured data was provided by the Activity Details Summary service. We contacted Garmin and they admitted that they sometimes use rounding of recorded data to negate the 1-2 seconds difference.


What they suggested is to implement the FIT SDK (Flexible and Interoperable Data Transfer). They may provide these .FIT files as raw data, and you need to parse them. You can use one of the parsers of their recommendation, but we found that NodeJS is not supported. So we either implement the complex parsing from scratch or use an existing solution.


One security risk we discovered during the integration, is that Garmin requires a public endpoint on our backend, no Authorization is allowed so that they can send data to it. However, any attacker with a valid access token can spam our backend with dummy data since this is exactly how Garmin operates.


All in all, this integration was challenging enough to keep us for a few weeks. Learned a lot starting from how to handle a strict verification process, all the way to understanding the importance of having a good Proof of Concept in the early development phase.


Now, in addition to all the techie bits, there were also the various tracks you could tune in and watch. The breakouts are set to be published online next week as well, in the Garmin CIQ forums. Having watched some of the breakouts in the past, they tend to have lots of fun nuggets of info. For example a year or two ago Spotify did one where they dove into the nuances of how they made decisions as it related to their CIQ app, things like album covers and such. It was interesting. Here was the full slate, just for historical reference.


Next, in line with graphical related bits is that graphic tasks will soon load into a separate graphics pool, which gives additional resources for those operations. The main driver for this is the newer AMOLED/LCD screens (such as seen on the Garmin Venu series to date).

3a8082e126
Reply all
Reply to author
Forward
0 new messages