Temperature is not saved to the activity

Hi, I'm developing a watch application that records an activity, and one of the metrics that has to be recorded is the temperature. In my Forerunner 745 everything works fine and the temperature is recorded with ActivityRecording.createSession.

session = ActivityRecording.createSession({
    :name => "My activity name",
    :sport => ActivityRecording.SPORT_GENERIC,
    :subSport => ActivityRecording.SUB_SPORT_GENERIC
});

But when I run an app on my Fenix 7 Pro, the temperature is not saved to the activity, and when I open it in Garmin Connect I do see only the heart rate and some of the other default metrics.

I've tried to use both, adding :sensorLogger to the createSession with enabled all of the sensors, and tried to use Sensor.setEnabledSensors([Sensor.SENSOR_TEMPERATURE]), but none of those worked for me. However during the activity the temperature is available and received through SensorHistory.getTemperatureHistory({ :period => 1 });

Please advise, thanks

  • Newer devices have a per-activity setting: Record Temperature [On/Off] (the default value is Off). I'm not sure if this exists for 745 (I don't see it in the 745 manual, but it is present in the manual for newer devices such as 955).

    I think some users complained that the temperature recorded in the FIT file was misleading or pointless (since it's not the air temperature, the core temperature, or the skin temperature), so Garmin disabled temperature recording by default.

    You might want to try:

    - Enabling Record Temperature in a native activity (such as Run)

    - Opening your CIQ app and recording an activity

    Hopefully your app will adopt the Record Temperature setting from the last native activity that was opened. (iirc something similar used to happen with GPS settings.)

  • Thanks for reply, but this seems to doesn't work, tried to enable temperature for Run -> made a Run activity (temperature was successfully recorded) -> tried to run my app, but the temperature still was missing

  • Ah that sucks. Hmm, I'm not sure if there's a way to do it then. Maybe post a feature request in the bug reports forum? Maybe a CIQ team member will confirm whether it's possible or not.

  • Also, I think it's too bad that there's no way to configure some of these per-activity settings that could conceivably apply to CIQ apps. e.g. There could be a menu item called "CIQ Misc App settings" or something.

    That way Garmin could fulfill feature requests such as allowing touch to be disabled for CIQ apps, or allowing temperature to be recorded for CIQ apps.

    I kinda doubt it will happen as the user experience would be confusing (especially for apps that have their own settings) and it's not a trivial amount of work.

  • Yeah, probably will do so in case no one will post any other replies

  • But that's the point of what FlowState wrote. Per activity. So even when you look at the built in activities, i.e run, walk, then you have to enable the temperature recording in each one of them, so if you would enable run, then record a run, then record a walk, the walk wouldn't have it.

    However all the above is for activities, and you're talking about an app, that is totally different, and every setting needs to be implemented by you. You could have a setting whether the user wants to include temerature, and only if yes then you enable the sensor, and "manually" (aka from the code) you should add a field for the temperature and call setData for it every second (or maybe in this case it would make more sense to call only when it changes)

  • This actually is different if you have a Tempe temperature sensor paired and connected. With a Tempe, the setting automatically changes to record the temp for native apps.

    On some devices, without a Tempe, you never got a temperature graph.  On some, you'd see the internal if the device has a baro altimeter unless a Tempe connects. With a Tempe paired but not connected, no temperature graph on some

    For CIQ apps on newer devices, and SENSOR_TEMPERATURE enabled, you only see the temperature graph with a Tempe connected.  But nothing more is needed in the code. (you don't need to record it yourself).  I don't think CIQ apps on watches ever recording the internal temperature.  Edge devices are different if I recall.

    I've found that recording the internal temperature is often meaningless, so I keep the default off in native apps.

    Right now, my Tempe shows 82F, which is what I have the AC in my house set to (it's just sitting on my desk), so it's ambient.  Internal, it shows 91F (with the watch being worn), so it's about half way between ambient and body temperature.  That doesn't really tell me much....

    I see the Tempe available for $30US to $40US today.  I forget what I paid as I've had it since 2015.  But if you want a real temperature in both native and CIQ apps, it's worth it.

    One tip.  is that like a footpod, (it looks the same) is it's designed to attach to your shoe laces, but I found it can be impacted by the heat of the pavement, so instead I use an SBINDER clip so I can attach it in a better spot.  Others have it attached to the underside of the bill on a cap, to keep it out of the sun.

    Another thing is it can take the Tempe a minute or so to connect to a Garmin, and it only updates the temperature once a minute.

    The Temp transmits 24/7, being used or not, but I get about a year on a battery.

  • If Tempe transmits 24/7, then it means that whenever you are at home and it's nearby (within ANT range) then it is connected to the watch? Or it only connects when an activity is started?

  • It only connects when you start an activity - like an external HRM.  On some devices, you see a blinking thermometer when you're waiting for GPS.  And you get a toast when it connects when when you've started recording.

    For CIQ, it starts trying to connect after you enable SENSOR_TEMPERATURE.

    Years back I looked at using a Tempe in a background service, but as the background was limited to running 30 seconds at most, it wasn't really that usable.

  • Oh, another note.  On devices without a baro altimeter, like the va5. the only way to record the temperature is with a Tempe.  Things like SensorHistory.getTemperatureHistory() also aren't available if there's no baro.