Git Product home page Git Product logo

polar-ble-sdk's People

Contributors

andygnite avatar joikarinen avatar orestesgaolin avatar palmqvisti avatar puzzlemoondev avatar rupan avatar samulimaa avatar teemulaupolar avatar tien avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

polar-ble-sdk's Issues

PPI timestamp property always reported as 0. (Polar iOS Demo app with OH1)

Hi Polar team :)

I have just updated my OH1 to latest firmware and downloaded your iOS-SDK. I then wanted to get PPI samples and added some prints in the ppiToggle(_ sender:) method:

                case .next(let data):
                    print("data timestamp: \(data.timeStamp)") // always zero!
                    for item in data.samples {
                        NSLog("PPI: \(item.ppInMs); errorEstimate: \(item.ppErrorEstimate)")
                    }

But 'date.timestamp' is always zero!?

Or have I misunderstood the interface?

I also tried to call setTime (succeeded) once connected but that made no difference...

The reason for this is that I wanted to try to export the Beat-To-Beat-Interval to Apple's HealthKit (iOS 13). But maybe this is not possible...

Update: I do get timestamp for Acc. and PPG samples. So it seems to be a problem for PPI only.

Thanks!

[HELP]Polar Bluetooth connection to Lenovo E7 tablet (TB-7104F).

Hello, hope this finds you well.

I have been experimenting with the polar OH1, the set up went smooth with a samsung galaxy note 5. But when i tried to run the app from a lenovo e7 tablet, it failed. This is from the logcat when i tried to connect to device.
OH1 is updated to latest 2.0.10 firmware.

2019-06-06 01:12:29.753 8180-8180/polar.com.androidblesdk D/Polar BHE: version: 2.1.0
2019-06-06 01:12:29.757 8180-8180/polar.com.androidblesdk D/Polar BHE: BLE power: true
2019-06-06 01:12:29.797 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:29.800 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:29.871 8180-8180/polar.com.androidblesdk D/Polar BHE: BLE power: true
2019-06-06 01:12:29.889 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:29.889 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:29.891 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:30.594 8180-8180/polar.com.androidblesdk D/Polar BHE: bt ready
2019-06-06 01:12:30.596 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:33.621 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: CLIENT_START_SCAN
2019-06-06 01:12:33.622 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:33.622 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ENTRY
2019-06-06 01:12:33.623 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/timestamps left: 0
2019-06-06 01:12:33.623 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started -->
2019-06-06 01:12:33.641 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started <--
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ADMIN_STOP_SCAN
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: EXIT
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Stop scanning
2019-06-06 01:12:50.943 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:50.943 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:50.944 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:50.945 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:50.947 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:50.948 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ENTRY
2019-06-06 01:12:50.949 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/timestamps left: 1
2019-06-06 01:12:50.949 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started -->
2019-06-06 01:12:50.971 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started <--

This is where the log stops.
No exceptions where thrown, all permissions are acquired.

The tablet has bluetooth 4.0 according to specification sheet.

If i enter the bluetooth page in device settings, i can see the device and pair to it.
I tried the following steps.
Paired to the oh1 and tried to connect.
Unpaired to the oh1 and tried to connect.
Factory reset oh1 and tried to connect.
Tried to connect to 2.0.8 firmware before updating.

Nothing connected.

Some help would be much appreciated.

Thank you.

Trouble with PPI and PPG Feature for OH1

Hi,
i am trying to test the PPI and the PPG Feature of the OH1 sensor connected to your Android example application. The demo application works well in terms of printing current heartrate values to the log console:

Example Message (HR is working):
2019-04-05 23:18:25.171 32086-32086/polar.com.androidblesdk D/MainActivity: HR value: 72 rrsMs: [] rr: [] contact: false,false

But if I hit the PPG_STREAM or the PPI_STREAM button in the APP i only see the following line in log:
2019-04-05 23:20:10.944 32086-32086/polar.com.androidblesdk E/MainActivity: null

