Incorrect Sensor History on Vivoactive 3

I have a user on a new Vivoactive 3 reporting that the temperature value on my watch face is incorrect. I have tested this on a Fenix 5 and it seems to work fine. Is there some other trick to reading the temperature sensor history on a VA3 ?

Below is the code I am using to read temperature history on other devices....

var senIterator = null;
var senHistory = null;
var senSample = null;
var senValue = 0;

if (Toybox has :SensorHistory) {
if (Toybox.SensorHistory has :getTemperatureHistory) {
senIterator = new Lang.Method(Toybox.SensorHistory, :getTemperatureHistory);
senHistory = (senIterator == null) ? null : senIterator.invoke({});
senSample = (senHistory == null) ? null : senHistory.next();
senValue = (senSample == null) ? 0 : (senSample.data == null) ? 0 : senSample.data;
} // end if SensorHistory has getTemperatureHistory
} // end if device has SensorHistory
return (Sys.getDeviceSettings().temperatureUnits == Sys.UNIT_METRIC) ? senValue : senValue.toFloat()*9.0/5.0+32.0;

  • What does the user mean by "incorrect"? That it's reading higher than ambient? That's common due to the impact of body temperature (I've seen up to 10-15F difference between the internal temp in SensorHistory and a Tempe on other watches). I'm running one of my apps that displays the current temperature (as well as a graph of the history) from SensorHistory on the va3, and it's what I'd expect. It's the exact same code I use on other devices. I just put on an f5 that's been on the desk all day, and the internal reading jumped 5F in in matter of minutes and is close to what I see on the va3 already. (f5 started at about the same as a tempe that was sitting on the desk close to it.)
  • Jim, thanks for the quick response! The feedback I am getting is that the Garmin widget reported the temperature at 44F but that it was more than 40 degrees over that value on the watch face. They also mentioned that the value seemed to jump around by 4~5 degrees each minute when the value is updated. Is there any more documentation I can request from the user to help ? Thanks
  • Since I posted, I've had the va3 on one arm, the f5 on the other, and a Tempe clipped to my belt that's used by both. The internal (Sensor History) data it close between them, and the Tempe is showing about 8-9F less. What I'd expect.

    Are they talking about the temp on the Weather Widget? I don't see a native widget for the internal sensor on the va3. They might be comparing the weather widget to what temp sensor in the watch itself sees. (that can be quite different if they are inside)

    There are watchfaces that use a background process to get weather data from the internet, like Line,SC8, and some of mine,etc, that show about what you'll see in the weather widget. The user may be thinking you're does that too, and doesn't use SensorHistory but should show what the weather widget does
  • I will check, I just assumed he was comparing it to the standard Garmin widget that shows current sensor and the 4 hours of history. If he is comparing it to the weather widget that would certainly explain why the values are so different! I certainly can't find any problems in the code.
  • There isn't a native widget on the va3 for internal temperature (nor an ABC widget) so I'm thinking this may be it. I have "temps" in the store which is a widget that will show internal temp on the va3 if you want the user to try that.
  • Jim, you were exactly right. I sent some photos showing the widget and the watch face working fine on a Fenix 5. The user was comparing the temperature returned from the sensor with that in the Weather widget which comes from an external web site and is the outside temperature at that location. Thanks