Simple test¶
Ensure your device works with this simple test.
1# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
2# SPDX-License-Identifier: MIT
3
4"""
5Read heart rate data from a heart rate peripheral using the standard BLE
6Heart Rate service.
7"""
8
9import time
10
11import adafruit_ble
12from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
13from adafruit_ble.services.standard.device_info import DeviceInfoService
14from adafruit_ble_heart_rate import HeartRateService
15
16# PyLint can't find BLERadio for some reason so special case it here.
17ble = adafruit_ble.BLERadio() # pylint: disable=no-member
18
19hr_connection = None
20
21while True:
22 print("Scanning...")
23 for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5):
24 if HeartRateService in adv.services:
25 print("found a HeartRateService advertisement")
26 hr_connection = ble.connect(adv)
27 print("Connected")
28 break
29
30 # Stop scanning whether or not we are connected.
31 ble.stop_scan()
32 print("Stopped scan")
33
34 if hr_connection and hr_connection.connected:
35 print("Fetch connection")
36 if DeviceInfoService in hr_connection:
37 dis = hr_connection[DeviceInfoService]
38 try:
39 manufacturer = dis.manufacturer
40 except AttributeError:
41 manufacturer = "(Manufacturer Not specified)"
42 try:
43 model_number = dis.model_number
44 except AttributeError:
45 model_number = "(Model number not specified)"
46 print("Device:", manufacturer, model_number)
47 else:
48 print("No device information")
49 hr_service = hr_connection[HeartRateService]
50 print("Location:", hr_service.location)
51 while hr_connection.connected:
52 print(hr_service.measurement_values)
53 time.sleep(1)