@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
Maintainers
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
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
- ✅ Griptonite - Motherboard
- ✅ Tindeq - Progressor
- ✅ Weiheng - WH-C06
- By default watchAdvertisements isn't supported . For Chrome,
enable it at
chrome://flags/#enable-experimental-web-platform-features
.
- By default watchAdvertisements isn't supported . For Chrome,
enable it at
- ✅ Kilter Board
- ✅ Entralpi / Lefu Scale
- ✅ PitchSix Force Board
- ➡️ Climbro
- ➡️ Smartboard Climbing - mySmartBoard
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:
- @CassimLadha for sharing insights on reading the Motherboards data.
- @donaldharvey for a valuable example on connecting to the Motherboard.
- @ecstrema for providing examples on how to play games with the Entralpi.
- Tindeq for providing an open Progressor API.
- @StuartLittlefair for his PyTindeq implementation.
- @Phil9l for his research and providing a blog on how to connect with the Kilter Board.
- @1-max-1 for the docs on his Kilter Board simulator that I coverted to hangtime-arduino-kilterboard.
- @sebws for a code sample of the Weiheng WH-C06 App.
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