Furthermore while debugging i can clearly see that the ppiFeatureReady and the ppgFeatureReady Methods in the MainActivity.java class are never be called.

Maybe you got an advice what I Need to do to make this work.

Thank you for your reply.

Best regards,

Mark

Use with Non-Polar Devices

As is, the SDK only works with Polar devices; i.e. you have to enter a serial number, and it filters out non-Polar device names. I would like to use it with other devices, many of which support the BLE Heart Rate Service.

On looking through the code it looks like the access to Android Bluetooth is through the BleDeviceSession and its descendants. In particular the basic Android BLE interface is in the BluetoothDevice and BlutoothGatt members of BleDeviceDeviceSessionImpl. However, since these are private I cannot access them.

I could, for example, connect to other devices by extending BleDeviceDeviceSessionImpl and adding another connect method. I could also do other things like scan for devices or get more device info.

I don't claim to understand the SDK code completely, but it looks like the identifier doesn't really have to be a Polar serial number, at least for non-Polar-specific features. It seems to be primarily used for connecting. Presumably there would be an Exception generated if one tried to use those features and they are not available (or else nothing would happen as with the ECG for non-updated H10's).

So far my experience is that the SDK is robust, and I am sure you have put more effort and expertise into it than whatever I might have done myself. However, I don't want to use it to write apps that are limited to Polar (when that is not necessary). It's not that I don't like Polar. It's that I have devices like the Corsense finger sensor that Polar does not make.

So is this intentional? Cast in stone? What are your thoughts?

Thanks.

App Store upload issue

Using either Main or Develop Branch ... PolarBleSdk.framework issues when uploading to App Store. Contins Unsupported Architectures [x_86_64, i386]. And PolarBleSdk does not have proper segment alignment. Try rebulding with the latest Xcode (from Apple). Same for RxAtomic and RxSwift frameworks. How to fix this?
Screen Shot 2019-05-07 at 4 26 14 PM

Not receiving battery charge notifications when connecting via Polar SDK to OH1

When I connect to the OH1 from my Android app using the standard Battery Profile, I see notifications coming in for changes in the battery charge percentage (in multiples of 10), as expected.

However, if I use the Polar SDK, I get a callback to batteryLevelReceived upon connection, but never any update to the battery charge after that. HR and accelerometer data are received as expected.

Re-initialize PPI streaming

For a workaround for the 20min PPI stream limit (see issue #34 ), we've automatically reset the PPI streaming.

But very often, the PPI streaming does not restart; the light passes from flashing purple to flashing green, rather than passing flashing purple to flashing white (which the OH1 does at the beginning of a PPI stream); and no PPI value is ever sent.

The way we did is frankly abrupt: we just nullify the disposable, then relaunch the subscribe.

Is there a better, sure-shot way to reset it ?

Thank you.

PolarBleApiDeviceHrObserver getting PolarBleSdk.DeviceNotFound

Have HR10 device. How to get RR data and PolarBleApiDeviceHrObserver to work?

I'm using the iOS Example app, hitting the buttons and get this in Xcode log ..
Polar H10 514B382E HR BROADCAST: 53
Polar H10 514B382E HR BROADCAST: 53
Polar H10 514B382E HR BROADCAST: 53
[BLE] commandState state:SCANNING action: CLIENT_REMOVED
[BLE] commandState state:SCANNING action: EXIT
[BLE] commandState state:IDLE action: ENTRY
start ecg error: PolarBleSdk.DeviceNotFound
recording start fail: PolarBleSdk.DeviceNotFound

What is causing DeviceNotFound if Broadcast is working? Is PolarBleApiDeviceHrObserver in a working state? Thank you,

Typo in the API documentation

Since I did not find another way to contact somebody responsible for the API documentation, I'm posting this here:

The (otherwise great) API documentation says that the list of daily activities can be retrieved by the URL GET /v3/users/{user-id}/activity-transactions/{transaction-id} yielding a response in the form:

{
  "activity-logs": [
    "https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/56",
    "https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/120"
  ]
}

Other than stated in the documentation the key for the activities URLs is not activity-logs but activity-log:

image

PC-Support

Is there any plan to add support for computers (Windows, Linux, ...)?

Currently I‘m using my own implementation to interpret the data using Bluetooth GATT (HeartRate). It would be great to get an official SDK, which would allow to view even more data (such as the ECG signal).

Cannot get PPI that is over 20minutes

I am trying to get PPI from OH1(firmware2.0.11).But I can get only 20 minutes PPI.
Is this due to internal logic of OH1? If it is not so, Do you have any idea about this problem?
There are no error in my logcat and other data(HR) continue being got.

OH1 continues to send HR notifications when charging

When I connect my app (using Polar SDK) to the OH1 I am wearing, it receives HR notifications (hrNotificationReceived callback) as expected.

If I then remove the sensor from the armband and click it in the charger cradle, the connection stays alive and my app continues to receive HR notifications, continuously the same as the last correct measurement. And since skin detection is not supported, there is no way to distinguish this from normal measurements.

I observed that the LED is turned off as soon as the sensor starts charging, and accelerometer data stops streaming. HR notifications continue though. HR data notifications only stop when unplugging the sensor from the charger.

H10 RR Recordings on Device are Empty

Dear Polar Team,

using your Android SDK, my goal is to record RR intervals on the device for later download. I start recording like this

`
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());

        getApi()
                .setLocalTime(connectedDevice.deviceId, calendar)
                .andThen(getApi().startRecording(connectedDevice.deviceId,
                        "TEST_APP_ID",
                        PolarBleApi.RecordingInterval.INTERVAL_1S,
                        PolarBleApi.SampleType.RR)).subscribe();

`

and I retrieve all exercise data like this

api.listExercises(getConnectedDevice().deviceId) .flatMapSingle(new Function<PolarExerciseEntry, Single<PolarExerciseData>>() { @Override public Single<PolarExerciseData> apply(final PolarExerciseEntry polarExerciseEntry) throws Exception { return api.fetchExercise(getConnectedDevice().deviceId, polarExerciseEntry); } }) .toObservable().subscribe();

But when I look at the PolarExerciseData.hrSamples, it is always empty. If you have an idea what goes wrong it would be greatly appreaciated

Support for Linux

Hi, Any chance of releasing the SDK/library for Linux as well? Thanks.

PolarSDK-ECG-HR-Demo with HR and RR Plotting

I modified the PolarSDK-ECG-HR-Demo app to add an Activity that plots HR and RR as a strip chart. Screenshot attached. I can send you the changes if you are interested, no obligation. It seems like it would be useful as a demo to others.

Screenshot_20190330-123115_Polar ECG small

No Swift 5.0 support

This error occurred when Xcode updated to version 10.2
Module compiled with Swift 4.2.1 cannot be imported by the Swift 5.0 compiler

Code signing "PolarBleSdk.framework" failed. (Xcode)

Code signing PolarBleSdk.framework fails when validating archive: "Code object is not signed at all." Code signing succeeds without PolarBleSdk framework.

Screenshot 2019-07-02 at 9 31 37
Screenshot 2019-07-02 at 9 31 12

LOGS:
2019-07-02 06:31:26 +0000 Processing step: IDEDistributionCodesignStep
2019-07-02 06:31:26 +0000 Entitlements for <IDEDistributionItem: 0x7fb77cc2caf0 'com.polar.PolarBleSdk' '<DVTFilePath:0x7fb77cc65510:'/Users/user/Library/Developer/Xcode/Archives/2019-07-02/XXXApp 02-07-2019, 9.23.xcarchive/Products/Applications/XXXApp.app/Frameworks/PolarBleSdk.framework'>'>: {
}
2019-07-02 06:31:26 +0000 Writing entitlements for <IDEDistributionItem: 0x7fb77cc2caf0 'com.polar.PolarBleSdk' '<DVTFilePath:0x7fb77cc65510:'/Users/user/Library/Developer/Xcode/Archives/2019-07-02/XXXApp 02-07-2019, 9.23.xcarchive/Products/Applications/XXXApp.app/Frameworks/PolarBleSdk.framework'>'> to: /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/entitlements~~~emJgtm
2019-07-02 06:31:26 +0000 Running /usr/bin/codesign '-vvv' '--force' '--sign' '3F818C3735CDDE2BC1A90FAF59AC108CBB16650D' '--entitlements' '/var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/entitlements~~~emJgtm' '--preserve-metadata=identifier,flags,runtime' '/var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework'
2019-07-02 06:31:26 +0000 /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework: replacing existing signature
2019-07-02 06:31:26 +0000 /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework: code object is not signed at all
2019-07-02 06:31:26 +0000 /usr/bin/codesign exited with 1

Cannot get androidBleTestApp to build

I extracted the androidBleTestrApp from the ZIP download as a single project. I also copied libs from polar-sdk-android to the project. On opening the project in Android Studio, it asks to configure the Gradle wrapper. (There is no gradle directory in the ZIP download.)

I then get this error:
C:$Recycle.Bin\S-1-5-18
Open File

This is likely owing to the
copy {
from("$projectDir/../../../../polar-sdk-android/libs")
into("$projectDir/libs")
}
since the path is not right. (Also it should not be needed if I copy the libs directory manually.)

I have not been able to get around it by commenting out these lines or the preBuild.dependsOn copySdk.

If I create a project polar-sdk-android project with the libs, and change the "from" line to be correct for that project:

from("$projectDir/../polar-sdk-android/libs")

then I get

ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app

So there seems to be something wrong with the files in lib that I cannot figure out.

In general there needs to be instructions to build the Android example alone without extracting the whole Github tree. The ones in README.md did not help me.

Thanks.

PolarBleApiCallbackAdapter

This is a feature request. It would be nice to have a PolarBleApiCallbackAdapter that works similar to a MouseAdapter. Then you wouldn't have to clutter your code with api callbacks in which you are not interested.

It is trivial. I am including what I did.

PolarBleApiCallbackAdapter.txt

Background feature explanation.

Hi,
I see that there is a api.backgroundEntered(); method.
I'd like to know a little bit of details on how it works if possible.
On Android there are many ways to achieve background functionalities, which one did you use?
When is it going to be killed by the system?
Does it run on the main thread?
In the callback with the HR results for example can we do arbitrary things, or do we have restricted resources?
As I understand iOS has a background functionality too, can you also expand on that?

I did experiment a bit with it, but I'd like to know a little more from you.
I couldn't find any information on the documentation.

Thanks.

Swift 5.1.2 Support

Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler

cannot find symbol method autoConnectToPolarDevice

In my java class, I declare the variable:

PolarBleApi api = PolarBleApiDefaultImpl.defaultImplementation(reactContext, PolarBleApi.FEATURE_HR);

then in my method I hit later, I call autoConnect:

api.autoConnectToPolarDevice(-50, null).subscribe();

I just keep getting this error:

        api.autoConnectToPolarDevice(-50, null).subscribe();
           ^
  symbol:   method autoConnectToPolarDevice(int,<null>)
  location: variable api of type PolarBleApi
1 error```

Thanks for any insight. 

No ECG in polarsdkecghrdemo

I'm trying the demo app polarsdkecghrdemo with a Polar H10 - connection works, HR is shown but ECG is not shown. Logcat does not show ECG either, only HR. Should it work with an H10?

Screenshot_20190323-215432

Incorrect intervals stored in Google Fit

I pulled data that was synced to Google Fit from a polar H10. A heart rate measurement in beats per minute is stored once every second. This is suboptimal because the H10 is actually more precise and measures RR intervals. This information is lost when storing bpm exactly 1 second apart. Can I suggest that the heart rate be stored at the intervals corresponding to the RR interval instead of the arbitrary 1 second interval?

Here is an example of how the heart rate is currently stored for 2 consecutive measurements exactly 1 second apart. My suggestion is to change "startTimeNanos" and "endTimeNanos" to be the R-R interval instead of exactly 1 second.

{
 "startTimeNanos": "1555034278000000000",
 "endTimeNanos": "1555034278000000000",
 "dataTypeName": "com.google.heart_rate.bpm",
 "value": [
  {
   "fpVal": 85.0,
   "mapVal": []
  }
 ],
 "modifiedTimeMillis": "1555041337275"
},
{
 "startTimeNanos": "1555034279000000000",
 "endTimeNanos": "1555034279000000000",
 "dataTypeName": "com.google.heart_rate.bpm",
 "value": [
  {
   "fpVal": 84.0,
   "mapVal": []
  }
 ],
 "modifiedTimeMillis": "1555041337275"
},

not working in background?

hi there,
I'm not able to have data from the HR sensor when the app is in background (background mode in the app is ok and other sensors are working fine), do you have any insight/suggestion?thanks, Rd

The problem of acquiring abnormal heart rate

{"hr": "157", "mt": 1557898344448}, {"hr": "157", "mt": 1557898345449}, {"hr": "157", "mt": 1557898346448}, {"hr": "157", "mt": 1557898347448}, {"hr": "-7", "mt": 1557898348448}, {"hr": "-14", "mt": 1557898349448}, {"hr": "-21", "mt": 1557898350448}, {"hr": "-28", "mt": 1557898351448}, {"hr": "-35", "mt": 1557898352448}, {"hr": "-42", "mt": 1557898353448}, {"hr": "-49", "mt": 1557898354448}, {"hr": "-56", "mt": 1557898355448}, {"hr": "-63", "mt": 1557898356448}, {"hr": "-70", "mt": 1557898357448}, {"hr": "-77", "mt": 1557898358448}, {"hr": "-84", "mt": 1557898359448}, {"hr": "-91", "mt": 1557898360448}, {"hr": "-98", "mt": 1557898361448}, {"hr": "-105", "mt": 1557898362448}, {"hr": "-112", "mt": 1557898363448}, {"hr": "-119", "mt": 1557898364448}, {"hr": "-126", "mt": 1557898365448}, {"hr": "-133", "mt": 1557898366448}, {"hr": "-140", "mt": 1557898367448}, {"hr": "-147", "mt": 1557898368448}, {"hr": "1", "mt": 1557898369448}, {"hr": "0", "mt": 1557898370448}, {"hr": "1", "mt": 1557898371448}, {"hr": "0", "mt": 1557898372448}, {"hr": "0", "mt": 1557898373448}, {"hr": "1", "mt": 1557898374448}, {"hr": "0", "mt": 1557898375448}, {"hr": "0", "mt": 1557898376448}, {"hr": "0", "mt": 1557898377448}, {"hr": "1", "mt": 1557898378448}, {"hr": "1", "mt": 1557898379448}, {"hr": "1", "mt": 1557898380448}, {"hr": "1", "mt": 1557898381447}, {"hr": "1", "mt": 1557898382448}, {"hr": "0", "mt": 1557898383448}, {"hr": "1", "mt": 1557898384448}, {"hr": "253", "mt": 1557898385448}, {"hr": "337", "mt": 1557898386448}, {"hr": "169", "mt": 1557898387448}, {"hr": "164", "mt": 1557898388448}, {"hr": "164", "mt": 1557898389448}, {"hr": "165", "mt": 1557898390448}, {"hr": "165", "mt": 1557898391448}, {"hr": "166", "mt": 1557898392448}, {"hr": "167"

{"hr": "0", "mt": 1561457454862}, {"hr": "0", "mt": 1561457455862}, {"hr": "0", "mt": 1561457456862}, {"hr": "0", "mt": 1561457457862}, {"hr": "1", "mt": 1561457458860}, {"hr": "1", "mt": 1561457459860}, {"hr": "0", "mt": 1561457460860}, {"hr": "1", "mt": 1561457461860}, {"hr": "1", "mt": 1561457462860}, {"hr": "193", "mt": 1561457463860}, {"hr": "205", "mt": 1561457464860}, {"hr": "217", "mt": 1561457465860}, {"hr": "229", "mt": 1561457466860}, {"hr": "241", "mt": 1561457467860}, {"hr": "253", "mt": 1561457468860}, {"hr": "265", "mt": 1561457469860}, {"hr": "277", "mt": 1561457470860}, {"hr": "289", "mt": 1561457471860}, {"hr": "301", "mt": 1561457472860}, {"hr": "313", "mt": 1561457473860}, {"hr": "325", "mt": 1561457474860}, {"hr": "337", "mt": 1561457475860}, {"hr": "349", "mt": 1561457476860}, {"hr": "181", "mt": 1561457477860}, {"hr": "181", "mt": 1561457478860}, {"hr": "179", "mt": 1561457479860}, {"hr": "179", "mt": 1561457480860}, {"hr": "178", "mt": 1561457481860}, {"hr": "179", "mt": 1561457482860}, {"hr": "179", "mt": 1561457483860}, {"hr": "180", "mt":

Is there any abnormality in heart rate obtained by SDK? From my current data, we can see that there will be some HR over 200, and some HR values are negative. What is the general cause of this? It seems that the data will continue to be superimposed or decreases, for example, the data of the instance is 12.

Swift 5.1 support

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

Receiving ECG microvolts more quickly

Hi,

I am using this command (after preliminaries) to request an ECG stream from a Polar H10.

char-write-req 0x0047 02000001820001010E00

The data is returned in a format like this, which seems to contain 73 samples representing microvolts: 00 a0 7d c8 a5 8c 44 52 08 .....

My problem is that I'm trying to detect the onset of heartbeats in real time. By the time 73 samples are received, the heartbeat has passed. Is it possible to receive this data more quickly, perhaps in smaller batches? I have tried changing the "resolution" and "sample rate" parameter but have not been able to make it work:

char-write-req 0x0047 02000001820001010C00

Thank you for your help.

Swift 5.1.3 Support

I'm unable to use framework in xcode 11.3 project due to the following warning:-

"Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.3 compiler:"

Unable to start PPG streaming on OH1

Running the example app (which by the way crashes on launch as it does not contain the correct privacy key for Bluetooth in its Info.plist) and connecting to an OH1 with it and tapping "toggle ppg" always fails with the following error:

polarBleSdkTestApp[5289:2696653] start ppg error: PolarBleSdk.NotificationNotEnabled

The same thing happens when you try to use the SDK to start PPG streaming as it always fails when invoking api.requestPpgSettings.

There is also no documentation that I could find regarding the possible error codes returned by the SDK. It would be highly useful to document these.

polarblesdk not working with latest xcode/swift updates

hi, I just updated Xcode and I'm having this error message when trying to compile my project:
"Module compiled with Swift 4.2.1 cannot be imported by the Swift 5.0 compiler: /Users/roberdan/Desktop/MirrorHR2.0/PolarBleSdk.framework/Modules/PolarBleSdk.swiftmodule/x86_64.swiftmodule", any help?
thanks a lot, RD

connection issues with android sdk

i have downloaded the android sample application example and tried connecting my H10 sensor to the application, but the application is not able to detect the device properly. can you please guide me on how do i use the example application to connect to the device effectively, can you guys respond to it quickly as i have project submission deadline coming up.

When will new firmware of H10 supporting ECG be ready to be updated?

We are testing the ECG feature of H10. Then we found we should wait for the new firmware. So , when will the new one be ready?

And we find the version of firmware H10 is v1.1.8 now. When we open the Polar Beat, we didn't get the update information. So we cannot update to the latest version v2.1.9. Could recommend some solution for us?

We are in China.
Polar Beat v3.2.0 is downloaded from Apple App Store (China Area).
iOS is 12.2. iPhone 6

Thank you very much

Unable to stream ECG data?

I've downloaded the SDK and installed the iOS example.
I can succesfully 'manually' connect the H10 sensor with the app and retrieve HR readings after changing the deviceId.
However when pressing the "Toggle ECG" i always get the error:

start ecg error: PolarBleSdk.NotificationNotEnabled

By default the api is initialized with the option "Features.allFeatures.rawValue" (default) as well as the "Features.polarSensorStreaming.rawValue" setting.

From my understanding the ECG feature first needs to requested. Which is done by the pressing the toggle ecg button..

Not sure if it's relevant but after connecting these services logged
2019-12-04 14:46:02.920771+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Heart Rate
2019-12-04 14:46:02.920968+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: 181C
2019-12-04 14:46:02.921222+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Device Information
2019-12-04 14:46:02.921448+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: FEA5
2019-12-04 14:46:02.921852+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Battery
2019-12-04 14:46:02.922402+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: FEEE

What am i missing to get the ECG stream working?

Calories burned?

Hello,

I would like to develop a dashboard (say to display on a TV) that show my current heart rate + calories burned in my session.

  1. Is it possible with the SDK?
  2. If I am going to display the information from more than one device, can I use the SDK or have to use OPEN ACCESSLINK API?
  3. In this case can I get realtime access to (current heart rate + calories), something like 1: the doc but via a web hook?

iOS framework with full bitcode support

Hi, I was trying to archive my iOS project which uses the iOS version of the SDK and got the following linker error:

ld: bitcode bundle could not be generated because '/Users/...../project/polar-sdk-ios/PolarBleSdk.framework/PolarBleSdk' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '/Users/...../project/polar-sdk-ios/PolarBleSdk.framework/PolarBleSdk' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

My project builds and runs fine but archiving is a necessary step to publish to App Store. Is there anything I can do to correct this issue? If not, can @erkki-silvola rebuild the iOS framework with full bitcode? Thanks

Timestamps in PolarEcgData Data vs PolarHrData

Hello Polar Team,

I am simultaniously acquiring ECG Data via Stream and HR Data via notifications. I would like them to both use the same timeline (ie timestamp format). However, I cannot figure out the format of polarEcgData.timeStamp. The documentation says it's nanoseconds, but nanoseconds starting from when?

Furthermore, is there any way of getting the time at which the HR data was generated on the sensor. I'd like to do something like PolarHrData.timeStamp.

Thank you and best regards

Cannot get PPI for longer than 20 minutes

Hello,

It is the same issue as exposed here : #34
This issue is closed, but the problem still exists.

We have made a workaround in our application, but it results in having 20s gaps in measurements, which is very annoying...

As much as I know that it is a firmware issue, is it possible to use this one as a follow-up for when it's fixed ?
If not, just close it ;-)

Thank you

Bioimpedance

I see there is a PolarBiozData datatype. Is the H10 capable of measuring bioimpedance?

Cannot enable notification on PMD Data MTU Characteristic

Hi, I'm having trouble executing the "Prerequisite" listed on page 2 of the "Polar Measurement Data Specification for 3rd Party." I'm using gatttool, as shown below. But I cannot enable notification on the PMD Data MTU Characteristic (handle: 0x004a, uuid: fb005c82-02e7-f387-1cad-8acd2d8df0c8). Any help would be truly appreciated. Thanks.

$ gatttool -t random --device=DE:38:8F:EE:D0:08 --interactive --mtu=232

[DE:38:8F:EE:D0:08][LE]> connect
Attempting to connect to DE:38:8F:EE:D0:08
Connection successful
[DE:38:8F:EE:D0:08][LE]> char-write-req 0x0047 0200
Characteristic value was written successfully
[DE:38:8F:EE:D0:08][LE]> mtu 232
MTU was exchanged successfully: 232
[DE:38:8F:EE:D0:08][LE]> char-write-req 0x004a 0100
Error: Characteristic Write Request failed: Attribute can't be written

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.