A modern web-based controller for the Kingsmith WalkingPad treadmill using the Web Bluetooth API. This is a complete React rewrite of the original QWalkingPad desktop application.
- 🔗 Web Bluetooth Connection - Connect to your WalkingPad directly from your browser
- 🔄 Auto-Reconnect - Automatically reconnects when connection is lost
- 📊 Real-time Statistics - Live speed, time, distance, and step count
- 🎚️ Precision Speed Control - Set speed in 0.1 km/h increments (not possible with the official app!)
- 🔄 Mode Switching - Easy switching between Sleep, Manual, and Auto modes
- ⚙️ Device Settings - Configure sensitivity, auto-start, max speed, and units
- 📱 Responsive Design - Works on desktop and mobile devices
- 🎨 Modern UI - Beautiful dark theme with glassmorphism and smooth animations
Visit the hosted version at: [Coming Soon]
# Clone the repository
git clone https://github.com/YOUR_USERNAME/AI-WalkingPad.git
cd AI-WalkingPad
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in Chrome, Edge, or Opera.
# Build the production bundle
npm run build
# Preview the production build
npm run preview| Browser | Support |
|---|---|
| Chrome (Desktop/Android) | ✅ Full support |
| Edge | ✅ Full support |
| Opera | ✅ Full support |
| Firefox | ❌ No Web Bluetooth |
| Safari (macOS/iOS) | ❌ No Web Bluetooth |
Note: Web Bluetooth requires a secure context (HTTPS or localhost).
- Connect - Click "Connect via Bluetooth" and select your WalkingPad device
- Control Speed - Use the slider or +/- buttons to adjust speed
- Start/Stop - Use the Start/Stop button to control the belt
- Change Mode - Switch between Sleep, Manual, and Auto modes
- Configure - Adjust settings like sensitivity and max speed
The app includes automatic reconnection functionality:
- Toggle auto-reconnect on/off from the connection screen or header
- When enabled, the app will attempt to reconnect up to 5 times if connection is lost
- Uses exponential backoff between reconnection attempts
- Settings are persisted in localStorage
This app implements the WalkingPad BLE (Bluetooth Low Energy) protocol:
Service UUID: 0xFE00
- Read Characteristic (
0xFE01): Status notifications from the device - Write Characteristic (
0xFE02): Commands to the device
Protocol Details:
- Status polling every 750ms
- Binary message format with checksum validation
- Supports speed, mode, and parameter configuration
For detailed protocol documentation, see the protocol.js source file.
src/
├── components/
│ ├── ConnectionScreen/ # Landing page with Bluetooth connect
│ ├── Header/ # Navigation bar with disconnect
│ ├── StatusDisplay/ # Real-time stats display
│ ├── SpeedControl/ # Speed slider and buttons
│ ├── ModeSelector/ # Sleep/Manual/Auto toggle
│ └── Settings/ # Device configuration
├── hooks/
│ └── useWalkingPad.js # Custom hook for BLE connection
├── utils/
│ └── protocol.js # WalkingPad BLE protocol
├── App.jsx # Main application
├── App.css # App layout styles
├── index.css # Global design system
└── main.jsx # React entry point
- React 18 - UI framework
- Vite - Build tool and dev server
- Web Bluetooth API - Device communication
- CSS Variables - Theming and design tokens
- LocalStorage - Persisting user preferences
- Original QWalkingPad by Dorian Rudolph
- Protocol research from ph4-walkingpad
- This React rewrite was created with AI assistance
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request