Best Connect IQ architecture for expedition app using Edge 1040 and Enduro 3?

I’m developing a private, non-commercial expedition support app that will be used during a long-distance cycling trip. The app is not for sale and is being built primarily for my own use during the expedition.  For context, my 134lb service dog Juno are riding a recumbent tricycle from Calais, Maine to the Florida Keys to raise money for Wounded Warrior and raise awareness for service dogs in general.

My Garmin hardware includes:

  • Edge 1040

  • Enduro 3

  • Garmin power-meter pedals

  • Garmin Varia RCT715

The broader app handles route planning, ride data, readiness/recovery information, field notes, and expedition logistics. I’m trying to determine what can be done directly through Connect IQ while the Garmin Connect Developer Program is not accepting new applications.

The main things I’d like to understand are:

  1. On-device data access

    • What cycling and sensor data can a Connect IQ app or data field access directly on the Edge 1040?

    • Can power, cadence, heart rate, speed, GPS, and similar data be read in real time?

    • Can the Enduro 3 expose useful physiological or activity data directly to a Connect IQ app, or is most of that only available later through Garmin Connect?

  2. Communication with an external app

    • What is the recommended way for a Connect IQ app/data field to receive messages or data from an external iPhone/iPad app or web backend?

    • Is Garmin Connect Mobile/BLE the preferred bridge?

    • Can a Connect IQ app make web requests through Garmin Connect Mobile to a remote API?

  3. Alerts and ride guidance

    • Can a Connect IQ app or data field display custom expedition alerts or guidance on the Edge 1040 while navigating?

    • For example, messages generated by the external app such as pacing guidance, upcoming resupply information, weather-related warnings, or similar contextual alerts.

  4. Sending data outward

    • Can a Connect IQ app send selected real-time or near-real-time ride information back to an external application or backend?

    • If so, what architecture is recommended?

  5. Courses/navigation

    • Without Garmin Connect Developer Program access, is there any supported Connect IQ mechanism for loading or updating routes/courses on an Edge 1040, or does that require the Garmin Connect Courses API?

  6. Recommended app type

    • For this use case, would Garmin recommend a data field, device app, background service, or some combination?

I’m not looking for a workaround around Garmin’s developer policies. I want to build this using Garmin-supported methods and would appreciate guidance on the cleanest architecture that can be implemented now with Connect IQ.

Any examples, SDK references, or pointers to existing sample projects would be very helpful.

Thank you.

Mark

  • I think most if not all of this is already available. Search for datafields and apps in the store. Things that they can display/record are available for CIQ apps. I'm not sure creating an app for this event is worth the effort for 1 user. I'd try using existing datafields (the advantage is that you can then use multiple apps, to get all the functionality you want). In theory you could make an app (watch-app) that does all this, but it'll take you longer to code than the whole trip.

  • Thanks for the response. I may not have explained the use case clearly enough.

    I’m not primarily looking for another way to display standard Garmin ride metrics. I agree that existing data fields already cover a lot of things like power, cadence, heart rate, speed, etc.

    The part I’m trying to solve is the integration between Garmin hardware and an external expedition application that is already being developed.

    Specifically, I’m trying to determine whether Connect IQ can support things such as:

    • receiving contextual information or alerts generated by the external app and displaying them on the Edge 1040 during a ride

    • sending selected near-real-time ride/sensor information from Garmin hardware back to the external application or backend

    • accessing enough on-device data to make that interaction useful without waiting for a post-activity Garmin Connect sync

    • understanding whether a data field, device app, background process, or combination is the appropriate CIQ architecture for that communication

    • determining what route/course functionality, if any, is possible without access to the currently paused Garmin Connect Developer Program

    So the project is not really “build a custom Garmin screen for one rider.” Garmin is one component of a larger application that handles expedition planning, logistics, readiness, route information, and other functions outside the Garmin device.

    This is also intended to be field-tested during the expedition rather than discarded afterward, so I’m trying to understand the supported architecture before deciding what portion is worth implementing in Connect IQ.

    If existing Connect IQ apps already demonstrate two-way communication with an external mobile app or web service in the way I’m describing, I would definitely appreciate pointers to them. That could save a great deal of unnecessary development.

    Thanks again.

  • Once I played with a CIQ app + Android Companion app I found on GitHub. I can't find it now, but maybe you will or something similar. That one was a navigation app, you could send a route from the phone to the watch and then follow it using only the watch. It has most of the non standard features you want: send a route, communication between phone and watch.

    One thing I'd be worried about is he length of the sessions. Even though Enduro 3 has a big battery, using a watch app as opposed to a data field will use more battery.

    You can also try doing it as a datafield. Both devices you have can send http requests from a datafield from the foreground app so you should be able to send data to a website or even poll data from there.

  • Specifically, I’m trying to determine whether Connect IQ can support things such as:

    • receiving contextual information or alerts generated by the external app and displaying them on the Edge 1040 during a ride

    • sending selected near-real-time ride/sensor information from Garmin hardware back to the external application or backend

    • accessing enough on-device data to make that interaction useful without waiting for a post-activity Garmin Connect sync

    • understanding whether a data field, device app, background process, or combination is the appropriate CIQ architecture for that communication

    • determining what route/course functionality, if any, is possible without access to the currently paused Garmin Connect Developer Program

    Hi, to add to the conversation...
    #1 - an app can make a background request poll -- makeWebRequest() -- or JSON request -- for data at most every 5 minutes, then popup a toast, for example, or put in an app communications history page to scroll through. That would be nice to receive supporter messages

    #2 - an app would just use makeWebRequest() to send location / speed etc whatever your backend API supports

    #3 - plenty data, especially if you are actively recording an activity - https://developer.garmin.com/connect-iq/api-docs/Toybox/Activity/Info.html

    #4 - both datafields and apps support background processes - you have more flexibity.screens with an app but a datafield page fits in the rest of the in-activity fields (like maps) better without dropping out to home page apps (assume you are on something like an Edge 1040/1050)

    #5 - the big hurdle... answer is "none" - other than a vague next waypoint.  Various people (including me) develop workarounds for routes on devices that don't support extensive route integration or maps. Maybe one day!

    All the best for what sounds like a tough but amazing trip -- Crisp