adds strokes per minute to ftms bike via cadence value

This commit is contained in:
Lars Berning 2021-04-15 21:29:35 +02:00
parent 2f93a6a390
commit 6fcf649d65
3 changed files with 9 additions and 8 deletions

View File

@ -58,10 +58,10 @@ export default class IndoorBikeDataCharacteristic extends bleno.Characteristic {
if (this._updateValueCallback) {
const bufferBuilder = new BufferBuilder()
// Field flags as defined in the Bluetooth Documentation
// Instantaneous speed (default), Total Distance (4), Instantaneous Power (6)
// Total / Expended Energy (8), Heart Rate (9), Elapsed Time (11)
// 01010000
bufferBuilder.writeUInt8(0x50)
// Instantaneous speed (default), Instantaneous Cadence (2), Total Distance (4),
// Instantaneous Power (6), Total / Expended Energy (8), Heart Rate (9), Elapsed Time (11)
// 01010100
bufferBuilder.writeUInt8(0x54)
// 00001011
bufferBuilder.writeUInt8(0x0B)
@ -69,6 +69,8 @@ export default class IndoorBikeDataCharacteristic extends bleno.Characteristic {
// for some of the data types
// Instantaneous Speed in km/h
bufferBuilder.writeUInt16LE(data.speed * 100)
// Instantaneous Cadence in rotations per minute (we use this to communicate the strokes per minute)
bufferBuilder.writeUInt16LE(data.strokesPerMinute * 2)
// Total Distance in meters
bufferBuilder.writeUInt24LE(data.distanceTotal)
// Instantaneous Power in watts

View File

@ -23,13 +23,13 @@ export default class IndoorBikeDataCharacteristic extends bleno.Characteristic {
onReadRequest (offset, callback) {
// see https://www.bluetooth.com/specifications/specs/fitness-machine-service-1-0 for details
// Fitness Machine Features for the IndoorBikeDataCharacteristic
// Total Distance Supported (2), Expended Energy Supported (9),
// Cadence Supported (1), Total Distance Supported (2), Expended Energy Supported (9),
// Heart Rate Measurement Supported (10), Elapsed Time Supported (12), Power Measurement Supported (14)
// 00000100 01010110
// 00000110 01010110
// Target Setting Features for the IndoorBikeDataCharacteristic
// none
// 0000000 0000000
const features = [0x04, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
const features = [0x06, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
log.debug('Features of Indoor Bike requested')
callback(this.RESULT_SUCCESS, features.slice(offset, features.length))
}

View File

@ -5,7 +5,6 @@ This is the very minimalistic Backlog for further development of this project.
## Soon
* monitor battery level of heart rate monitor and show hint if battery is low
* deliver strokes per minute in the simulated FTMS bike as Cadence
* add an update script to simplify the migration to new versions
* validate FTMS with more training applications and harden implementation (i.e. Holofit and Coxswain)
* record a longer rowing session and analyze two encountered problems: 1) rarely the stroke rate doubles for a short duration (might be a problem with stroke detection when measurements are imprecise), 2) in one occasion the measured power jumped to a very high value after a break (40000 watts)