Skip to content

Latest commit

 

History

History
165 lines (126 loc) · 7.27 KB

README.md

File metadata and controls

165 lines (126 loc) · 7.27 KB

Grip Connect

Force-Sensing Climbing Training

The objective of this project is to create a Web Bluetooth API client that can establish connections with various Force-Sensing Hangboards / Dynamometers / Plates / LED system boards used by climbers. Examples of such tools include the Griptonite Motherboard, Tindeq Progressor, PitchSix Force Board, Weiheng WH-C06, Entralpi, Climbro, or mySmartBoard

And LED system boards from Aurora Climbing like the Kilter Board, Tension Board, Grasshopper Board, Decoy Board, Touchstone Board and So iLL Board.

Learn more: Documentation - Browser Support

This project is provided "as-is" without any express or implied warranties. By using this software, you assume all risks associated with its use, including but not limited to hardware damage, data loss, or any other issues that may arise. The developers and contributors are not responsible for any harm or loss incurred. Use this software at your own discretion and responsibility.

Try it out

Chart - Flappy Bird - Kilter Board

Force-Sensing Climbing Devices

Install

This project can be found in the NPM package registry.

$ npm install @hangtime/grip-connect

Example usage (with a Motherboard)

Simply importing the device you need from @hangtime/grip-connect.

<button id="motherboard" type="button">Connect Motherboard</button>
import { Motherboard } from "@hangtime/grip-connect"

// Initiate device
const motherboard = new Motherboard()

// Optional: Custom data handler
motherboard.notify((data) => {
  // { massTotal: "0", massMax: "0", massAverage: "0", massLeft: "0", massCenter: "0", massRight: "0" }
  console.log(data)
})

// Optional: Check if the device is active
motherboard.active(
  (isActive) => {
    console.log(isActive)
  },
  // Optionally using a weight threshold and duration
  { threshold: 2.5, duration: 1000 },
)

document.querySelector("#motherboard").addEventListener("click", async () => {
  // Connect to device
  await motherboard.connect(
    async () => {
      // Example: Read device specific data
      const batteryLevel = await motherboard.battery()
      console.log(batteryLevel)

      // LEDs: "green", "red", "orange", or no argument to turn off
      // await motherboard.led("red")
      // await motherboard.led()

      // Start weight streaming (for 30s) remove parameter for a continues stream
      await motherboard.stream(30000)

      // Manualy tare the device when the stream is running
      // await motherboard.tare(5000)

      // Manually call stop method if stream is continues
      // await motherboard.stop()

      // Download data as CSV, JSON, or XML (default: CSV) format => timestamp, frame, battery, samples, masses
      // motherboard.download('json')

      // Optionally disconnect from device after we are done
      motherboard.disconnect(Motherboard)
    },
    (error) => {
      // Optinal custom error handeling
      console.error(error.message)
    },
  )
})

Device support

Features

All devices provide some default features such as connect, isConnected, and disconnect. Additionally, each device offers specific features—refer to the documentation for more details on individual devices. There are also extra features that are not part of the device itself, like a reactive isActive check and a download feature.

Help wanted: Do you own any of the missing devices? Use Google Chrome's Bluetooth Internals chrome://bluetooth-internals/#devices and press Start Scan to look for your device, click on Inspect and share all available services with us.

Development

git clone https://github.com/Stevie-Ray/hangtime-grip-connect
cd hangtime-grip-connect
npm install

Credits

A special thank you to:

Disclaimer

THIS SOFTWARE IS NOT OFFICIALLY SUPPORTED, SUPPLIED OR MAINTAINED BY THE DEVICE MANUFACTURER. BY USING THE SOFTWARE YOU ARE ACKNOWLEDGING THIS AND UNDERSTAND THAT USING THIS SOFTWARE WILL INVALIDATE THE MANUFACTURERS WARRANTY.

License

BSD 2-Clause © Stevie-Ray Hartog