TEMPE vs EDGE: Thermal Latency

This was an interesting experiment... I fixed the TEMPE logic to handle 16-bit signed integers so it could handle sub-freezing temps and then gathered EDGE 1030 (device) -vs- TEMPE (external sensor) temperatures when both were in the freezer (for an hour) and then both out on my patio here in Orlando in temps in the high 80s. I logged the temps in the Device's LOG file so I could plot them.

The main reason I did this was to calibrate the offset I needed to apply to my TEMPE. Turns out, at about 4F, my TEMPE reads only about 1F more than my EDGE 1030. Close enough. I should have recorded a little longer to allow the EDGE to reach steady state and see how close the EDGE ended up -vs- the TEMPE as they warmed back up.

  • The main reason I did this was to calibrate the offset I needed to apply to my TEMPE. Turns out, at about 4F, my TEMPE reads only about 1F more than my EDGE 1030. Close enough.

    ?

  • My point was I determined that I can trust the TEMPE, and it correlated nicely with my Edge 1030 temp when that device isn't influenced by the sun. That was good to see. I don't think I need to include a User Setting for a TEMPE offset.

  • Thanks. 

    You should only trust the Tempe if you’ve verified it against another trusted instrument. As it is, it seems all we know is that the data is smooth.

    Also, if there is a difference between the Tempe results and actual, it might not be constant (the difference might not be the same across the temperature range). If that’s the case, it one might need offsets for multiple temperatures. 

    I wonder if providing for entering an offset (or offsets) might be easy enough to do “just in case”. Some of the Tempes might be off even if yours isn’t. People taking the effort to use a Tempe might appreciate the option. 

  • Understand the tempe isn't a lab grade sensor, and while I've not checked may only have an accuracy of +/- 2 degrees C for example  Also, note the tempe itself has a range.  This is from the doc:

    The closer you get to -4f, the more inaccurate it might be,  Below -4f it might just stop transmitting (battery too cold? Think your car battery when it gets really cold)

  • OH That is good to know. When I checked it in my refrigerator against the EDGE device temps, which is much closer to what should be a reliable range, it correlated within 1F. I have a 100 mile ride tomorrow starting at 6:30am (cool) and into the mid-day heat, under full sun. So it'll be interesting to see TEMPE -vs- DEVICE -vs- LIVE.

  • I have lived in places where the outdoor temp has ranged from -30f to +122f.  Now that's cold and hot! Slight smile

  • Wow! You have me beat. I had a business trip to Wisconsin in January years ago and it was -22F. And during my HooDoo 500 race in Utah, somewhere outside of St. George, in Aug 2017, it was about 115 degs. Small bags of ice and a garden sprayer got me to the finish! Ugh.

  • Lived in Wisconsin and Minnesota my first 30 or so years, and in Arizona the last 30+.

  •  
    Dave, I apreciate your work with temperature.
    I would like to play around too, and want to get the internal Temp of my Edge in a datafield - but I fail...

    I would be very grateful if you could help me with a code snippet how to get the Edge's temperature.

    I have - according to Toybox description - built up the following code, but it does not work.
    Makes an error:
    Invalid '$.Toybox.Lang.Method(sensorInfo as Any) as Any' passed as parameter 1 of type 'PolyType<Null or (callback(info as $.Toybox.Sensor.Info) as Void)>'.

    import Toybox.Activity;
    import Toybox.Graphics;
    import Toybox.Lang;
    import Toybox.WatchUi;
    import Toybox.FitContributor;
    import Toybox.Math;
    import Toybox.Sensor;
    
    var tempEdge = 0.0;
    
    function initialize() {
            
            Sensor.setEnabledSensors([Sensor.SENSOR_TEMPERATURE]);
            Sensor.enableSensorEvents(method(:onSensor));
    
    }
    
    
    function onSensor(sensorInfo) {
        tempEdge = sensorInfo.temperature;
    }    
    

  • You don't need the code you have in initialize as except the x40 edge devices, they don't natively pair with a Tempe.  On those non- x40 devices, you see the internal temp in Sensor, but in a data field, you need to access Sensor in a background service.

    In general, in a data field, you don't use setEnabledSensors.  The DF enbales what's available,  You don't use Sensor.setEnabledSensors([Sensor.HEARTRATE]); for example.