JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q43156F
  • License MIT

A TypeScript library for managing multiple Bluetooth heart rate monitor devices

Package Exports

  • multidevice-bluetooth-heart-rate-monitor
  • multidevice-bluetooth-heart-rate-monitor/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (multidevice-bluetooth-heart-rate-monitor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Multidevice Bluetooth Heart Rate Monitor

A TypeScript library for managing multiple Bluetooth heart rate monitor devices simultaneously.

Documentation: Documentation

This package is based on the following:

Features

  • Connect to multiple Bluetooth heart rate monitors
  • Real-time heart rate data streaming
  • Battery level monitoring (if supported by the device)
  • Automatic reconnection to known devices
  • Event-based architecture for easy integration

Installation

npm install multidevice-bluetooth-heart-rate-monitor

Usage

Here's a basic example of how to use the library:

import {
  MultiDeviceBluetoothHeartRateMonitor,
  BluetoothHeartRateDevice,
  DeviceData,
} from "multidevice-bluetooth-heart-rate-monitor";

const monitor = new MultiDeviceBluetoothHeartRateMonitor();

monitor.on("data", (data: DeviceData) => {
  console.log(`Heart rate for device ${data.deviceId}: ${data.heartRate}`);
});

monitor.on("deviceDiscovered", async (device: BluetoothHeartRateDevice) => {
  console.log(`New device discovered: ${device.getDeviceInfo().deviceId}`);
});

monitor.on("deviceConnected", (device: BluetoothHeartRateDevice) => {
  console.log(`Device connected: ${device.getDeviceInfo().deviceId}`);
});

monitor.on("deviceDisconnected", (device: BluetoothHeartRateDevice) => {
  console.log(`Device disconnected: ${device.getDeviceInfo().deviceId}`);
});

monitor.on("adapterStateChange", (state: string) => {
  console.log(`Bluetooth adapter state changed: ${state}`);
});

monitor.startScanning();

const discoveredDevicesSonar = async () => {
  setInterval(async () => {
    const discoveredDevices = monitor.getDiscoveredDevices();
    discoveredDevices.forEach((device) => {
      console.log(
        `Pending connection device: ${device.getDeviceInfo().deviceId} (${
          device.getDeviceInfo().deviceName
        })`
      );
      // try {
      //   console.log("connecting to device...");
      //   await monitor.connectDevice(device);
      // } catch (error) {
      //   console.error(error);
      // }
    });
  }, 3000);
};

discoveredDevicesSonar();

API Reference

MultiDeviceBluetoothHeartRateMonitor

The main class for managing multiple heart rate monitor devices.

Methods

  • startScanning(): Start scanning for Bluetooth heart rate monitors.
  • stopScanning(): Stop scanning for devices.
  • getDiscoveredDevices(): Get an array of currently discovered devices.
  • getConnectedDevices(): Get an array of currently connected devices.
  • connectDevice(DeviceData): Connect a discovered device.

Events

  • 'deviceDiscovered': Emitted when a new device is discovered.
  • 'data': Emitted when heart rate data is received from a device.
  • 'deviceConnected': Emitted when a known device is reconnected.
  • 'deviceDisconnected': Emitted when a known device is reconnected.
  • 'scanStart': Emitted when scanning starts.
  • 'scanStop': Emitted when scanning stops.
  • 'error': Emitted when an error occurs.
  • 'adapterReady': Emitted when the bluetooth adapter is ready.

BluetoothHeartRateDevice

Represents a single Bluetooth heart rate monitor device.

Methods

  • getDeviceInfo(): Get information about the device.
  • disconnect(): Disconnect from the device.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.