An Android application that connects to R50 rowing machines via Bluetooth and enables integration with fitness apps like Zwift, TrainerRoad, and others.
- Bluetooth Connection: Connects to R50 rowing machines via Bluetooth Low Energy
- FTMS Support: Acts as a Bluetooth LE rowing machine for fitness apps (Zwift, TrainerRoad, etc.)
- MQTT Publishing: Optional data publishing to MQTT brokers
- Session Recording: Save and export rowing sessions as FIT files
- Real-time Data: Displays live rowing metrics including:
- Elapsed time
- Stroke count and rate (SPM)
- Distance
- Power output
- Calories burned
- Heart rate
- Resistance level
The app now supports FTMS, allowing it to work as a Bluetooth LE rowing machine that can be discovered and used by fitness applications:
- Compatible Apps: Zwift, TrainerRoad, Kinomap, MyWhoosh, and other FTMS-supporting apps
- Real-time Broadcasting: All rowing metrics are broadcast in standard FTMS format
- Multiple Connections: Can connect to multiple fitness apps simultaneously
- Standard Compliance: Follows official FTMS specification for rowing machines
See FTMS_GUIDE.md for detailed setup and usage instructions.
- Device MAC Address: Enter your R50 rowing machine's Bluetooth MAC address, or use the scan feature to discover nearby devices
- FTMS (Recommended): Enable FTMS service to use with fitness apps like Zwift
- MQTT (Optional): Configure MQTT broker settings if you want to publish data to external systems
The app requires the following Android permissions:
BLUETOOTH- Basic Bluetooth accessBLUETOOTH_ADMIN- Bluetooth administrationBLUETOOTH_CONNECT- Connect to Bluetooth devices (Android 12+)BLUETOOTH_SCAN- Scan for Bluetooth devices (Android 12+)BLUETOOTH_ADVERTISE- Advertise as BLE device (Android 12+)ACCESS_FINE_LOCATION- Required for Bluetooth scanningINTERNET- For MQTT connectivityACCESS_NETWORK_STATE- Network state monitoringWAKE_LOCK- Keep device awake during workouts
- Verify the correct MAC address for your rowing machine
- Ensure the rowing machine is powered on and in pairing mode
- Check Bluetooth permissions are granted
- Try clearing the app's Bluetooth cache in Android settings
- Verify the MQTT broker URL and credentials
- Check network connectivity
- Ensure MQTT is enabled in the app settings
- Open the project in Android Studio
- Sync Gradle dependencies
- Build and run on an Android device (API level 24+)
MainActivity.kt- Main application logic and UIRowingData.kt- Data structure for rowing metrics
- Jetpack Compose for UI
- Eclipse Paho for MQTT
- Android Bluetooth APIs
- Gson for JSON serialization
This project is open source. Please ensure compliance with any applicable rowing machine manufacturer APIs and protocols.