npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@hangtime/grip-connect

v0.5.9

Published

Griptonite Motherboard, Tindeq Progressor, PitchSix Force Board, WHC-06, Entralpi, Climbro, mySmartBoard: Web Bluetooth API Force-Sensing strength analysis for climbers

Downloads

864

Readme

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