Simple test

Ensure your device works with this simple test.

examples/ble_heart_rate_simpletest.py
 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
14
15from adafruit_ble_heart_rate import HeartRateService
16
17# PyLint can't find BLERadio for some reason so special case it here.
18ble = adafruit_ble.BLERadio()
19
20hr_connection = None
21
22while True:
23    print("Scanning...")
24    for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5):
25        if HeartRateService in adv.services:
26            print("found a HeartRateService advertisement")
27            hr_connection = ble.connect(adv)
28            print("Connected")
29            break
30
31    # Stop scanning whether or not we are connected.
32    ble.stop_scan()
33    print("Stopped scan")
34
35    if hr_connection and hr_connection.connected:
36        print("Fetch connection")
37        if DeviceInfoService in hr_connection:
38            dis = hr_connection[DeviceInfoService]
39            try:
40                manufacturer = dis.manufacturer
41            except AttributeError:
42                manufacturer = "(Manufacturer Not specified)"
43            try:
44                model_number = dis.model_number
45            except AttributeError:
46                model_number = "(Model number not specified)"
47            print("Device:", manufacturer, model_number)
48        else:
49            print("No device information")
50        hr_service = hr_connection[HeartRateService]
51        print("Location:", hr_service.location)
52        while hr_connection.connected:
53            print(hr_service.measurement_values)
54            time.sleep(1)