Has anyone else been able to get Dexcom data via the Complications API?

My father has severe diabetes, and I'm looking to add Dexcom data to my CIQ watch faces.  I've also had a few customers ask about it.  I'd really like to deliver this for them, since there's a very positive impact of being able to see this data at a glance (and not being tied to a FaceIt face)..

The path I'd like to take is using the Complications API vs. pulling the data from the web myself.  (I am aware of some other apps like this one that pull the data, but I don't believe they publish a Complication)

I noticed that Dexcom data is available to FaceIt (presumably using the Complications API) after I installed the Garmin-published Dexcom apps and logged into my father's dexcom account (data field, widget). I have successfully gotten the Dexcom complication added to a FaceIt face and showing data.  It's very cool. 

See below example of Dexcom data showing on FaceIt:

Next, I wanted to "subscribe" to this complication in my own watch face.  So I built a demo that lists all available complications on the device, and I don't see Dexcom in that list.  I do see other non-native CIQ complications (such as Mobile Driveway's Universal App, which is a great one to test with).  That makes me fairly confident I'm successful listing all complications that are available.  But Dexcom doesn't show up.

I know that Complication publishers have the option of using the "protected" flag to make a Complication available only to FaceIt and their own apps/watch faces.  I'm assuming that's what's going on here.

But before I go down a rabbit hole and write code to pull this data myself from the web api, I wanted to ask the community:

Has anyone else been able to get Dexcom data via the Complications API?  Or is there perhaps another App I'm not aware of that's publishing this data publicly?

  • With CIQ publishers, the are

    COMPLICATION_TYPE_INVALID

    and then you check for longLabel and what that is.

    See the compcon sample in this thread.  It not only finds the correct publisher, but subscribes

    https://forums.garmin.com/developer/connect-iq/f/discussion/353286/sample-of-ciq-complication-publisher-and-consumer-of-those-complications

  • With CIQ publishers, the are

    COMPLICATION_TYPE_INVALID

    Hey Jim,

    Thanks for sharing general tips on how to get access to CIQ (non-native complications).  But I'm way past that point:

    I do see other non-native CIQ complications (such as Mobile Driveway's Universal App, which is a great one to test with).  That makes me fairly confident I'm successful listing all complications that are available.  But Dexcom doesn't show up.

    The question here isn't about how to access the complications in general but about this specific one: Dexcom data.

    For those who don't know:

    Dexcom is a prominent continuous glucose monitoring (CGM) system for diabetes management. It uses a small sensor under the skin to continuously measure glucose levels, transmitting real-time data to a user's phone (and the cloud). This data offers insights into blood sugar trends, helping users and healthcare providers make informed decisions about lifestyle and treatment adjustments. By providing a comprehensive view of glucose fluctuations, Dexcom's CGM technology assists in optimizing glycemic control, reducing the risk of hypo- or hyperglycemic events, and enhancing overall diabetes care.

    Garmin already has an app (they published) to provide access to this data on watches (via a widget and data field).  The data's also then available in FaceIt. 

    Has anyone else found a way using the Complications API with the Garmin-published apps or other third-party apps to get access to this data?

  • There are 3 ways a complication can be published by CIQ - public, private and protected.  

    With public, any one can see them.

    with protected, only apps by the same developer and face it can see them.

    with private, only apps by the same developer can see them (face it can't)

    Sounds like Dexcom Complications are protected.

    Have you tried contacting the Dexcom developer to ask?

  • Thanks, Jim,

    I'm already aware of the "protected" flag and various ways the app can publish Complications:

    I know that Complication publishers have the option of using the "protected" flag to make a Complication available only to FaceIt and their own apps/watch faces.  I'm assuming that's what's going on here.

    And the apps I mentioned are published by Garmin, so I wasn't going to assume I'd get any solid answer or change of behavior on a quick timeline:

    after I installed the Garmin-published Dexcom apps

    I think you may be assuming I'm asking very basic questions, but I'm concerned your answers to questions I'm not asking may lead others to miss the question I am asking:

    Has anyone else been able to get Dexcom data via the Complications API?  Or is there perhaps another App I'm not aware of that's publishing this data publicly?

    I have the Complications API figured out.  I'm here to ask the community about their experiences working with Dexcom data.

  • There seem to be some third party apps that publish complications for this.  This one for example: https://apps.garmin.com/en-US/apps/034a3784-b27f-4f2a-a109-67413a5f4f83

    Maybe try them.  Otherwise, for your watch faces, sounds like you need to do makeWebRequests in the background.

  • Hi. I’m the developer of the Dex CGM apps. My widget currently has a complications publisher implemented. I’ve tested it with a custom watch face and I managed to subscribe to the Dexcom data. Right now it only publishes on epix devices but I can add other devices pretty easy. If you send me a message we can probably work it out. 

    but how do you subscribe to connectIQ publishers from a Faceit? I just tested to create a faceit in the Garmin connectIQ app but could only add the native data fields. I guess I’m missing something. 

  • Never mind. I had to start the widget first, to get the published data fields to show up in face it 

  • and then you check for longLabel and what that is.

    I'm coming back to this thread and realizing what you were saying.

    I had expected there would be some consistent ID between runs that I could store.  But we literally store the human-readable label and look for it.  WILD!

    That's the state of the art?