All Projects → laberning → openrowingmonitor

laberning / openrowingmonitor

Licence: GPL-3.0 license
A free and open source performance monitor for rowing machines

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects
HTML
75241 projects

Projects that are alternatives of or similar to openrowingmonitor

cfbscrapR
A scraping and aggregating package using the CollegeFootballData API
Stars: ✭ 25 (-13.79%)
Mutual labels:  sports, sports-stats, sports-data, sports-analytics
boxball
Prebuilt Docker images with Retrosheet's complete baseball history data for many analytical frameworks. Includes Postgres, cstore_fdw, MySQL, SQLite, Clickhouse, Drill, Parquet, and CSV.
Stars: ✭ 79 (+172.41%)
Mutual labels:  sports, sports-stats, sports-data
NBA-Machine-Learning-Sports-Betting
NBA sports betting using machine learning
Stars: ✭ 150 (+417.24%)
Mutual labels:  sports, sports-data, sports-analytics
flask-react-d3-celery
A full-stack dockerized web application to visualize Formula 1 race statistics from 2016 to present, with a Python Flask server and a React front-end with d3.js as data visualization tool.
Stars: ✭ 20 (-31.03%)
Mutual labels:  sports, sports-stats, sports-data
mysportsfeeds-api
Feature requests for the MySportsFeeds Sports Data API.
Stars: ✭ 44 (+51.72%)
Mutual labels:  sports, sports-stats, sports-data
public sport science datasets
An ongoing compilation of publicly available datasets for sport science projects.
Stars: ✭ 24 (-17.24%)
Mutual labels:  sports-data, sports-analytics
football analytics
⚽📊 A collection of football analytics projects, data, and analysis by Edd Webster (@eddwebster), including a curated list of publicly available resources published by the football analytics community.
Stars: ✭ 405 (+1296.55%)
Mutual labels:  sports-stats, sports-analytics
sports.py
A simple Python package to gather live sports scores
Stars: ✭ 51 (+75.86%)
Mutual labels:  sports, sports-stats
mysportsfeeds-node
NodeJS wrapper for the MySportsFeeds Sports Data API
Stars: ✭ 62 (+113.79%)
Mutual labels:  sports-stats, sports-data
replay-table
A javascript library for visualizing sport season results with interactive standings
Stars: ✭ 67 (+131.03%)
Mutual labels:  sports, sports-stats
scoreboard
CRG Derby Scoreboard
Stars: ✭ 83 (+186.21%)
Mutual labels:  sports, sports-data
sport-stats
Sport stats UI components
Stars: ✭ 62 (+113.79%)
Mutual labels:  sports, sports-data
mysportsfeeds-r
R wrapper functions for the MySportsFeeds Sports Data API
Stars: ✭ 27 (-6.9%)
Mutual labels:  sports-stats, sports-data
mysportsfeeds-python
Python wrapper for the MySportsFeeds Sports Data API
Stars: ✭ 77 (+165.52%)
Mutual labels:  sports-stats, sports-data
retrosheet
Project to parse retrosheet baseball data in python
Stars: ✭ 19 (-34.48%)
Mutual labels:  sports, sports-analytics
scrapeOP
A python package for scraping oddsportal.com
Stars: ✭ 99 (+241.38%)
Mutual labels:  sports, sports-data
sportyR
R package for drawing regulation playing surfaces for several sports
Stars: ✭ 84 (+189.66%)
Mutual labels:  sports-data, sports-analytics
React-NBA-Logos
React components for NBA team logos 🏀
Stars: ✭ 50 (+72.41%)
Mutual labels:  sports
opentrack-cg
Repository for OpenTrack Community Group
Stars: ✭ 21 (-27.59%)
Mutual labels:  sports
Runaway
update your wechat sports
Stars: ✭ 22 (-24.14%)
Mutual labels:  sports

Open Rowing Monitor

Node.js CI CodeQL pages-build-deployment

A free and open source performance monitor for rowing machines. It upgrades a rowing machine into a smart trainer that can be used with training applications and games.

Open Rowing Monitor is a Node.js application that runs on a Raspberry Pi and measures the rotation of the rower's flywheel (or similar) to calculate rowing specific metrics, such as power, split time, speed, stroke rate, distance and calories.

It is currently developed and tested with a Sportstech WRX700 water-rower. But it should run fine with any rowing machine that uses some kind of damping mechanism, as long as you can add something to measure the speed of the flywheel. It should also work well with DIY rowing machines like the Openergo.

