FitContributor - Is the data recognised by 3rd Party Sites? eg: Trainer Power

Before I dive into looking at fit contributor, was wondering if anyone here have any info on how the data will be parsed into the FIT file.
Basically I just want to contribute data for my Dumb Trainer by converting speed to power based on the trainer's power curve.

I want to be able to just emulate an actual power meter and have it fed into the FIT file.

From the top of my head and reading the forums, I think this is NOT doable. (it won't be a drop-in) in that whatever is being generated by CIQ will need to be interpreted by CIQ and GC and i basically won't get power as a "normal metric"

Just want to confirm if this is true, cos if it is, then it's a BIG turnoff. might as well just use Zswift / Trainerroad which actually forms a true FIT file and such.

Thanks
  • I had the same question. i am doing my own app, although i am not ready yet for testing. I think it might be supported by the 3rd party site, if:
    • you are using :nativeNum attribute ( as moxy app does, for instance) and
    • the 3rd party site supports FIT2.


    here you can see what i mean:

    mCurrentHCField = dataField.createField("currHemoConc", CURR_HEMO_CONC_FIELD_ID, Fit.DATA_TYPE_UINT16, { :nativeNum=>54, :mesgType=>Fit.MESG_TYPE_RECORD, :units=>"g/dl" });

    you get the proper nativeNum from file profile.xlsx which is provided with the FIT sdk.

    i have seen activities in sporttracks.mobi where a FIT file created by the moxi app was imported. and the moxi data is available there. so at least sporttracks does support it. i dont know for other sites though.

    EDIT: read also this:
    https://forums.garmin.com/showthread.php?358403-Does-CIQ-2-1-support-override-FIT-internal-Power-related-values-using-fitContribution&p=886722#post886722
  • Thanks> Really insightful

    I've had a look at the CIQ Doc.

    :nativeNum (Number) — Optional. If this field can be treated equivalently to a field that is included in the FIT SDK use this to indicate the Field Number that is specified by the FIT Profile. For reference see: Messages Sheet in Profile.xlsx included in the FIT SDK available at www.thisisant.com/resources/fit


    Then I looked at the Profile.xlsx file, unfortunately, looking at the messages sheet, I'm not exactly sure which is the Field Def # I should be looking at or even which segment.

    In the end - i think it should be the "ACTIVITY FILE MESSAGES" portion..

    • session - 20 - avg power
    • lap - 19 - avg power
    • record - 7 - power




    So, If I understand correctly, if I use

    mCurrentTPower = dataField.createField("TPower", TPOWER_FIELD_ID, Fit.DATA_TYPE_UINT16, { :nativeNum=>7, :mesgType=>Fit.MESG_TYPE_RECORD, :units=>"watts" });

    Then I should be SET? ( so to speak of course, since I see quite a number of developers still having issues w/ the graph / data generation from GC or GCM)
  • Looks like I'm NOT set.

    I've tried the above code and while it can upload fine to GC, Power is not being graphed by GC.

    I've tried FIT2CSV of the file and managed to get confirmation that power is indeed being populated into the FIT file.


    Data,9,field_description,field_name,"power",,units,"watts",,native_mesg_num,"20",,developer_data_index,"0",,field_definition_number,"0",,fit_base_type_id,"132",,native_field_num,"7",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

    Data,10,record,timestamp,"845954968",s,position_lat,"36866903",semicircles,position_long,"1212226084",semicircles,distance,"4.76",m,altitude,"1.0",m,speed,"1.269",m/s,temperature,"26",C,enhanced_altitude,"1.0",m,enhanced_speed,"1.269",m/s,power,"5",watts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,



    the resultant FIT file, can be uploaded into Strava and Does indeed show the Power Data and is graphed by Strava.

    However, That same FIT file cannot be imported into cyclemeter (it says that the fit file is malformed)

    So... somehow GC is not honoring the Power Data and I am not sure why.

    I also looked at the FIT SDK and


    void SetPower(FIT_UINT16 power)
    {
    SetFieldUINT16Value(7, power, 0, FIT_SUBFIELD_INDEX_MAIN_FIELD);
    }



    mTPower = createField("power", 0, Fit.DATA_TYPE_UINT16, { :nativeNum=>7, :mesgType=>Fit.MESG_TYPE_RECORD, :units=>"watts" });


    seems to match w/ the nativeNum = 7 and UINT16


    Lastly - seems like, from GC, i can't download the file as TCX, always get an Apache Tomcat error and Tapiriik.com can't process the file for replication to DropBox as well.
  • hi,
    i have had a strange issue too.
    yesterday night i finally was able to create some fit files containing my data. it is a pool swim app. i generate record messages for distance and speed, lap messages for avgSpeed and lapDistance and session messages for avgSpeed, totalDistance and poolLength.
    all these values are in the profiles.xlsx file, so it was easy to figure out the proper native number.

    well, this worked very well. after stopping the app (i have uploaded the app as a beta so i can test it without sideloading), the fit file was uploaded to GC. and the charts, interval and session data was there.
    but.... today they are not there anymore! these data have somehow disapeared.
    so strange. i have downloaded the fit file from GC, deleted the activity and uploaded it again. but still no IQ data there.
    maybe they are doing changes into GC today and these data are not displayed?

    by the way, strava accepted the fit file yesterday, but did not show distance or speed. just time. so it seems the native numbers are not working with strava, at least for pool swimming activities.
  • https://forums.garmin.com/showthread.php?362690-Fit-Contributor-datafield-not-working-on-Fenix3

    Perhaps they are fixing it..

    For Pool Swimming - I would anticipate that "perhaps" GC won't interpret them as native even tho you use the correct :nativeNum
    What did your graphs (when it showed anyways) look like? Is it a native graph or you had one of those CIQ Graphs in which you had to create your own definition in a resource.xml file or such?

    In my thinking, i was thinking that all I needed to do was just "simulate" power and embed it into the FIT file and "if it looks like a duck, walks like a duck, it has got to be a duck".

    But obviously GC has other thoughts in mind. Its a Chicken!!
  • GC does not interpret them as native. all data was labelled as IQ. that was expected, i have already read about it in the forums. Garmin doesn't have any plans of replacing the original data. it is a pity, given that garmin is the owner of the FIT format. this mean that data will not be consolidated in GC (such as year swimming distance and so on). but i can live with that, if a 3rd party site such a strava supports it. GC is actually just the man in the middle. i prefer the way strava summarizes information.

    i hope that 3rd party sites will eventually support ducks and chickens :)

    EDIT: hey! data is back! i have taken a couple of screenshoots :)

  • I was under the impression that it will be native since I'm just "simulating" the data as native. Basket!!
    Okay, so it won't show up unless I do the manual labelling and what not, in a way, I'm also OK w/ that if they interpret the duck as chicken.

    What I am not able to live with is basically the FIT file is considered "malformed" or whatnot when I try to import it into cyclemeter or that Tapiriik.com is not able to even download that file automatically to sync to DropBox
  • I edited my post above. my data is available again. is yours also visible now?
  • I doubt so since I didn't do anything in the resources.xml etc file to define the data and ask for GC to plot it....

    ( I just checked.. nope.. none..)