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
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)