Features

The following items describe most of the current features, more functionality will be added in the future, check the Development Roadmap if you are curious.

Rowing Metrics

Open Rowing Monitor implements a physics model to simulate the typical metrics of a rowing boat based on the pull on the handle. The physics model can be tuned to the specifics of a rower by changing some model parameters.

  • Stroke detection
  • Power (watts)
  • Split time (/500m)
  • Strokes per Minute
  • Calories used (kcal)
  • Training Duration
  • Heart Rate (supports BLE and ANT+ heart rate monitors, ANT+ requires an ANT+ USB stick)

Web Interface

The web interface visualizes the rowing metrics on any device that can run a web browser (i.e. a smartphone that you attach to your rowing machine while training). It uses web sockets to show the rowing status in realtime. It can also be used to reset the training metrics and to select the BLE Rower.

If you connect a screen to the Raspberry Pi, then this interface can also be directly shown on the device. The installation script can set up a web browser in kiosk mode that runs on the Raspberry Pi.


Bluetooth Low Energy (BLE)

Open Rowing Monitor also implements different Bluetooth Low Energy (BLE) protocols so you can use your rowing machine with different fitness applications.

Fitness Machine Service (FTMS) is a standardized GATT protocol for different types of fitness machines. Open Rowing Monitor currently supports the type FTMS Rower and simulates the type FTMS Indoor Bike.

FTMS Rower: This is the FTMS profile for rowing machines and supports all rowing specific metrics (such as stroke rate). So far not many training applications for this profile exist, but the market is evolving. I've successfully tested it with EXR, MyHomeFit and Kinomap.

FTMS Indoor Bike: This FTMS profile is used by Smart Bike Trainers and widely adopted by training applications for bike training. It does not support rowing specific metrics. But it can present metrics such as power and distance to the biking application and use cadence for stroke rate. So why not use your virtual rowing bike to row up a mountain in Zwift, Bkool, The Sufferfest or similar :-)

Concept2 PM: Open Rowing Monitor also implements part of the Concept2 PM Bluetooth Smart Communication Interface Definition. This is still work in progress and only implements the most common parts of the spec, so it will not work with all applications that support C2 rowing machines. It currently works with all the samples from The Erg Arcade, i.e. you can row in the clouds. This also works very well with EXR.

Export of Training Sessions

Open Rowing Monitor can create Training Center XML files (TCX). You can upload these files to training platforms like Strava, Garmin Connect or Trainingpeaks to track your training sessions.

Uploading your sessions to Strava is an integrated feature, for all other platforms this is currently a manual step. The installer can set up a network share that contains all training data so it is easy to grab the files from there and upload them to the training platform of your choice.

Open Rowing Monitor can also store the raw measurements of the flywheel into CSV files. These files are great to start your own exploration of your rowing style and also to learn about the specifics of your rowing machine (some Excel files that can help with this are included in the docs folder).

Installation

You will need a Raspberry Pi Zero W, Raspberry Pi Zero 2 W, Raspberry Pi 3 or a Raspberry Pi 4 with a fresh installation of Raspberry Pi OS Lite for this. Connect to the device with SSH and initiate the following command to install Open Rowing Monitor as an automatically starting system service:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/laberning/openrowingmonitor/HEAD/install/install.sh)"

Also have a look at the Detailed Installation Instructions for more information on the software installation and for instructions on how to connect the rowing machine.

How it all started

I originally started this project, because my rowing machine (Sportstech WRX700) has a very simple computer and I wanted to build something with a clean interface that calculates more realistic metrics. Also, this was a good reason to learn a bit more about Bluetooth and all its specifics.

The original proof of concept version started as a sketch on an Arduino, but when I started adding things like a web frontend and BLE I moved it to the much more powerful Raspberry Pi. Maybe using a Raspberry Pi for this small IoT-project is a bit of an overkill, but it has the capacity for further features such as syncing training data or rowing games. And it has USB-Ports that I can use to charge my phone while rowing :-)

Further information

This project is already in a very usable stage, but some things are still a bit rough on the edges.

Feel free to leave a message in the GitHub Discussions if you have any questions or ideas related to this project.

Check the advanced information on the Physics behind Open Rowing Monitor.

I plan to add more features, here is the Development Roadmap. Contributions are welcome, please read the Contributing Guidelines first.

This project uses some great work by others, see the Attribution here.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].