Does heart rate come from the OHR or from the chest strap?

Hi all,

I have an activity and I want to determine whether the measured heartbeat comes from the OHR or from a chest strap.

Is there a way to determine the source exactly?


Currently I read the heartbeat via Activity.getActivityInfo().currentHeartRate

If I use the example with the sensor

Sensor.setEnabledSensors([Sensor.SENSOR_HEARTRATE]);

Sensor.enableSensorEvents(method(:onSnsr));

I always get a value displayed – whether I use the chest strap or not.

Does anyone have any ideas or examples?

Thanks in advance

Jens

  • I never understood what is that setEnabledSensors for with regards for HR, because I always get the HR both in my DF and my watch-app, without ever calling that function. Maybe it's needed if I'd want sensor logging?

  • With OHR, there are two mode.  A 24/7 mode and an activity mode.  With 24/7, it's not as accurate - to prolong battery life.  You can tell what mode the watch is in by peeking under the back. If the lights are flashing, it's 24/7.  Solid, activity mode.

    If you are in an activity and an external HRM is connected as a normal sensor, they are off.

    In 24/7 mode, you can still display the value, but understand it's not as accurate.  In a watch app, if you've enabled the sensor, the leds don't blink and you are getting a more accurate reading.  If you don't, you are still in 24/7 mode and blinking

    And with a native activity, it's in activity mode unless an external HRM is connected and is controlled by the native activity, and not the DF itself.

  • I just checked with my watch-app (Hiker) and I see it stopped blinking and the led turned on all the time. However before I started the app the led was blinking in green, after I started the app it changed to full red.

  • Are you enabling the HR Sensor, thinking it's only for an external sensor?

  • No, as I wrote above, I don't have setEnabledSensors in my code. Only the permissions in the manifest and I create a session in the watch-app.

  • Coming back to this after some time. So I had a strange heart rate reading during my recent interval run (see more here:  RE: Heart rate ) and I wonder if there is a way for a DATAFIELD to know what is the source of the heart rate reported in Activity.Info.currentHeartRate ? 

    Or put it other way: can my datafield detect (and indicate) that the watch is currently recording my HR from the optical sensor vs from external strap?

  • My Forerunner 955 seem very accurate in 24/7 optical HR mode. I can watch it react quickly to things like standing up, or intentionally taking slow deep breaths to drop it down into the 40s. My RHR is low 40s. Maybe older watches were different?

    I just found a strange situation. I don't have any external chest straps paired. But I have a Smart Trainer (ZwiftHUBOne) that has the ability to bridge HR. If I pair my FR955 to the Smart Trainer, when I start an activity, my HR displayed on my watch goes to ZERO.

    Seems like a bad implementation. I get that the Smart Trainer is sending zero BPM as a native HR sensor. But it would be nice if the watch reverted to the optical in the case of an obvious "bad" external HR sensor. As soon as I stop the activity, the watch instantly shows HR again (going back to using the optical).

  • How do you perform the tests when "you stand up / slow breaths, etc"? How do you know the optical sensor is in 24/7 mode? Are you looking at the LEDs? Where do you see the HR values? I thought that the only way I can see the 24/7 mode is by looking at a watch-face that displays the HR and refreshes it once a minute. I assume that if you open a widget to show the HR then it switches to active (activity?) mode. Is my assumption incorrect?