Aller au contenu principal

Device Integration — Wearables, Bluetooth Devices & Health Stores

This section explains how to integrate health data sources with vitalera — from consumer wearables like Garmin and Fitbit (cloud API) to clinical Bluetooth devices like blood pressure monitors and glucometers (SDK).

Consumer Wearables (API-Based)

Connect popular consumer wearables via server-to-server API integrations. No mobile SDK required for these — users link their accounts once via OAuth, and data flows automatically.

WearableConnectionData TypesLearn More
Garmin (all models)Garmin Health API (OAuth)Workouts, heart rate, sleep, SpO2, stress, steps, HRVGarmin Integration
Fitbit (all models)Fitbit Web API (OAuth)Activity, heart rate, sleep, SpO2, weightContact sales
Apple WatchHealthKit (on-device)Heart rate, SpO2SDK Reference
PolarSDK (Bluetooth)Heart rateSDK Reference

Medical Devices (SDK — Bluetooth)

ProviderModule (Android)Module (iOS)Devices
Omronprovider-omronVitaleraSdkProviderOmronEvolv BPM (HEM-7600T), MC-280B Thermometer
Polarprovider-polarVitaleraSdkProviderPolarH10, Verity Sense (heart rate)
Lifevitprovider-lifevitVitaleraSdkProviderLifevitBPM 160, BPM 260, Pulse Oximeter (OL750), Scale (BL2000), Thermometer (IT45B)
Beurerprovider-beurerVitaleraSdkProviderBeurerBM85 BPM, PO60 Pulse Oximeter
Smart Peak Flowprovider-smart-peak-flowVitaleraSdkProviderSmartPeakFlowSmart Peak Flow Meter
HealthKitN/AVitaleraSdkProviderHealthKitApple Watch (heart rate, SpO2)
Health Connectprovider-health-connectN/AGoogle Health Connect (Android)
Standard BLEsdk-bleVitaleraSdkBleAny device using standard Bluetooth SIG health profiles

See the Supported Devices page for the complete device list.

General Workflow

For all BLE devices, the integration follows three steps:

1. Discover

Scan for nearby BLE devices using DiscoveryFilter to filter by provider, capability, or device name:

// Android (Kotlin)
val filter = DiscoveryFilter(
capabilities = setOf(DeviceCapability.BLOOD_PRESSURE)
)
sdk.devices.discover(filter, timeoutMs = 15_000L).collect { descriptor ->
println("Found: ${descriptor.name} (${descriptor.provider})")
}
// iOS (Swift)
let filter = DiscoveryFilter(
providers: nil,
capabilities: [DeviceCapability.bloodPressure],
namePrefix: nil
)
for try await descriptor in sdk.devices.discover(filter: filter, timeoutMs: 15_000) {
print("Found: \(descriptor.name) (\(descriptor.provider))")
}

2. Connect

Create a device from the discovered descriptor and connect:

// Android
val device = sdk.devices.createDevice(descriptor)
device.connect(timeoutMs = 10_000L)
// iOS
let device = sdk.devices.createDevice(descriptor: descriptor)
try await device.connect(timeoutMs: 10_000)

3. Collect

Read typed observations from the connected device:

// Android
device.collect().collect { observation ->
when (observation) {
is BloodPressureObservation ->
println("BP: ${observation.systolic}/${observation.diastolic}")
is HeartRateObservation ->
println("HR: ${observation.heartRate} bpm")
}
}
device.disconnect()
// iOS
for try await observation in device.collect() {
if let bp = observation as? BloodPressureObservation {
print("BP: \(bp.systolic)/\(bp.diastolic) mmHg")
} else if let hr = observation as? HeartRateObservation {
print("HR: \(hr.heartRate) bpm")
}
}
try await device.disconnect()

Device-Specific Notes

Blood Pressure Monitors

  • Beurer BM85: Ensure the device is charged and turned off before scanning. Turn on the device after scanning starts and wait for Bluetooth discovery.
  • Lifevit BPM 160/260: Turn on the device, then start scanning. Once connected, call read and wait for the observation.
  • Omron Evolv (HEM-7600T): Turn on the device and start scanning. The SDK handles pairing automatically.

Pulse Oximeters

  • Lifevit OL750 / Beurer PO60: Place your finger in the oximeter and turn it on, then start scanning. Data streams continuously until you disconnect.

Thermometers

  • Lifevit IT45B / Omron MC-280B: Turn on the thermometer, start scanning, and take a measurement. The observation is returned after the reading completes.

Scales

  • Lifevit BL2000: Step on the scale when prompted. The weight observation is returned once the reading stabilizes.

Glucometers

  • Contour Next: The device must be pre-paired via system Bluetooth settings before scanning from the SDK.

Heart Rate Sensors

  • Polar H10: Wear the chest strap, start scanning, and the SDK streams heart rate data continuously.

Further Reading