Several identical sensors and data fields

Former Member
Former Member
Hi,

I'm requesting your help on a very specific problem. I am working on a sensor which sends some data using the ANT+ protocol, probably by using the Bicycle Power device profile in a first time BUT the user will wear 2 of my sensors (which are exactly the same).

(It can be useful to precise that I'm not an ANT+ expert)

What I want is to develop 2 data fields for displaying the data of each sensor, like:
- Data field 1 => Power of MySensor 1
- Data field 2 => Power of MySensor 2

I'm pretty sure that's possible since I've found a sensor that seems to work like that, the Moxy Muscle Oxygen Monitor. In short, I want my final users to do that https://groups.google.com/forum/#!msg/golden-cheetah-users/Ay-YFWSeSzk/tZXmsnhxCwAJ
I've found that they have published 4 data fields on the store for the same sensor but I don't understand how they achieved that since I'm not able to connect to multiple same sensors on my Garmin Watch, I can pair as many sensors as I want but only one can be active at a time.

So here are my questions:
- How to have several identical sensors active on a watch?
- How to link a data field to a specific sensor (data field 1 to MySensor1 and data field 2 to MySensor2)

I hope I'm clear enough, sorry for my english, not my native language. :)

Thanks in advance for your help!
  • What I want is to develop 2 data fields for displaying the data of each sensor, like:
    - Data field 1 => Power of MySensor 1
    - Data field 2 => Power of MySensor 2

    ...

    So here are my questions:
    - How to have several identical sensors active on a watch?
    - How to link a data field to a specific sensor (data field 1 to MySensor1 and data field 2 to MySensor2)


    The two data fields can be identical except that they need to have different App IDs. There are 2 reasons for needing different App IDs. First, if you load the same data field twice on a device, it will just run 1 instance of it and display it twice so there is no way to connect to different sensors. Second, I use app settings to set the device ID for each data field so that requires that they be different apps so they can have different settings.

    For data fields, I use the app settings to set the device ID for each sensor. The Moxy sensors have the device ID written on the label so it's easy for the user to identify which sensor goes where. We have looked at proximity pairing solutions, but with no user input available on DFs it's not very elegant. Also, the proximity pairing used to be very buggy. I have not tested it recently.

    It is possible to have both sensors in one data field too. Our earlier versions of Moxy data fields had up to 4. One problem with this is that you tend to run out of memory. A second problem is that it makes it harder to fit the data to display in one field. The third problem is that if the user wants one sensor on one page and the second sensor on a different page, they can't do it. I'd recommend staying with the 2 data field approach that you suggest.

    Writing the data to the FIT file is a bit nuanced. You can't reliably control the order of the columns so you need to have some method to identify which data goes with which sensor. The Muscle Oxygen Profile has specs for how to handle this, but ConnectIQ does not have the functionality to implement this. I wrote a standard for how we handle this with Moxy. You can download that here. The standard was developed with input from several 3rd party data analysis software companies and they are implementing this standard for MO2 data. It might help grease the wheels with them if you do something similar with your data.

    Garmin and Dynastream have been somewhat uninterested in solving these standards issues associated with having data from multiple sensors of the same type in one FIT file. I would like to see something like the standard that I wrote for MO2 data incorporated into the MO2 profile but Dynastream declined to do this. If you develop a standard for your application, it might be useful to post it on the FIT forum so they are aware of the issue.
  • Former Member
    Former Member over 8 years ago
    The two data fields can be identical except that they need to have different App IDs. There are 2 reasons for needing different App IDs. First, if you load the same data field twice on a device, it will just run 1 instance of it and display it twice so there is no way to connect to different sensors. Second, I use app settings to set the device ID for each data field so that requires that they be different apps so they can have different settings.

    For data fields, I use the app settings to set the device ID for each sensor. The Moxy sensors have the device ID written on the label so it's easy for the user to identify which sensor goes where. We have looked at proximity pairing solutions, but with no user input available on DFs it's not very elegant. Also, the proximity pairing used to be very buggy. I have not tested it recently.

    It is possible to have both sensors in one data field too. Our earlier versions of Moxy data fields had up to 4. One problem with this is that you tend to run out of memory. A second problem is that it makes it harder to fit the data to display in one field. The third problem is that if the user wants one sensor on one page and the second sensor on a different page, they can't do it. I'd recommend staying with the 2 data field approach that you suggest.

    Writing the data to the FIT file is a bit nuanced. You can't reliably control the order of the columns so you need to have some method to identify which data goes with which sensor. The Muscle Oxygen Profile has specs for how to handle this, but ConnectIQ does not have the functionality to implement this. I wrote a standard for how we handle this with Moxy. You can download that here. The standard was developed with input from several 3rd party data analysis software companies and they are implementing this standard for MO2 data. It might help grease the wheels with them if you do something similar with your data.

    Garmin and Dynastream have been somewhat uninterested in solving these standards issues associated with having data from multiple sensors of the same type in one FIT file. I would like to see something like the standard that I wrote for MO2 data incorporated into the MO2 profile but Dynastream declined to do this. If you develop a standard for your application, it might be useful to post it on the FIT forum so they are aware of the issue.


    Thank you MoxyRoger for all these details. Thanks to you I have a working data field that I can configure to look up for a specific device ID and everything seems to work fine, I have some data displayed as I want.

    Unfortunately I have a new problem, like you said I have created a second data field, a copy of the first one, only the application ID differs. But when a I try to show the 2 data fields on a 3 fields layout on my vivoactive, I got this error message for the second one:

    ERROR: System Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: 00000000000000000000000000000000
    CALLSTACK:
    @PC = 0x00000000
    @PC = 0x00000000
    @PC = 0x00000000

    If I show only one field (Data Field 1 or Date Field 2), the field works fine but it's when I try to show the second one (Data Field 1 or Data Field 2), the second one always fails.
    This error rings a bell to you?

    Thank you!
  • Are you sideloading both of the datafields?

    I just have a vague recollection of this problem. I think when you sideload the apps it uses the STORE_ID: 00000000000000000000000000000000 rather than the APP ID you get when you download from the APP store. This causes a collision when you write the FIT file data if you are using the same FieldIDs.

    I think you either need to use different field IDs in the FIT contributor (so not quite identical data fields) or you need to load at least one of the data fields through the App store.

    I'm not sure I've got all of the details correct, but I do recall a problem related to sideloading, AppIDs and fieldIDs.
  • Former Member
    Former Member over 8 years ago
    It was indeed a collision of the field IDs! (yep my data fields are sideloaded).

    Thank you very much for your help, you saved me a lot of time! :)