Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V12 won't connect Kickr Core on bluetooth #11

Closed
Fukkie-S opened this issue Nov 29, 2024 · 57 comments
Closed

V12 won't connect Kickr Core on bluetooth #11

Fukkie-S opened this issue Nov 29, 2024 · 57 comments

Comments

@Fukkie-S
Copy link

Hi Jörgen,

As you mentioned to open an issue on Github, here is my loaded V12 program and the serial monitor output (after reset). Hope you can find why SIM32 won't connect Kickr anymore. I tried V11 and this version fix my Kickr immidiately.

And sorry for my English, my 4y education on the lower technical school is 45 year ago :-)

Best regards

Jan-Willem

@Fukkie-S
Copy link
Author

Fukkie-S commented Nov 29, 2024

/*********************************************************************
 This is programming code for ESP32 Espressif Wroom boards
 
      Tested with Adafruit Feather ESP32 V2 a.k.a. Huzzah
 
 The code uses heavily the supplied ESP32 NimBLE libraries !!          
      see: https://github.com/h2zero/NimBLE-Arduino
 Many have invested time and resources providing open source code!
 
        MIT license, check LICENSE for more information
        All text must be included in any redistribution
*********************************************************************/


/* -----------------------------------------------------------------------------------------------------
 *             This code should work with all indoor cycling trainers that fully support,
 *              Wahoo Kickr, Cycling Power Service and Cycling Speed & Cadence Service
 * ------------------------------------------------------------------------------------------------------
 *
 *  The code links a BLE Server (a peripheral to Zwift) and a BLE Client (a central to the Trainer) with a bridge 
 *  in between, the ESP32 being man-in-the-middle (MITM). The ESP32 is an integral part of the Simcline,
 *  that interprets the exchanged road grade and moves the front wheel up and down with the change in inclination.
 *  The ESP32-bridge can control, filter and alter the bi-directional interchanged data!
 *  The client-side (central) scans and connects with the trainer relevant services: CPS + Wahoo and CSC (optional). 
 *  It collects all cyling data of the services and passes these on to the server-side....  
 *  The client-side supplies the indoor trainer with target and resistance control data.
 *  The server-side (peripheral) advertises and enables connection with cycling apps like Zwift and collects the app's  
 *  control commands, target and resistance data. It passes these on to the client-side....  
 *  The server-side supplies the app with the generated cycling data in return. 
 *  
 *  The client plus server (MITM) are transparent to the Wahoo trainer as well as to the training app Zwift or alike!
 *  
 *  Requirements: Zwift app or alike, operational Simcline and a Wahoo Kickr trainer
 *  0) Upload and Run this code on the Simcline (i.c. ESP32 board)
 *  1) Start the Serial Monitor to catch debugging info and check the Oled display
 *  2) The code will do basic testing of mechanical parts and sensors
 *  3) Start/Power On the indoor trainer  
 *  4) Simcline and trainer (with <name>) will pair as reported in the output
 *  5) Start Zwift on your computer or tablet and wait....
 *  6) Search on the Zwift pairing screens for the Simcline a.k.a. <SIM32>
 *  7) Pair: Power, Cadence and Controllable one after another with <SIM32>
 *  8) Optionally one can pair as well devices for heartrate and/or steering (Sterzo)
 *  9) Start the default Zwift ride or any ride you wish
 * 10) Make Serial Monitor output window visible on top of the Zwift window 
 * 11) Hop on the bike: do the work and feel resistance change with the road
 * 12) Inspect the info presented by Serial Monitor.....
 *  
 *  This device is identified with the name <SIM32>. You will see this only when connecting to Zwift on the 
 *  pairing screens! Notice: Zwift extends device names with additional numbers for identification!
 *  
 */
 
/*
Version 1.0
Changed Stack Depth values from 2048 to 4096 for Server Control Point Indicate (modified) and Write w Response
Version 1.1
Inserted check (boolean) on Control Point Write-Response out of synch...
Version 1.2
Changed device identification naming to a simpler scheme: SIM32 or SIM52 instead of <SIM DevName>
Server Characteristic values (read only) are now updated when a new client connection is established
NimBLE registerForNotify() has been deprecated and is replaced with subscribe() / unsubscribe()
*/

// -------------------------------------------------------------------------------------------
// COMPILER DIRECTIVE to allow/suppress DEBUG messages that help debugging...
// Uncomment general "#define DEBUG" to activate
#define DEBUG
// Include these debug utility macros in all cases!
#include "DebugUtils.h"
#ifdef DEBUG
//  Restrict activating one or more of the following DEBUG directives --> process intensive 
//  The overhead can lead to spurious side effects and a loss of quality of service handling!!
//#define DEBUG_CP_MEASUREMENT    // If defined allows for parsing and decoding the Cycling Power Data
//#define DEBUG_CSC_MEASUREMENT   // If defined allows for parsing and decoding the Cycling Speed and Cadence Data
//#define DEBUG_WAHOO_CONTROLPOINT_RESPONSE     // If defined allows for parsing the Data
//#define DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA  // If defined allows for parsing and decoding Data
//#define MOVEMENTDEBUG 
#endif
// --------------------------------------------------------------------------------------------
#ifndef ADAFRUIT_FEATHER_ESP32_V2
#define ADAFRUIT_FEATHER_ESP32_V2
#endif

// Exponential EMA ALPHA filter definition
// Used to filter sequence of actuator target positions --> minimize consecutive small up/down movements
// Should be between low (10-40) is maximal and high (50-90) is minimal filtering
// Uncomment "#define EMA_ALPHA" to activate
//#define EMA_ALPHA 60    // Value is in percentage 0-99. 

#define 	BLE_APPEARANCE_GENERIC_CYCLING   1152

#include <NimBLEDevice.h>
// We need this for setting the Server-side Generic Access Char's --> Appearance and DeviceName
#include <nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h>

#define THISDEVICENAME "SIM32" // Shortname 

const uint8_t MAX_PAYLOAD = 20; // Max 20 byte data size for single packet BLE transfer

// Struct containing Device info to administer dis/connected devices
typedef struct
{
  uint8_t PeerAddress[6];
  std::string PeerName;
  uint16_t conn_handle;
  bool IsConnected;
} Device_info_t;
// -----------------------------------------------------------------
// Your hardware MAC/DEVICE ADDRESSES
// Laptop/Desktop Device Address that runs Zwift, in printed format: [00:01:02:03:04:05]
// NimBLE demands you to enter addresses here in Little Endian format (reversed order)
#define LAPTOPADDRESS {0xbc,0xa0,0xec,0x7b,0x57,0xd0} // Little Endian format!!
// Trainer Wahoo Device Address, in printed format: [00:01:02:03:04:05]
#define TRAINERADDRESS {0xcf,0xc4,0x8c,0x1a,0x39,0xe5} // Little Endian format!!
// -----------------------------------------------------------------
// Initialize connectable device registration
Device_info_t Trainer    = {TRAINERADDRESS, "MyTrainer", BLE_HS_CONN_HANDLE_NONE, false};
Device_info_t Laptop     = { LAPTOPADDRESS, "MyLaptop" , BLE_HS_CONN_HANDLE_NONE, false};
Device_info_t Smartphone = {        {0x00}, "MyPhone"  , BLE_HS_CONN_HANDLE_NONE, false};
// ----------------------------------------------------------------------------------

// Client Generic Access --------------------------------------------------------------
#define UUID16_SVC_GENERIC_ACCESS                             BLEUUID((uint16_t)0x1800)
#define UUID16_CHR_DEVICE_NAME                                BLEUUID((uint16_t)0x2A00)
#define UUID16_CHR_APPEARANCE                                 BLEUUID((uint16_t)0x2A01)
#define UUID16_CHR_PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS BLEUUID((uint16_t)0x2A04)
#define UUID16_CHR_CENTRAL_ADDRESS_RESOLUTION                 BLEUUID((uint16_t)0x2AA6)
BLERemoteService* pRemote_GenericAccess_Service;
BLERemoteCharacteristic* pRemote_GA_Appearance_Chr; // Read
uint16_t client_GA_Appearance_Value = BLE_APPEARANCE_GENERIC_CYCLING;  // Default decimal: 1152 -> Generic Cycling
BLERemoteCharacteristic* pRemote_GA_DeviceName_Chr;// Read, Write
std::string client_GA_DeviceName_Str = THISDEVICENAME;

// Client Service Device Information --------------------------------------------------
#define UUID16_SVC_DEVICE_INFORMATION                         BLEUUID((uint16_t)0x180A)
#define UUID16_CHR_MODEL_NUMBER_STRING                        BLEUUID((uint16_t)0x2A24)
#define UUID16_CHR_SERIAL_NUMBER_STRING                       BLEUUID((uint16_t)0x2A25)
#define UUID16_CHR_MANUFACTURER_NAME_STRING                   BLEUUID((uint16_t)0x2A29)
/*
#define UUID16_CHR_FIRMWARE_REVISION_STRING                   BLEUUID((uint16_t)0x2A26)
#define UUID16_CHR_HARDWARE_REVISION_STRING                   BLEUUID((uint16_t)0x2A27)
#define UUID16_CHR_SOFTWARE_REVISION_STRING                   BLEUUID((uint16_t)0x2A28)
*/
BLERemoteService*  pRemote_DeviceInformation_Service; 
BLERemoteCharacteristic* pRemote_DIS_ManufacturerName_Chr;   // Read
std::string client_DIS_Manufacturer_Str;
BLERemoteCharacteristic* pRemote_DIS_ModelNumber_Chr;       // Read
std::string client_DIS_ModelNumber_Str;
BLERemoteCharacteristic* pRemote_DIS_SerialNumber_Chr;      // Read
std::string client_DIS_SerialNumber_Str;
// -------------------------------------------------------------------------------------
BLEService *server_DeviceInformation_Service;
BLECharacteristic *server_DIS_ModelNumber_Chr;       // Read
BLECharacteristic *server_DIS_SerialNumber_Chr;      // Read
BLECharacteristic *server_DIS_ManufacturerName_Chr;  // Read
/*
BLECharacteristic *server_DIS_Firmware_Chr;          // Read
std::string client_DIS_Firmware_Str = "12345";
BLECharacteristic *server_DIS_Hardware_Chr;          // Read
std::string client_DIS_Hardware_Str = "12345";
BLECharacteristic *server_DIS_Software_Chr;          // Read
std::string client_DIS_Software_Str = "12345";
*/
//--------------------------------------------------------------------------------------

/* NORDIC UART SERVICE a.k.a. NUS
 * NUS Service: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
 * NUS RXD    : 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
 * NUS TXD    : 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
 */
BLEUUID UUID_NUS_SERVICE("6E400001-B5A3-F393-E0A9-E50E24DCCA9E");
BLEUUID UUID_NUS_CHR_RXD("6E400002-B5A3-F393-E0A9-E50E24DCCA9E");
BLEUUID UUID_NUS_CHR_TXD("6E400003-B5A3-F393-E0A9-E50E24DCCA9E");
BLEService *server_NordicUart_Service; 
BLECharacteristic *server_NUS_Rxd_Chr;        // Write No Response (Receiving Data)
BLECharacteristic *server_NUS_Txd_Chr;        // Read Notify (Sending Data)

/* Cycling Power Service ---------------------------------------------------------------
 * CP Service: 0x1818  
 * CP Characteristic: 0x2A63 (Measurement)    Mandatory
 * CP Characteristic: 0x2A65 (Feature)        Mandatory
 * CP Characteristic: 0x2A5D (Location)       Optional
 * CP Characteristic: 0x2A66 (Control Point)  Optional
 */
#define UUID16_SVC_CYCLING_POWER                              BLEUUID((uint16_t)0x1818)
#define UUID16_CHR_CYCLING_POWER_MEASUREMENT                  BLEUUID((uint16_t)0x2A63)
//#define UUID16_CHR_CYCLING_POWER_VECTOR                       BLEUUID((uint16_t)0x2A64)
#define UUID16_CHR_CYCLING_POWER_FEATURE                      BLEUUID((uint16_t)0x2A65)
//#define UUID16_CHR_CYCLING_POWER_CONTROL_POINT                BLEUUID((uint16_t)0x2A66)
#define UUID16_CHR_SENSOR_LOCATION                            BLEUUID((uint16_t)0x2A5D) // shared with CSC
BLERemoteService*        pRemote_CyclingPower_Service;
BLERemoteCharacteristic* pRemote_CP_Measurement_Chr;    // Notify, Read
BLERemoteCharacteristic* pRemote_CP_Feature_Chr;        // Read
uint32_t client_CP_Feature_Flags = 0;
BLERemoteCharacteristic* pRemote_CP_Location_Chr;       // Read
uint8_t client_CP_Location_Value = {0x0C};                    //          --> rear wheel !
BLERemoteCharacteristic* pRemote_CP_ControlPoint_Chr;   // Indicate, Write
/* ---------------------------------------------------------------------------------------------------------------
 * Wahoo Proprietary Control Point Characteristic
 * ---------------------------------------------------------------------------------------------------------------*/
// Proprietary Wahoo Trainer Control Point Characteristic is part of the Cycling Power Service !
static BLEUUID UUID16_CHR_WAHOO_CONTROL_POINT("A026E005-0A7D-4AB3-97FA-F1500F9FEB8B");
static BLERemoteCharacteristic* pRemote_Wahoo_ControlPoint_Chr; //  Wahoo Control Point, optional, write & indicate
bool client_Wahoo_ControlPoint_Response = true;                 //  CP Write-Response synch test
// -------------------------------------- SERVER -------------------------------------------------
BLEService        *server_CyclingPower_Service;
BLECharacteristic *server_CP_Measurement_Chr; //                          Notify, Read
BLECharacteristic *server_CP_Feature_Chr; //                              Read
BLECharacteristic *server_CP_Location_Chr; //                             Read
//BLECharacteristic *server_CP_ControlPoint_Chr; //                       Indicate, Write
// Proprietary Wahoo Trainer Control Point Characteristic is part of the Cycling Power Service !
BLECharacteristic *server_Wahoo_ControlPoint_Chr; //  Fitness Machine Control Point, optional, write & indicate
// ---------------------------------------------------------------------------------------

const uint8_t client_CP_Feature_Len = 20; // Num. of Feature elements
const char* client_CP_Feature_Str[client_CP_Feature_Len] = { 
      "Pedal power balance supported",
      "Accumulated torque supported",
      "Wheel revolution data supported",
      "Crank revolution data supported",
      "Extreme magnitudes supported",
      "Extreme angles supported",
      "Top/bottom dead angle supported",
      "Accumulated energy supported",
      "Offset compensation indicator supported",
      "Offset compensation supported",
      "Cycling power measurement characteristic content masking supported",
      "Multiple sensor locations supported",
      "Crank length adj. supported",
      "Chain length adj. supported",
      "Chain weight adj. supported",
      "Span length adj. supported",
      "Sensor measurement context",
      "Instantaineous measurement direction supported",
      "Factory calibrated date supported",
      "Enhanced offset compensation supported" };
      
const char* client_Sensor_Location_Str[] = { "Other", "Top of shoe", "In shoe", "Hip", 
    "Front wheel", "Left crank", "Right crank", "Left pedal", "Right pedal", "Front hub", 
    "Rear dropout", "Chainstay", "Rear wheel", "Rear hub", "Chest", "Spider", "Chain ring"};

/*---------------------------------------------------------------------------------------
 * Cycling Speed and Cadence Service
 * CSC Service:   0x1816 
 * CSC Measurement Characteristic:  0x2A5B
 * CSC Feature Characteristic:      0x2A5C  
 */
#define UUID16_SVC_CYCLING_SPEED_AND_CADENCE                  BLEUUID((uint16_t)0x1816)
//#define UUID16_CHR_CSC_CONTROL_POINT                          BLEUUID((uint16_t)0x2A55)
#define UUID16_CHR_CSC_MEASUREMENT                            BLEUUID((uint16_t)0x2A5B)
#define UUID16_CHR_CSC_FEATURE                                BLEUUID((uint16_t)0x2A5C)
//#define UUID16_CHR_SENSOR_LOCATION                            BLEUUID((uint16_t)0x2A5D) // shared with CP
BLERemoteService*        pRemote_CyclingSpeedCadence_Service;
BLERemoteCharacteristic* pRemote_CSC_Measurement_Chr;         // Notify, Read
BLERemoteCharacteristic* pRemote_CSC_Feature_Chr;             // Read
const uint8_t CSC_FEATURE_FIXED_DATALEN = 2; // UINT16
uint16_t client_CSC_Feature_Flags = 0;
const uint8_t client_CSC_Feature_Len = 3;
const char* client_CSC_Feature_Str[client_CSC_Feature_Len] = {"Wheel rev supported", "Crank rev supported", "Multiple locations supported"};
BLERemoteCharacteristic* pRemote_CSC_Location_Chr;             // Read
uint8_t client_CSC_Location_Value = {0x0C};                    // Default --> rear wheel !
// ---------------------------------------------------------------------------------------
BLEService        *server_CyclingSpeedCadence_Service;  
BLECharacteristic *server_CSC_Measurement_Chr;               //     Notify, Read
BLECharacteristic *server_CSC_Feature_Chr;                   //     Read
BLECharacteristic *server_CSC_Location_Chr;                  //     Read
// ---------------------------------------------------------------------------------------

/**
 * Wahoo Trainer Proprietary Control Point opcodes in decimal 
 * 
 * LSO: uint8 Op Code
 * MSO: 0..18 octets Parameters
 */
const uint8_t unlock                     = 32;
const uint8_t setResistanceMode          = 64;
const uint8_t setStandardMode            = 65;
const uint8_t setErgMode                 = 66;
const uint8_t setSimMode                 = 67;
const uint8_t setSimCRR                  = 68;
const uint8_t setSimWindResistance       = 69;
const uint8_t setSimGrade                = 70;
const uint8_t setSimWindSpeed            = 71;
const uint8_t setWheelCircumference      = 72;
const uint8_t unlockCommand[3]           = {unlock, 0xEE, 0xFC}; // Unlock codes

uint8_t client_HR_Location_Value= { 0x01 }; // Chest
// --------------------------------------------------------------------------------------
BLEService *server_HeartRate_Service;
BLECharacteristic *server_HR_Measurement_Chr;  // Notify Write
BLECharacteristic *server_HR_Location_Chr;     // Read
// --------------------------------------------------------------------------------------

/** 
 * The Wahoo Proprietary Control Point data type structure 
 * 
 */
const uint8_t WAHOO_CONTROL_POINT_DATALEN = 19; // Control point consists of 1 opcode (byte) and maximum 18 bytes as parameters
// This wahoocp_data_t structure represents the control point data. The first octet represents the opcode of the request
// followed by a parameter array of maximum 18 octects
typedef struct __attribute__( ( packed ) )
{
  uint8_t OPCODE;
  uint8_t OCTETS[(WAHOO_CONTROL_POINT_DATALEN-1)];
} wahoocp_data_t;

typedef union // The union type automatically maps the bytes member array to the wahoocp_data_t structure member values
{
  wahoocp_data_t values;
  uint8_t bytes[WAHOO_CONTROL_POINT_DATALEN];
} wahoocp_data_ut;

// Fitness Machine Control Point Data variable
wahoocp_data_ut server_Wahoo_Control_Point_Data;

// Wahoo Control Point: Response Buffers
const uint8_t WahooRespConfirm = 0x01; // Ok!
const uint8_t WahooRespUnknown = 0x02; // Unknown OpCode
const uint8_t WahooResponseCode= 0x00; // To be set later to the correct value
uint8_t WahooRespConfirmBuffer[2] = {WahooRespConfirm, WahooResponseCode};
uint8_t WahooRespUnknownBuffer[2] = {WahooRespUnknown, WahooResponseCode};


// Global variables for decoding of Control Point: INDOOR RESISTANCE PARAMETERS
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA 
float weight = 0;           // Rider weight in kg
float rrc = 0;              // Rolling Resistance Coefficient
float wrc = 0;              // Wind Resistance Coefficient
#endif
float grade = 0;            // percentage, resolution 0.01

// ----------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------
BLEClient* pClient_Wahoo = nullptr;
BLEAdvertisedDevice* myDevice = nullptr;
BLEScan* pBLEScan = nullptr;
BLEServer* pServer = nullptr;
NimBLEAdvertising *pAdvertising = nullptr;
TaskHandle_t TaskWriteWithResponseHandle = NULL;

// These variables are handled in loop() to start sort of Callback functions
boolean doClientConnectCall = false;
boolean RestartScanningOnDisconnect = false;
boolean DoCallClientEnable = false;
boolean DoCallClientDisable = false;

// Values used to enable or disable notifications/indications
const uint8_t notificationOff[] = {0x0, 0x0};
const uint8_t notificationOn[] = {0x1, 0x0};
const uint8_t indicationOff[] = {0x0, 0x0};
const uint8_t indicationOn[] = {0x2, 0x0};
const bool indications = false;  //false as first argument to subscribe to indications instead of notifications
const bool notifications = true; //true as first argument to subscribe to notifications
// ---------------------------------------------------------------------------------------
// Libraries for use of I2C devices (Oled and VL6180X distance sensor)
#include <SPI.h>
#include <Wire.h>
// Necessary libraries for use of Oled display(s)
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Additional splash screen bitmap and icon(s) for Oled
#include "Adafruit_SSD1306_Icons.h" // needs to be in the SAME (!) directory
// Declarations for an SSD1306 128x64 display connected to I2C (SDA, SCL pins)
#define SCREEN_WIDTH 128            // SSD1306-OLED display width, in pixels
#define SCREEN_HEIGHT 64            // SSD1306-OLED display height, in pixels
#define OLED_RESET -1               // No reset pin on this OLED display
#define OLED_I2C_ADDRESS 0x3C       // I2C Address of OLED display
// Declare the display
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Declare Global var for OLED Display selection 1 (Cycling data) or 2 (Road Grade)
uint8_t OledDisplaySelection = 2; // default Road Grade to show

// LittleFS for internal storage of persistent data on the ESP32
#include <LittleFS.h>
using namespace fs;
// Managing persistence of some data with LittleFS system
// PeRSistent Data is written to a file with the name: PRS_FILENAME
#define PRS_FILENAME "/prsdata.txt"
// Minimum(!) Read and Write block sizes
#define LITTLEFS_BLOCK_SIZE 128
#define FORMAT_LITTLEFS_IF_FAILED true
// LittleFS--------------------------------------------------------------


//----------- Global variable definitions for high level movement control -----------------------------------------------
// In theory the RawgradeValue varies between 0 (equals -200% grade) and 40000 (equals +200% grade)
// SIMCLINE is mechanically working between -10% and +20% --> 19000 and 22000

//------------------------------------------------- WARNING --------------------------------------------------------------
//------------ SET THESE TWO VALUES IN ACCORDANCE WITH THE MECHANICAL RANGE LIMITATIONS OF YOUR SIMCLINE !!! -------------
// Raw Grade Value Minimally (Mechanically: the lowest position of wheel axis)  19000 is equiv. of 10% downhill road grade
#define RGVMIN 19500 // -5%  // Always is RGVMIN < 20000 (flat road level)
// Raw Grade Value Maximally (Mechanically: the highest position of wheel axis) 22000 is equiv. of 20% uphill road grade
#define RGVMAX 22000 // 20%  // +20% // Always is RGVMAX > 20000 (flat road level)
//------------------------------------------------- WARNING --------------------------------------------------------------

// Correction for measuring plane difference and midth wheel axis position (1 cm offset is an MEASUREOFFSET of about 40)
#define MEASUREOFFSET 50 // about 1.25 cm
// Raw Grade Value Minimally (Mechanically: the lowest position of wheel axis)  19000 is equiv. of 10% downhill road grade
// These values are derived from the above RGVMIN and RGVMAX settings
#define RGVMIN_GRADE (20000-RGVMIN)/100 // Notice: positive value of the Minimal downhill grade! 
#define RGVMAX_GRADE (RGVMAX-20000)/100 // Notice: positive value of the Maximal uphill grade!
// Besides what is mechanically possible there are also limits in what is physically pleasant
// Keep the following aRGVMin and aRGVMax values within the limits of the mechanically feasible values of above !!!
// DEFAULT Minimally Allowed Raw Grade Value that should not be exceeded: -5%! -> Descent grade Limit
int aRGVmin = 19500;
// DEFAULT Maximally Allowed Raw Grade Value that should not be exceeded: 15%! -> Ascent grade limit
int aRGVmax = 21500;
// Value for a flat road equals 0% grade or a RGV of 20000; result needs to be corrected for the measure offset
long RawgradeValue = (20000 - MEASUREOFFSET);
int GradeChangeFactor = 100; // 100% means no effect, 50% means only halved up/down steps--> Road Grade Change Factor
// The Grade Percentage of a road is defined as a measure of the road's steepness as it rises and falls along its route
float gradePercentValue = 0;
//-----------------------------------------------------------------

/* ------------------------------------------------------------------------------------------------
 * Warning I/O Pins can have identical board position but different I/O Pin declarations for 
 * connection with the pins of the Motor driver board
 * ADAFRUIT_FEATHER_ESP32_V2 is nearly pin compatible with ARDUINO_NRF52840_FEATHER
*/
#ifdef ADAFRUIT_FEATHER_ESP32_V2
#define actuatorOutPin1 A0   // --> A0/P0.02 connected to pin IN2 of the DRV8871 Motor Driver board
#define actuatorOutPin2 A1   // --> A1/P0.03 connected to pin IN1 of the DRV8871 Motor Driver board
#endif

// -------------------------- WARNING ------------------------------------------------------------
// The following VL6180X sensor values are a 100% construction specific and
// should be experimentally determined, when the Actuator AND the VL6180X sensor are mounted!
// ------>>>> Test manually and use example/test sketches that go with the VL6180X sensor! <<<<---
// Microswitches should limit physically/mechanically the upper and lower position of the Actuator!
// The microswitches are mechanically controlled, and NOT by the software --> should be fail safe!
// Notice that unrestricted movement at the boundaries can damage the Actuator and/or construction!
// The following values are respected by the software and will (in normal cases!) never be exceeded!
#define MINPOSITION 35 // 265 // VL6180X highest value top microswitch activated to mechanically stop operation
#define MAXPOSITION 315 // 535 // VL6180X lowest value bottom microswitch activated to mechanically stop operation

// -------------------------- WARNING ------------------------------------------------------------
// Operational boundaries of the VL6180X sensor are used/set in class Lifter after calling its "init".
// A safe measuring range of at least 30 cm of total movement is recommended for the VL6180X sensor setting!
//
// Bandwidth is used in the code to take measuring errors and a safe margin into account when reaching
// the above defined max or min positions of the construction! The software does painstakingly respect
// these and is independent of the appropriate working of the microswitches when reaching the boundaries!
// These microswitches are a SECOND line of defence against out of range and potentially damaging movement!
#define BANDWIDTH 4

// Library code for low level measuring (VL6180X) and controlling UP and down movement
#include <Lifter.h> 
// Decalaration of Lifter Class for control of the low level up/down movement
Lifter lift;
// Global variables for Lifter position control --> RawGradeValue has been defined/set previously to flat road level!!
int16_t TargetPosition = map(RawgradeValue, RGVMIN, RGVMAX, MAXPOSITION, MINPOSITION);
bool IsBasicMotorFunctions = false; // Mechanical motor functions
// -------------- xControlUpDownMovement task definitions --------------------------
SemaphoreHandle_t xSemaphore = NULL;
TaskHandle_t ControlTaskHandle = NULL;
// Set Arduino IDE Tools Menu --> Events Run On: "Core 1"
// Set Arduino IDE Tools Menu --> Arduino Runs On: "Core 1"
// Run xControlUpDownMovement on "Core 0"
const BaseType_t xControlCoreID = 0;
void xControlUpDownMovement(void *arg);
// ---------------------------------------------------------------------------------
// Client Connect and Disconnect callbacks defined
class client_Connection_Callbacks:public BLEClientCallbacks {
  void onConnect(BLEClient* pClient);
  void onDisconnect(BLEClient* pClient);
  bool onConnParamsUpdateRequest(BLEClient* pClient, ble_gap_upd_params *params);
  };
// Server Connect and Disconnect callbacks defined
class server_Connection_Callbacks:public BLEServerCallbacks {
  void onConnect(BLEServer* pServer, ble_gap_conn_desc* desc);
  void onDisconnect(BLEServer* pServer, ble_gap_conn_desc* desc);
  void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc);
};
// Handler class for Server Multi Characteristic action(s) defined
class CharacteristicCallbacks:public NimBLECharacteristicCallbacks {
/*  We only define onSubscribe !!!
    void onRead(NimBLECharacteristic* pCharacteristic);
    void onWrite(NimBLECharacteristic* pCharacteristic);
    void onNotify(NimBLECharacteristic* pCharacteristic);    
    void onStatus(NimBLECharacteristic* pCharacteristic, Status status, int code);
*/    
    void onSubscribe(NimBLECharacteristic* pCharacteristic, ble_gap_conn_desc* desc, uint16_t subValue);
};    
// Define CharacteristicCallbacks instance(s) globally to use for multiple Server Characteristics 
static CharacteristicCallbacks server_Multi_Chr_Callbacks;

bool getPRSdata(void);
void setPRSdata(void);
void ConvertMacAddress(char *fullAddress, uint8_t addr[6], bool NativeFormat);
#ifdef EMA_ALPHA
int16_t EMA_TargetPositionFilter(int16_t current_value);
#endif
void ShowIconsOnTopBar(void);
void ShowOnOledLarge(const char* Line1, const char* Line2, const char* Line3, uint16_t Pause);
void ShowSlopeTriangleOnOled(void);
void SetManualGradePercentValue(void);
void SetNewRawGradeValue(float RoadGrade);
void SetNewActuatorPosition(void);

void server_setupGA(void);
void server_setupDIS(void);
void server_setupNUS(void);
void server_setupCSC(void);
void server_setupCPS(void);
void server_startADV(void);
void client_Start_Scanning(void);
bool client_Connect_Callback(void);
// ---------------------------------------------------------------------------------

void setup() {
#ifdef DEBUG
  Serial.begin(115200);
  while (!Serial) delay(10); 
  Serial.flush();
  delay(1000); // Give Serial I/O time to settle
#endif
/* The Feather ESP32 V2 has a NEOPIXEL_I2C_POWER pin that must be pulled HIGH
 * to enable power to the STEMMA QT port. Without it, the QT port will not work!
 */
#ifdef ADAFRUIT_FEATHER_ESP32_V2
  // Turn on the I2C power on Stemma connector by pulling pin HIGH.
  pinMode(NEOPIXEL_I2C_POWER, OUTPUT);
  digitalWrite(NEOPIXEL_I2C_POWER, HIGH);
#endif
  DEBUG_PRINTLN("");
  DEBUG_PRINTLN("ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)");
  DEBUG_PRINTLN("------------------------ Version 01.2 --------------------------");
  DEBUG_PRINTLN(THISDEVICENAME);
  delay(200);
  // LittleFS start the Littlefilesystem lib and see if we have persistent data ----
  // This opens LittleFS with a root subdirectory /littlefs/
  LittleFS.begin();
  // WARNING --------- Uncomment only when strictly necessary!!! ---------
  // Uncomment only the very first time the Simcline code is executed!!!
  /* This creates LittleFS with a root subdirectory /littlefs/
  LittleFS.format();
  DEBUG_PRINTLN("Wipe out all persistent data, including any file(s)....");
  */
  // Get or set (first time only) the values of relevant and crucial variables
  // to persistence, whith the Companion App the user can set these on the fly!
  // Get or set the values of aRGVmax, aRGVmin, GradeChangeFactor in PRSdata.
  if (!getPRSdata()) {
    setPRSdata();
  }
  // LittleFS------------------------------------------------------------------------
  
  // Start the show for the Oled display
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_I2C_ADDRESS)) {
    DEBUG_PRINTLN(F("SSD1306 OLED display allocation failed!"));
  } else {
    DEBUG_PRINTLN(F("SSD1306 OLED display is running..."));
    // Load Oled with initial display buffer contents on the screen,
    // the SSD1306 library initializes with a Adafruit splash screen,
    // (respect or edit the splash.h in the library).
    display.display(); // Acknowledge Adafruit rights, license and efforts
    delay(500); // show some time
  }
  // Ready to show our own SIMCLINE splash screen
  display.clearDisplay(); // clean the oled screen
  display.setTextColor(SSD1306_WHITE);
  display.drawBitmap(24, 0, Mountain_bw_79x64, 79, 64, 1);
  display.display();
  delay(2000); // Take somewhat more time.....
  //Show Name and SW version on Oled
  ShowOnOledLarge("SIMCLINE", "Wahoo", "v01.0", 500);
  // Initialize Lifter Class data, variables, test and set to work !
  lift.Init(actuatorOutPin1, actuatorOutPin2, MINPOSITION, MAXPOSITION, BANDWIDTH);
  // Test Actuator and VL8106X for proper functioning
  ShowOnOledLarge("Testing", "Up & Down", "Functions", 100);
  if (!lift.TestBasicMotorFunctions()) {
    ShowOnOledLarge("Testing", "Functions", "Failed!", 500);
    IsBasicMotorFunctions = false; // Not working properly
    DEBUG_PRINTLN("Simcline >> ERROR << Basic Motor Funtions are NOT working!!");
  } else {
    ShowOnOledLarge("Testing", "Functions", "Done!", 500);
    // Is working properly --> Start Motor Control Task
    xSemaphore = xSemaphoreCreateBinary();
    xTaskCreatePinnedToCore(xControlUpDownMovement, "xControlUpDownMovement", 4096, NULL, 10, &ControlTaskHandle, xControlCoreID);
    xSemaphoreGive(xSemaphore);
    DEBUG_PRINTLN("Motor Control Task Created and Active!");        
    IsBasicMotorFunctions = true;
    DEBUG_PRINTLN("Simcline Basic Motor Funtions are working!!");
    // Put Simcline in neutral: flat road position
#ifdef EMA_ALPHA
    // Init EMA filter at first call with flat road position as reference
    TargetPosition = EMA_TargetPositionFilter(TargetPosition); 
#endif
    SetNewActuatorPosition();
  }
  // Initialize NimBLE with maximum connections as Peripheral = 1, Central = 1
  BLEDevice::init(THISDEVICENAME); // Shortname    
  // Start the Server-side now!
  pServer = BLEDevice::createServer();
  //Setup callbacks onConnect and onDisconnect
  pServer->setCallbacks(new server_Connection_Callbacks());
  // Set server auto-restart advertise on
  pServer->advertiseOnDisconnect(true);  
  // Server setup
  DEBUG_PRINTLN("Configuring the default Generic Access Service");
  server_setupGA();
  DEBUG_PRINTLN("Configuring the Server Nordic Uart Service");  
  server_setupNUS();
  DEBUG_PRINTLN("Configuring the Server Device Information Service");
  server_setupDIS();
  DEBUG_PRINTLN("Configuring the Server Cycle Power Service");
  server_setupCPS();
  DEBUG_PRINTLN("Configuring the Server Cadence and Speed Service");  
  server_setupCSC();
  DEBUG_PRINTLN("Setting up the Server advertising payload(s)");
  server_startADV();
  //BLEDevice::stopAdvertising(); 
  DEBUG_PRINTLN("Server is advertising: CPS + Wahoo");    
    
  // Start the Client-side!
  client_Start_Scanning();
  while(pBLEScan->isScanning()) ; // Wait until scanning is finished
  if(doClientConnectCall) {
    doClientConnectCall = false;
    bool dummy = client_Connect_Callback();
  }
  if(!Trainer.IsConnected) {
    DEBUG_PRINTLN(">>> Failed to connect Trainer! Reset ESP32 and try again!");
    while(1) {delay(100);}
  }
  //BLEDevice::startAdvertising(); 
  //DEBUG_PRINTLN("Server is advertising: CPS + Wahoo"); 
} // End of setup.

// LittleFS --------------------------------------------------
bool getPRSdata(void) { // aRGVmax, aRGVmin, GradeChangeFactor -> PRSdata
  if (LittleFS.exists(PRS_FILENAME)) {
    File file = LittleFS.open(PRS_FILENAME, FILE_READ);
    if (file) {    
      uint32_t readLen;
      uint8_t buffer[LITTLEFS_BLOCK_SIZE+1] = { 0 };
      readLen = file.read(buffer, LITTLEFS_BLOCK_SIZE);
      buffer[readLen] = 0; // set the values to the pointed by variables
      sscanf((char*)buffer, "%d %d %d %d", &aRGVmax, &aRGVmin, &GradeChangeFactor, &OledDisplaySelection);
      DEBUG_PRINT(F("ESP32 internally Got persistent storage from: /littlefs/PRSdata -> "));
      DEBUG_PRINTF("Max: %d Min: %d Perc.: %d Displ.: %d\n", aRGVmax, aRGVmin, GradeChangeFactor, OledDisplaySelection);
      file.close();
      return true;
    }    
  }
  return false;
}

void setPRSdata(void) { // aRGVmax, aRGVmin, GradeChangeFactor -> PRSdata
  uint8_t buffer[LITTLEFS_BLOCK_SIZE+1] = { 0 };
  File file = LittleFS.open(PRS_FILENAME, FILE_WRITE);
  if (file) {
      sprintf((char*)buffer, "%d %d %d %d", aRGVmax, aRGVmin, GradeChangeFactor, OledDisplaySelection);
      file.write(buffer, LITTLEFS_BLOCK_SIZE);
      file.close();
      DEBUG_PRINT(F("ESP32 internally Set new values in persistent storage to: /littlefs/PRSdata -> "));
      DEBUG_PRINTLN((char*)buffer);
  }
}
// LittleFS --------------------------------------------------

void ConvertMacAddress(char *fullAddress, uint8_t addr[6], bool NativeFormat)
{ // Display byte by byte in HEX 
  if(NativeFormat) { // Unaltered: in Little Endian machine-representation
    sprintf(fullAddress, "%02X:%02X:%02X:%02X:%02X:%02X", addr[0], addr[1], addr[2], \
      addr[3], addr[4], addr[5], HEX);   
  } else { // Altered: In reversed order
    sprintf(fullAddress, "%02X:%02X:%02X:%02X:%02X:%02X", addr[5], addr[4], addr[3], \
      addr[2], addr[1], addr[0], HEX);       
  }
};

void ShowIconsOnTopBar(void) {
  // Show Icons on Top Bar
  if (Trainer.IsConnected) { // show icon
    display.drawBitmap(112, 0, power_icon16x16, 16, 16, 1);
  }
  if (Laptop.IsConnected) { // show icon
    display.drawBitmap(0, 0, zwift_icon16x16, 16, 16, 1);
  }
  if (Smartphone.IsConnected) { // show icon Phone
    display.drawBitmap(0, 0, mobile_icon16x16, 16, 16, 1);
  }
}

void ShowOnOledLarge(const char* Line1, const char* Line2, const char* Line3, uint16_t Pause) {
  // Clear and set Oled to display 3 line info -> centered
  int pos = 1;
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  // ShowIconsOnTopBar();
  display.setTextSize(2);  // Large characters 11 pixels wide
  if (Line1) {
    pos = round( (127 - (12 * strlen(Line1))) / 2 );
    display.setCursor(pos, 2); // 16
    display.print(Line1);
  }
  if (Line2) {
    pos = round( (127 - (12 * strlen(Line2))) / 2 );
    display.setCursor(pos, 22); // 16
    display.print(Line2);
  }
  if (Line3) {
    pos = round( (127 - (12 * strlen(Line3))) / 2 );
    display.setCursor(pos, 44); // 16
    display.print(Line3);
  }
  display.display();
  delay(Pause);  // Pause indicated time in ms
}

void ShowSlopeTriangleOnOled(void) {
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  ShowIconsOnTopBar();
  display.setCursor(102, 10); //26
  display.setTextSize(2);
  display.print(F("%"));
  char tmp[7];
  dtostrf(gradePercentValue, 5, 1, tmp); // show sign only if negative
  display.setCursor(10, 6); // 22
  display.setTextSize(3);
  display.print(tmp);
  // The following calculations give more "weight" to lower grade values
  // (like: 1.2% or 0.5%), these will occur more often in practice and are not well
  // displayable at 128*64! --> 64 * 64 = 4096 and this value should not be
  // exceeded (4096/20) = 204.8
  int pos = 64 - int(sqrt(abs(204 * gradePercentValue))); // cast to int to get rid of decimals only now!
  if (gradePercentValue > 0) {
    display.fillTriangle( 1, 63, 127, 63, 127, pos, SSD1306_INVERSE);
  } else {
    display.fillTriangle( 127, 63, 1, 63, 0, pos, SSD1306_INVERSE);
  }
  // Draw the baseline to smooth small decimal values and show flat road case
  display.drawFastHLine(1, 63, 127, SSD1306_WHITE);
  display.display();
} 
// ---------------------------------------------------------------------------------


// ---------------------------------------------------------------------------------
#ifdef EMA_ALPHA
int16_t EMA_TargetPositionFilter(int16_t current_value) {
  static int16_t exponential_average = current_value;

  exponential_average = int16_t( (EMA_ALPHA * (uint32_t)current_value + (100 - EMA_ALPHA) * (uint32_t)exponential_average) / 100 );
  return exponential_average;
}
#endif

void SetManualGradePercentValue(void) 
{
  gradePercentValue = float( (RawgradeValue - 20000 + MEASUREOFFSET) )/100;
  SetNewActuatorPosition();
}

void SetNewRawGradeValue(float RoadGrade)
{
        // ----- Recalculate to relevant values for this project ------
        // Take into account the allowed Increase Percentage of the inclination
        // 100% has no effect, 50% means every increase or decrease is divided by 2
        // --> the increase or decrease of inclination is in 50% smaller steps...
        gradePercentValue = RoadGrade;
        RawgradeValue = (long)(RoadGrade*100) + 20000;
        RawgradeValue = 20000 + long((RawgradeValue - 20000) * GradeChangeFactor / 100);
        // in steps of 0.01% and with an offset of -200%
        // gradeValue     gradePercentValue
        //     0                 -200%
        //  19000                 -10%
        //  20000                   0%
        //  22000                 +20%
        //  40000                +200%
        // -------------------------------------
        // Take into account the measuring offset
        RawgradeValue = RawgradeValue - MEASUREOFFSET;
        // Test for Maximally en Minimally Allowed Raw Grade Values ----------------------------------------
        if (RawgradeValue < aRGVmin) {
          RawgradeValue = aRGVmin;  // Do not allow lower values than aRGVmin !!
        }
        if (RawgradeValue > aRGVmax) {
          RawgradeValue = aRGVmax;  // Do not allow values to exceed aRGVmax !!
        }
        // --------------------------------------------------------------------------------------------------
        DEBUG_PRINTF("Set Simcline to Percentage: %02.1f %% RawgradeValue: %05d \n", gradePercentValue, RawgradeValue);
}

void SetNewActuatorPosition(void) {
  // Handle mechanical movement i.e. wheel position in accordance with Road Inclination
  // Map RawgradeValue ranging from 0 to 40.000 on the
  // TargetPosition (between MINPOSITION and MAXPOSITION) of the Lifter
  // Notice 22000 is equivalent to +20% incline and 19000 to -10% incline
  RawgradeValue = constrain(RawgradeValue, RGVMIN, RGVMAX); // Keep values within the safe range
  TargetPosition = map(RawgradeValue, RGVMIN, RGVMAX, MAXPOSITION, MINPOSITION);
  // EMA filter for smoothing quickly fluctuating Target Position values see: Zwift Titan Grove
#ifdef EMA_ALPHA
  TargetPosition = EMA_TargetPositionFilter(TargetPosition);
#endif
  if(IsBasicMotorFunctions) {  
    xSemaphoreTake(xSemaphore, portMAX_DELAY); 
    lift.SetTargetPosition(TargetPosition);
    xSemaphoreGive(xSemaphore);
#ifdef MOVEMENTDEBUG
    DEBUG_PRINTF("RawgradeValue: %05d Grade percent: %03.1f%% ", RawgradeValue, gradePercentValue);
    DEBUG_PRINTF("TargetPosition: %03d\n", TargetPosition, DEC);
#endif
  }  
}

void xControlUpDownMovement(void *arg) {
  // Check "continuously" the Actuator Position and move Motor Up/Down until target position is reached
  int OnOffsetAction = 0;
  const TickType_t xDelay = 110 / portTICK_PERIOD_MS; // Block for 110ms < 10Hz sample rate of VL6180X  
  while(1) {
    if(xSemaphoreTake(xSemaphore, portMAX_DELAY)) {
        // BLE channels can interrupt and consequently target position changes on-the-fly !!
        // We do not want changes in TargetPosition during one of the following actions!!!
        OnOffsetAction = lift.GetOffsetPosition(); // calculate offset to target and determine action
        switch (OnOffsetAction)
            {
              case 0 :
                lift.brakeActuator();
                #ifdef MOVEMENTDEBUG
                DEBUG_PRINTLN(F(" -> Brake"));
                #endif
                break;
              case 1 :
                lift.moveActuatorUp();
                #ifdef MOVEMENTDEBUG
                DEBUG_PRINTLN(F(" -> Upward"));
                #endif
                break;
              case 2 :
                lift.moveActuatorDown();
                #ifdef MOVEMENTDEBUG
                DEBUG_PRINTLN(F(" -> Downward"));
                #endif
                break;
              case 3 :
                // Timeout --> OffsetPosition is undetermined --> do nothing and brake
                lift.brakeActuator();
                #ifdef MOVEMENTDEBUG
                DEBUG_PRINTLN(F(" -> Timeout"));
                #endif
                break;
            } // switch 
        xSemaphoreGive(xSemaphore);    
    }      
    vTaskDelay(xDelay);
  } // while
} // end

// ----------------------------------------------------------------------------------

bool client_DeviceInformation_Connect(void)
{
    // If Device Information is not found then go on.... NOT FATAL !
    pRemote_DeviceInformation_Service = pClient_Wahoo->getService(UUID16_SVC_DEVICE_INFORMATION);    
    if ( pRemote_DeviceInformation_Service == nullptr ) {
      DEBUG_PRINT(F("Device Information Service: NOT Found!\n"));
      return true;
    }
      DEBUG_PRINT(F("Client Device Information Service: Found!\n"));
      pRemote_DIS_ManufacturerName_Chr = pRemote_DeviceInformation_Service->getCharacteristic(UUID16_CHR_MANUFACTURER_NAME_STRING);  
      if ( pRemote_DIS_ManufacturerName_Chr != nullptr ) {
          if(pRemote_DIS_ManufacturerName_Chr->canRead()) {
            client_DIS_Manufacturer_Str = pRemote_DIS_ManufacturerName_Chr->readValue();
            server_DIS_ManufacturerName_Chr->setValue(client_DIS_Manufacturer_Str); // Transfer/Update the value to the server side
            DEBUG_PRINTF(" -> Client Reads Manufacturer Name: [%s]\n", client_DIS_Manufacturer_Str.c_str());
          }            
      }     
      pRemote_DIS_ModelNumber_Chr = pRemote_DeviceInformation_Service->getCharacteristic(UUID16_CHR_MODEL_NUMBER_STRING);       
      if ( pRemote_DIS_ModelNumber_Chr != nullptr ) {
          if(pRemote_DIS_ModelNumber_Chr->canRead()) {
            client_DIS_ModelNumber_Str = pRemote_DIS_ModelNumber_Chr->readValue();
            server_DIS_ModelNumber_Chr->setValue(client_DIS_ModelNumber_Str); // Transfer/Update the value to the server side
            DEBUG_PRINTF(" -> Client Reads Model Number:      [%s]\n", client_DIS_ModelNumber_Str.c_str());
          }
      }  
      pRemote_DIS_SerialNumber_Chr = pRemote_DeviceInformation_Service->getCharacteristic(UUID16_CHR_SERIAL_NUMBER_STRING);       
      if ( pRemote_DIS_SerialNumber_Chr != nullptr ) {
          if(pRemote_DIS_SerialNumber_Chr->canRead()) {
            client_DIS_SerialNumber_Str = pRemote_DIS_SerialNumber_Chr->readValue();
            server_DIS_SerialNumber_Chr->setValue(client_DIS_SerialNumber_Str); // Transfer/Update the value to the server side
            DEBUG_PRINTF(" -> Client Reads Serial Number:     [%s]\n", client_DIS_SerialNumber_Str.c_str());
          }
      }       
  return true;    
}

bool client_GenericAccess_Connect(void)
{
    // If Generic Access is not found then go on.... NOT FATAL !
    pRemote_GenericAccess_Service = pClient_Wahoo->getService(UUID16_SVC_GENERIC_ACCESS);    
    if ( pRemote_GenericAccess_Service == nullptr ) {
      DEBUG_PRINTLN(F("Client Generic Access: NOT Found!"));
      return true;
    }
    DEBUG_PRINTLN("Client Generic Access: Found!");
    pRemote_GA_DeviceName_Chr = pRemote_GenericAccess_Service->getCharacteristic(UUID16_CHR_DEVICE_NAME);  
      if ( pRemote_GA_DeviceName_Chr != nullptr ) {
          if(pRemote_GA_DeviceName_Chr->canRead()) {
            client_GA_DeviceName_Str = pRemote_GA_DeviceName_Chr->readValue();
            int RespErr = ble_svc_gap_device_name_set((const char*)client_GA_DeviceName_Str.c_str()); // Transfer/Update the value to the server side    
            DEBUG_PRINTF(" -> Client Reads Device Name:   [%s]\n", client_GA_DeviceName_Str.c_str());
          }            
      }     
      pRemote_GA_Appearance_Chr = pRemote_GenericAccess_Service->getCharacteristic(UUID16_CHR_APPEARANCE);       
      if ( pRemote_GA_Appearance_Chr != nullptr ) {
          if(pRemote_GA_Appearance_Chr->canRead()) {
            client_GA_Appearance_Value = pRemote_GA_Appearance_Chr->readUInt16();
            int RespErr = ble_svc_gap_device_appearance_set(client_GA_Appearance_Value); // Transfer/Update the value to the server side
            DEBUG_PRINTF(" -> Client Reads Appearance:    [%d]\n", client_GA_Appearance_Value);
          }
      }     
    return true;     
}

void client_CP_Measurement_Notify_Callback(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify) 
{
  // Client CP Measurement data is tranferred to the Server
  // NO TREATMENT OF COMMAND !!!
  if((Laptop.IsConnected)) {   
    server_CP_Measurement_Chr->setValue(pData, length);
    server_CP_Measurement_Chr->notify(); // Just pass on and process later!
  }
#ifdef DEBUG_CP_MEASUREMENT
  uint8_t buffer[length]= {}; 
  // Transfer first the contents of data to buffer (array of chars)
  DEBUG_PRINTF(" -> Client Rec'd Raw CP Data: [%d] [%d] [ ", isNotify, length); 
  for (int i = 0; i < sizeof(buffer); i++) {
    if ( i <= sizeof(buffer)) {
      buffer[i] = *pData++;
      DEBUG_PRINTF("%02X ", buffer[i], HEX);
    }
  }
  DEBUG_PRINT("] ");
  uint8_t offset = 0;
  // Get flags field
  uint16_t flags = 0;
  memcpy(&flags, &buffer[offset], 2); // Transfer buffer fields to variable
  offset += 2;  // UINT16
  // Get Instantaneous Power values UINT16
  uint16_t PowerValue = 0;
  memcpy(&PowerValue, &buffer[offset], 2); // Transfer buffer fields to variable
  offset += 2;  // UINT16
  DEBUG_PRINTF("Instantaneous Power: %4d\n", PowerValue);
  // Get the other CP measurement values
  if ((flags & 1) != 0) {
    //  Power Balance Present
    DEBUG_PRINT(" --> Pedal Power Balance!");
  }
  if ((flags & 2) != 0) {
    // Accumulated Torque
    DEBUG_PRINTLN(" --> Accumulated Torque!");
  }
  // etcetera...
#endif
} // End cpmc_notify_callback

void client_Wahoo_ControlPoint_Indicate_Callback(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify)
{
  // The receipt of Control Point settings is acknowledged by the trainer: handle it
  // Send Client's Response message to the Server
  // NO TREATMENT OF COMMAND !!!
  if((Laptop.IsConnected)) {   
    server_Wahoo_ControlPoint_Chr->setValue(pData, length);
    server_Wahoo_ControlPoint_Chr->indicate(); // Just pass on and process later!
    client_Wahoo_ControlPoint_Response = true; // Should be set now!
  } 
#ifdef DEBUG_WAHOO_CONTROLPOINT_RESPONSE
  uint8_t RespBufferLen = (uint8_t)length;
  uint8_t RespBuffer[RespBufferLen] = {}; // It is max 6 bytes long
  // Transfer first the contents of data to buffer (array of chars)
  DEBUG_PRINT("-> Client Rec'd Raw Wahoo Control Point Response Data: [ "); 
  for (int i = 0; i < sizeof(RespBuffer); i++) {
      RespBuffer[i] = *pData++;
      DEBUG_PRINTF("%02X ", RespBuffer[i], HEX);
  }
  DEBUG_PRINTLN("]");
#endif  
}

bool client_CyclingPower_Connect(void)
{
    // Obtain a reference to the remote CP service.
    pRemote_CyclingPower_Service = pClient_Wahoo->getService(UUID16_SVC_CYCLING_POWER);
    if (pRemote_CyclingPower_Service == nullptr) {
      DEBUG_PRINTLN("Mandatory Cycling Power Service: Not Found!");
      return false;
    }
    // ----------------------------- WAHOO --------------------------------------------------------------------------
    DEBUG_PRINTLN("Client_CyclingPower_Service: Found!");    
    pRemote_Wahoo_ControlPoint_Chr = pRemote_CyclingPower_Service->getCharacteristic(UUID16_CHR_WAHOO_CONTROL_POINT);
    if (pRemote_Wahoo_ControlPoint_Chr == nullptr) {
      DEBUG_PRINTLN("Mandatory Client_Wahoo_ControlPoint_Chr: Not Found!");
      return false; // Mandatory when service is present
    }
    DEBUG_PRINTLN("Client_Wahoo_ControlPoint_Chr: Found!");
    if(pRemote_Wahoo_ControlPoint_Chr->canIndicate()) {
      pRemote_Wahoo_ControlPoint_Chr->subscribe(indications, client_Wahoo_ControlPoint_Indicate_Callback);
      } else {
      DEBUG_PRINTLN("Mandatory Client_Wahoo_ControlPoint_Chr: Cannot Indicate!");
      return false; // Mandatory when service is present
    }
    // ---------------------------------------------------------------------------------------------------------------
    pRemote_CP_Measurement_Chr = pRemote_CyclingPower_Service->getCharacteristic(UUID16_CHR_CYCLING_POWER_MEASUREMENT);
    if (pRemote_CP_Measurement_Chr == nullptr) {
      DEBUG_PRINTLN("Mandatory client_CP_Measurement_Chr: Not Found!");
      return false;
    }
    DEBUG_PRINTLN("Client_CP_Measurement_Chr: Found!");  
    if(pRemote_CP_Measurement_Chr->canNotify()) {
      pRemote_CP_Measurement_Chr->subscribe(notifications, client_CP_Measurement_Notify_Callback);
    } else {
      DEBUG_PRINTLN("Mandatory Client_CP_Measurement_Chr: Cannot Notify!");
      return false;
    }
    pRemote_CP_Feature_Chr = pRemote_CyclingPower_Service->getCharacteristic(UUID16_CHR_CYCLING_POWER_FEATURE);
    if (pRemote_CP_Feature_Chr == nullptr) {
      DEBUG_PRINTLN("Mandatory Client_CP_Feature_Chr: Not Found!");
      return false;      
    }
    DEBUG_PRINTLN("Client_CP_Feature_Chr: Found!");
    // Read the value of the characteristic.
    if(pRemote_CP_Feature_Chr->canRead()) 
      {
       // Read 32-bit client_CP_Feature_Chr value
      client_CP_Feature_Flags = pRemote_CP_Feature_Chr->readUInt32();
      server_CP_Feature_Chr->setValue(client_CP_Feature_Flags); // Transfer/Update the value to the server side
#ifdef DEBUG
      const uint8_t CPFC_FIXED_DATALEN = 4;
      uint8_t cpfcData[CPFC_FIXED_DATALEN] = {(uint8_t)(client_CP_Feature_Flags & 0xff), (uint8_t)(client_CP_Feature_Flags >> 8), 
                                          (uint8_t)(client_CP_Feature_Flags >> 16), (uint8_t)(client_CP_Feature_Flags >> 24)};
      DEBUG_PRINT(" -> Client Reads Raw CP Feature bytes: [4] [ ");
      for (int i = 0; i < CPFC_FIXED_DATALEN; i++) {
        if ( i <= sizeof(cpfcData)) {
        DEBUG_PRINTF("%02X ", cpfcData[i], HEX);
        }
      }
      DEBUG_PRINTLN("] ");
      for (int i = 0; i < client_CP_Feature_Len; i++) {
        if ( client_CP_Feature_Flags & (1 << i) ) {
          DEBUG_PRINTLN(client_CP_Feature_Str[i]);
        }
      }
#endif
      } // canRead Feature
    pRemote_CP_Location_Chr = pRemote_CyclingPower_Service->getCharacteristic(UUID16_CHR_SENSOR_LOCATION);
    if (pRemote_CP_Location_Chr == nullptr) {
      DEBUG_PRINTLN("Client_CP_Location_Chr: Not Found!");
    } else {
      DEBUG_PRINTLN("Client_CP_Location_Chr: Found!");
      // Read the value of the characteristic.
      if(pRemote_CP_Location_Chr->canRead()) {
        client_CP_Location_Value = pRemote_CP_Location_Chr->readUInt8();
        server_CP_Location_Chr->setValue(&client_CP_Location_Value, 1); // Transfer/Update the value to the server side
        // CP sensor location value is 8 bit
        DEBUG_PRINT(" -> Client Reads CP Location Sensor:");
        DEBUG_PRINTF(" Loc#: %d %s\n", client_CP_Location_Value, client_Sensor_Location_Str[client_CP_Location_Value]);
      }
    }
    return true;    
}

void client_CSC_Measurement_Notify_Callback(BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify)
{
  // Client CSC Measurement data is tranferred to the Server
  // NO TREATMENT OF COMMAND !!!
  if((Laptop.IsConnected)) {   
    server_CSC_Measurement_Chr->setValue(pData, length);
    server_CSC_Measurement_Chr->notify(); // Just pass on and process later!
  }  
#ifdef DEBUG_CSC_MEASUREMENT
  uint8_t buffer[length]= {}; 
  // Transfer first the contents of data to buffer (array of chars)
  DEBUG_PRINTF(" -> Client Rec'd Raw CSC Data: [%d] [%d] [ ", isNotify, length); 
  for (int i = 0; i < length; i++) {
    if ( i <= sizeof(buffer)) {
      buffer[i] = *pData++;
      DEBUG_PRINTF("%02X ", buffer[i], HEX);
    }
  }
  DEBUG_PRINT("] ");
  uint8_t offset = 0; 
  // we define the offset that is to be used when reading the next field
  // Size of variables (e.g. 2 (16) or 4 bytes (32)) are constants in BluetoothGattCharacteristic
  // these represent the values you can find in the "Value Fields" table in the "Format" column
  // Read the Flags field at buffer[0]
  uint8_t flags = buffer[offset]; 
  offset += 1; // UINT8 
  // we have to check the flags' nth bit to see if C1 field exists 
  if ((flags & 1) != 0) {
    uint32_t cum_wheel_rev = 0;
    memcpy(&cum_wheel_rev, &buffer[offset], 4);
    offset += 4; // UINT32
    uint16_t last_wheel_event = 0;
    memcpy(&last_wheel_event, &buffer[offset], 2);
    offset += 2; // UINT16
    DEBUG_PRINTF(" Cum. wheel rev.: %d Last wheel event: %d ", cum_wheel_rev, last_wheel_event);
/* Calculation of speed at the Collector can be derived from the wheel circumference and
* data in two successive measurements. The Collector calculation can be performed as
* shown below:
* Speed = (Difference in two successive Cumulative Wheel Revolution values * Wheel Circumference) 
*         / (Difference in two successive Last Wheel Event Time values)
*/
  }
  // we have to check the flags' nth bit to see if C2 field exists 
  if ((flags & 2) != 0) {
    uint16_t cum_cranks = 0;
    memcpy(&cum_cranks, &buffer[offset], 2);
    offset += 2; // UINT16
    uint16_t last_crank_event = 0;
    memcpy(&last_crank_event, &buffer[offset], 2);
    offset += 2; // UINT16
    DEBUG_PRINTF(" Cum cranks: %d Last crank event: %d", cum_cranks, last_crank_event);
/* Calculation of cadence at the Collector can be derived from data in two successive
* measurements. The Collector calculation can be performed as shown below:
* Cadence = (Difference in two successive Cumulative Crank Revolution values)
*           / (Difference in two successive Last Crank Event Time values)        
*/         
  }
  // etcetera...
  DEBUG_PRINTLN();
#endif
}

bool client_CyclingSpeedCadence_Connect(void)
{
    // Obtain a reference to the remote HRM service.
    pRemote_CyclingSpeedCadence_Service = pClient_Wahoo->getService(UUID16_SVC_CYCLING_SPEED_AND_CADENCE);
    if (pRemote_CyclingSpeedCadence_Service == nullptr) {
      DEBUG_PRINTLN("client_CyclingSpeedCadence_Service: Not Found! Not Mandatory");
      return true;
    }
    DEBUG_PRINTLN("Client_CyclingSpeedCadence_Service: Found!");
    pRemote_CSC_Measurement_Chr = pRemote_CyclingSpeedCadence_Service->getCharacteristic(UUID16_CHR_CSC_MEASUREMENT);
    if (pRemote_CSC_Measurement_Chr == nullptr) {
      DEBUG_PRINTLN("Mandatory client_CSC_Measurement_Chr: Not Found!");
      return false;
    }
    DEBUG_PRINTLN("Client_CSC_Measurement_Chr: Found!");  
    if(pRemote_CSC_Measurement_Chr->canNotify()) {
      pRemote_CSC_Measurement_Chr->subscribe(notifications, client_CSC_Measurement_Notify_Callback);
    } else {
      DEBUG_PRINTLN("Mandatory Client_CSC_Measurement_Chr: Cannot Notify!");
      return false;
    }
    pRemote_CSC_Feature_Chr = pRemote_CyclingSpeedCadence_Service->getCharacteristic(UUID16_CHR_CSC_FEATURE);
    if (pRemote_CSC_Feature_Chr == nullptr) {
      DEBUG_PRINTLN("Mandatory Client_CSC_Feature_Chr: Not Found!");
      return false;      
    }
    DEBUG_PRINTLN("Client_CSC_Feature_Chr: Found!");
    // Read the value of the characteristic.
    if(pRemote_CSC_Feature_Chr->canRead()) 
      {
        // Read 16-bit client_CSC_Feature_Chr value
        client_CSC_Feature_Flags = pRemote_CSC_Feature_Chr->readUInt16();
        server_CSC_Feature_Chr->setValue(client_CSC_Feature_Flags); // Transfer/Update the value to the server side
#ifdef DEBUG
        uint8_t cscfcData[CSC_FEATURE_FIXED_DATALEN] = { (uint8_t)(client_CSC_Feature_Flags & 0xff), (uint8_t)(client_CSC_Feature_Flags >> 8) }; //  Little Endian Representation
        DEBUG_PRINTF(" -> Client Reads Raw CSC Feature bytes: [2] [ ");
        for (int i = 0; i < sizeof(cscfcData); i++) {
          DEBUG_PRINTF("%02X ", cscfcData[i], HEX);
        }
        DEBUG_PRINTLN("] ");
        for (int i = 0; i < client_CSC_Feature_Len; i++) {
          if ( (client_CSC_Feature_Flags & (1 << i)) != 0 ) {
            DEBUG_PRINTLN(client_CSC_Feature_Str[i]);
            }
        }
#endif
      } // canRead Feature
     
    pRemote_CSC_Location_Chr = pRemote_CyclingSpeedCadence_Service->getCharacteristic(UUID16_CHR_SENSOR_LOCATION);
    if (pRemote_CSC_Location_Chr == nullptr) {
      DEBUG_PRINTLN("Client_CSC_Location_Chr: Not Found!");
    } else {
      DEBUG_PRINTLN("Client_CSC_Location_Chr: Found!");
      // Read the value of the characteristic.
      if(pRemote_CSC_Location_Chr->canRead()) {
        client_CSC_Location_Value = pRemote_CSC_Location_Chr->readUInt8();
        server_CSC_Location_Chr->setValue(&client_CSC_Location_Value, 1); // Transfer/Update the value to the server side
        // CSC sensor location value is 8 bit
        DEBUG_PRINT(" -> Client Reads CSC Location Sensor:");
        DEBUG_PRINTF(" Loc#: %d %s\n", client_CSC_Location_Value, client_Sensor_Location_Str[client_CSC_Location_Value]);
      }
    }
    return true;    
}
 
// This is NOT really a Callback --> It should have been implemented that way (see for instance Adafruit Bluefruit BLE library), 
// however, now it is called from loop() ... a poor man's solution!
bool client_Connect_Callback(void) {
    // Every time we want to connect to a Server a NEW Client is created !!
    pClient_Wahoo = BLEDevice::createClient(); 
    pClient_Wahoo->setClientCallbacks(new client_Connection_Callbacks());
    // Connect to the Wahoo BLE Server.
    pClient_Wahoo->connect(myDevice);
    DEBUG_PRINTLN("Now checking all Client Services and Characteristics!");
    DEBUG_PRINTLN("If Mandatory Services Fail --> the Client will disconnect!");
  // Discover all relevant Services and Char's
  if( !client_GenericAccess_Connect() ) {
    pClient_Wahoo->disconnect();
    return false;    
  }
  if( !client_DeviceInformation_Connect() ) {
    pClient_Wahoo->disconnect();
    return false;    
  }
  if( !client_CyclingPower_Connect() ) {
    pClient_Wahoo->disconnect();
    return false;    
  }
  // --------------------------WAHOO UNLOCK --------------------------------------------------
  delay(50); 
  // Unlock the client_Wahoo_ControlPoint Characteristic at the Wahoo trainer
  DEBUG_PRINTLN("Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key");
  // write with response !!! writeValue(uint8_t* data, size_t length, bool response = false);
  pRemote_Wahoo_ControlPoint_Chr->writeValue(unlockCommand, 3, true);      
  delay(100);    // Give the trainer some time to wake up  
  // ------------------------------------------------------------------------------------------     
 if( !client_CyclingSpeedCadence_Connect() ) {
    pClient_Wahoo->disconnect();
    return false;    
  }
  // When the client/trainer is RECONNECTING we need to enable/indicate all Remote Client Char's again!
  if(Laptop.IsConnected) {
    //Do NOT(!) allow for any possible delay (Regularly this is handled in loop() with DoCallClientEnable = true)
    client_Set_All_NotificationIndication(true);
  }
  // ----------------------------------------------------------------------------------------------
  Trainer.IsConnected = true;
  client_Wahoo_ControlPoint_Response = true; // Should be set now!    
return true;
};

/**
 * Scan for BLE servers and find the first one that advertises the service we are looking for.
 */
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
/*
 * Called for each advertising BLE server.
*/
  void onResult(BLEAdvertisedDevice* advertisedDevice) {
    //DEBUG_PRINT("Advertising Device-> ");
    //DEBUG_PRINTLN(advertisedDevice.toString().c_str());
    // We have found a server device, now see if it contains the service we are looking for.
    if (advertisedDevice->haveServiceUUID() && advertisedDevice->isAdvertisingService(UUID16_SVC_CYCLING_POWER)) {
      NimBLEAddress MyAddress = advertisedDevice->getAddress();
      uint8_t RemoteAddress[6] = {};
      memcpy(&RemoteAddress, MyAddress.getNative(), 6);
      DEBUG_PRINTLN("Found advertising Peripheral with CPS enabled! See data:");
      DEBUG_PRINTLN(advertisedDevice->toString().c_str());
      // OK Server has CPS ervice exposed, now check for right mac adress 
      if ( !(memcmp((void*)RemoteAddress, Trainer.PeerAddress, 6) == 0) ) {
        char fullMacAddress[18] = {}; //
        ConvertMacAddress(fullMacAddress, RemoteAddress, false); // true -> Native representation!
        DEBUG_PRINTF("Keep Scanning! Unknown Trainer Mac Address: [%s]\n", fullMacAddress);
        return;
      }      
      BLEDevice::getScan()->stop();
      myDevice = advertisedDevice;
      /* Connect to the Wahoo BLE Server -> Sorry you can't do that here!!! --------------------------------
      ** pClient_Wahoo->connect(myDevice);  NOT ALLOWED TO CALL CONNECT --> CAUSES FATAL ERROR !!!! ???? */  
      doClientConnectCall = true;         // Work around via loop()           
    } // Found our server
  } // onResult
}; // MyAdvertisedDeviceCallbacks

void client_Connection_Callbacks::onConnect(BLEClient* pClient) {
    Trainer.PeerName = myDevice->getName().c_str();
    Trainer.conn_handle = pClient_Wahoo->getConnId();
#ifdef DEBUG
    DEBUG_PRINT("Client Connection Parameters -> ");
    uint16_t max_payload = pClient_Wahoo->getMTU()-3;
    //DEBUG_PRINTF("Max Transmission Unit: [%d] ", max_payload);
    uint16_t clientConnectionInterval = pClient_Wahoo->getConnInfo().getConnInterval();
    DEBUG_PRINTF("Interval: [%d] ", clientConnectionInterval);
    uint16_t clientConnectionLatency = pClient_Wahoo->getConnInfo().getConnLatency();
    DEBUG_PRINTF("Latency: [%d] ", clientConnectionLatency);
    uint16_t clientConnectionSupTimeout = pClient_Wahoo->getConnInfo().getConnTimeout();
    DEBUG_PRINTF("Supervision Timeout: [%d]\n", clientConnectionSupTimeout);
    char fullMacAddress[18] = {}; //
    ConvertMacAddress(fullMacAddress, Trainer.PeerAddress, false); // true -> Native representation!
    DEBUG_PRINTF("ESP32 Client connected to Server device with Name: [%s] MAC Address: [%s] Handle: [%d] MTU: [%d]\n", \
                                                          Trainer.PeerName.c_str(), fullMacAddress, Trainer.conn_handle, max_payload); 
#endif
    /** We can use the connection handle here to ask for different connection parameters.
     *  Args: connection handle, min connection interval, max connection interval, latency and supervision timeout.
     *  Units; Min/Max Intervals: 1.25 millisecond increments --> between: 24 (30 ms) resp. 48 (60 ms)
     *  Latency: number of intervals allowed to skip. --> keep zero
     *  Timeout: 10 millisecond increments. --> Try 400 (4000 ms)
     */ 
    //pClient_Wahoo->updateConnParams(pClient_Wahoo->getConnId(), 24, 48, 0, 400);
    //DEBUG_PRINTLN("Client Updates Connection Parameters -> Min Interval: [24] Max Interval: [48] Latency: [0] Supervision Timeout: [400]");  
};

bool client_Connection_Callbacks::onConnParamsUpdateRequest(BLEClient* pClient, ble_gap_upd_params *params) {
    DEBUG_PRINTLN("Client Connection Parameter Update Request!");
    /** Minimum value for connection interval in 1.25ms units */
    uint16_t clientConnectionMinInterval = params->itvl_min;
    DEBUG_PRINTF("Min Interval: [%d]\n", clientConnectionMinInterval);
    /** Maximum value for connection interval in 1.25ms units */
    uint16_t clientConnectionMaxInterval = params->itvl_max;
    DEBUG_PRINTF("Max Interval: [%d]\n", clientConnectionMaxInterval);
    /** Connection latency */
    uint16_t clientConnectionLatency = params->latency;
    DEBUG_PRINTF("Latency: [%d]\n", clientConnectionLatency);
    /** Supervision timeout in 10ms units */
    uint16_t clientConnectionSupTimeout = params->supervision_timeout;
    DEBUG_PRINTF("Sup. Timeout: [%d]\n", clientConnectionSupTimeout);
    /** Minimum length of connection event in 0.625ms units */
    uint16_t clientMinLenEvent = params->min_ce_len;
    DEBUG_PRINTF("Min Length Event: [%d]\n", clientMinLenEvent);
    /** Maximum length of connection event in 0.625ms units */
    uint16_t clientMaxLenEvent = params->max_ce_len;  
    DEBUG_PRINTF("Max Length Event: [%d]\n", clientMaxLenEvent);
    return true; // That is OK!  
};

void client_Connection_Callbacks::onDisconnect(BLEClient* pClient) {
    Trainer.IsConnected = false;
    Trainer.conn_handle = BLE_HS_CONN_HANDLE_NONE; 
    char fullMacAddress[18] = {}; //
    ConvertMacAddress(fullMacAddress, Trainer.PeerAddress, false); // true -> Native representation!
    DEBUG_PRINTF("Client Disconnected from Server device with Name: [%s] Mac Address: [%s]!\n",  Trainer.PeerName.c_str(), fullMacAddress); 
    RestartScanningOnDisconnect = true;
    //  It is an option to disconnect also the Server, however NOT necessary!! We choose not!
    //  if(Laptop.IsConnected) pServer->disconnect(Laptop.conn_handle);
};

void client_Start_Scanning(void)
{
  // Retrieve a Scanner and set the callback we want to use to be informed when we
  // have detected a new device.  Specify that we want active scanning and start the
  // scan to run for ## seconds.
  pBLEScan = BLEDevice::getScan();
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setInterval(1349);
  pBLEScan->setWindow(449);
  pBLEScan->setActiveScan(true);
   DEBUG_PRINTLN("Client Starts Scanning for Server Device with CPS + Wahoo!");  
  //pBLEScan->start(5, false); // Scan for 5 seconds only
  pBLEScan->start(0, false);
}

// Handler class for Server Multi Characteristic actions limited to onSubscribe
void CharacteristicCallbacks::onSubscribe(NimBLECharacteristic* pCharacteristic, ble_gap_conn_desc* desc, uint16_t subValue) {
          String str = "Central Updated CCCD -->";
        if(subValue == 0) {
            str += " Notify/Indicate Disabled for Char:";
        }else if(subValue == 1) {
            str += " Notify Enabled for Char:";
        } else if(subValue == 2) {
            str += " Indicate Enabled for Char:";
        } else if(subValue == 3) {
            str += " Notify & Indicate Enabled for Char:";
        }
        DEBUG_PRINTF("%s", str.c_str());
        str = std::string(pCharacteristic->getUUID()).c_str();
        DEBUG_PRINTF(" [%s]\n", str.c_str());
};

void server_startADV(void)
{
    // Prepare for advertising
    /** Optional: set the transmit power, default is 3db */
#ifdef ESP_PLATFORM
    NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** +9db */
#else
    NimBLEDevice::setPower(9); /** +9db */
#endif
    pAdvertising = NimBLEDevice::getAdvertising(); 
    pAdvertising->addServiceUUID(UUID16_SVC_CYCLING_POWER);
    pAdvertising->addServiceUUID(UUID16_SVC_CYCLING_SPEED_AND_CADENCE);
    pAdvertising->setAppearance(client_GA_Appearance_Value);
    DEBUG_PRINTF("Setting Appearance in Advertised data to [%d]\n", client_GA_Appearance_Value);
    pAdvertising->setName(THISDEVICENAME);
    DEBUG_PRINTF("Setting DeviceName in Advertised data to [%s]\n", THISDEVICENAME);
    pAdvertising->setScanResponse(true);
    pAdvertising->setMinInterval(144); // 32 in 0.625ms units, 0 = use default.
    pAdvertising->setMaxInterval(244); // 244 in 0.625ms units, 0 = use default.
    BLEDevice::startAdvertising();    
    // Start Advertising 
}

void server_Connection_Callbacks::onConnect(BLEServer* pServer, ble_gap_conn_desc *desc) {
    // Get some connection parameters of the peer device.
    uint16_t serverConnectionHandle = desc->conn_handle;
    uint16_t serverConnectionInterval = desc->conn_itvl;   // Connection interval   
    uint16_t serverConnectionLatency = desc->conn_latency; // Connection latency
    uint16_t serverConnectionSupTimeout = desc->supervision_timeout;   // Connection supervision timeout
    uint8_t RemoteAddress[6];
    memcpy(&RemoteAddress, NimBLEAddress(desc->peer_id_addr).getNative(), 6);
    char fullMacAddress[18] = {}; 
    ConvertMacAddress(fullMacAddress, RemoteAddress, false); // true -> Native format!
    BLEDevice::stopAdvertising();
    DEBUG_PRINTF("Server Connection Parameters -> Interval: [%d] Latency: [%d] Supervision Timeout: [%d]\n",serverConnectionInterval, \
                                                                  serverConnectionLatency, serverConnectionSupTimeout); 
    DEBUG_PRINTF("ESP32 Server connected to Client device with MAC Address: [%s] Conn Handle: [%d]\n", fullMacAddress, serverConnectionHandle);    
    /** We can use the connection handle here to ask for different connection parameters.
     *  Args: connection handle, min connection interval, max connection interval, latency and supervision timeout.
     *  Units; Min/Max Intervals: 1.25 millisecond increments --> between: 24 (30 ms) resp. 48 (60 ms)
     *  Latency: number of intervals allowed to skip. --> keep zero
     *  Timeout: 10 millisecond increments. --> Try 400 (4000 ms)
     */ 
    //pServer->updateConnParams(serverConnectionHandle, 24, 48, 0, 400);
    //DEBUG_PRINTLN("Server Updates Connection Parameters -> Min Interval: [24] Max Interval: [48] Latency: [0] Supervision Timeout: [400]");  
    // Who has been exactly connected?
    // [1] Laptop is connecting
    if (memcmp(RemoteAddress, Laptop.PeerAddress, 6) == 0 ) { // Check Laptop MAC address
      // Laptop/PC is connecting !
      memcpy(&Laptop.PeerAddress, RemoteAddress, 6);     
      Laptop.conn_handle = serverConnectionHandle;       
      Laptop.IsConnected = true;
      DEBUG_PRINTF("Central (%s/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....\n", Laptop.PeerName.c_str());
      DoCallClientEnable = true;
      return; // We are done here!
    }
    // [2] Smartphone is connecting
    Smartphone.conn_handle = serverConnectionHandle;
    Smartphone.IsConnected = true;
    memcpy(Smartphone.PeerAddress, RemoteAddress, 6);
    DEBUG_PRINTF("Central (%s/Simcline App) has to set NUS CCCD 'Notify' (enable) and start....\n", Smartphone.PeerName.c_str());
    /* Alternative for exclusively connecting to Laptop!!
    if ( !(memcmp(RemoteAddress, Laptop.PeerAddress, 6) == 0) ) {
        DEBUG_PRINTLN("ERROR >>> Forced Server Disconnect: Unknown Laptop Mac Address!");      
        pServer->disconnect(desc->conn_handle);        
        return; // Failed
    } 
    */
};

void server_Connection_Callbacks::onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc) {
    DEBUG_PRINTF("Central (%s/Zwift) updated MTU to: [%u] for connection ID: %u\n", Laptop.PeerName.c_str(), MTU, desc->conn_handle);           
};

void server_Connection_Callbacks::onDisconnect(BLEServer* pServer, ble_gap_conn_desc *desc) {
    uint32_t count = pServer->getConnectedCount();
    // Get some Disconnection parameters of the peer device.
    uint16_t serverConnectionHandle = desc->conn_handle;
    uint8_t RemoteAddress[6] = {};
    memcpy(&RemoteAddress, NimBLEAddress(desc->peer_id_addr).getNative(), 6);
    char fullMacAddress[18] = {}; //
    ConvertMacAddress(fullMacAddress, RemoteAddress, false); // true -> Native format!
    if (Laptop.conn_handle == serverConnectionHandle ) { // Laptop/Desktop is disconnected
      Laptop.conn_handle = BLE_HS_CONN_HANDLE_NONE;
      Laptop.IsConnected = false;
      DEBUG_PRINTF("ESP32 Server disconnected from Central (%s) Conn handle: [%d] Mac Address: [%s]\n", Laptop.PeerName.c_str(), serverConnectionHandle, fullMacAddress);
      if(Trainer.IsConnected) DoCallClientDisable = true; // Tell the client not to send data!
    }
    if (Smartphone.conn_handle == serverConnectionHandle ) { // Smartphone is disconnected
      Smartphone.conn_handle = BLE_HS_CONN_HANDLE_NONE;
      Smartphone.IsConnected = false;
      DEBUG_PRINTF("ESP32 Server disconnected from Central (%s) Conn handle: [%d] Mac Address: [%s]\n", Smartphone.PeerName.c_str(), serverConnectionHandle, fullMacAddress);
    }
    DEBUG_PRINTLN(" --> ESP32 Server is advertising again!");
    // NimBLe does auto advertise after disconnect 
};

std::string WahooCPData; // Defined global to easely passing std::string 

void TaskWriteWithResponse(void *parameter) {
  // Just pass on and process later! 
  if( !pRemote_Wahoo_ControlPoint_Chr->writeValue(WahooCPData, true) ) { // true -> WithResponse (fatal if trainer is not responding: Guru paniced!!)
      pClient_Wahoo->disconnect();
      DEBUG_PRINTLN(">>> Error: NOT responding to Wahoo Control Point -> Write Value!");
  }
  vTaskDelete(TaskWriteWithResponseHandle);
};

class server_Wahoo_ControlPoint_Chr_callback: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
  if(!client_Wahoo_ControlPoint_Response) {  // skip the next Write action --> out of write-response-synch !! 
    DEBUG_PRINTLN("-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!");
    return;
  }
  WahooCPData = server_Wahoo_ControlPoint_Chr->getValue();
  uint8_t WahooCPDataLen = WahooCPData.length();
  // Server Wahoo Control Point data is tranferred to the Client
  // NO TREATMENT OF COMMAND !!!
  // write with response !!! writeValue(string, bool response = false);
  if(Trainer.IsConnected) { 
    xTaskCreate(&TaskWriteWithResponse, "Write w Response", 4096, (void *)NULL, 1, &TaskWriteWithResponseHandle); // 2048
    client_Wahoo_ControlPoint_Response = false;     
  } 
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA
  // Display the raw request packet 
  DEBUG_PRINTF("-> Server Rec'd Raw Wahoo Control Point Data [len: %d] ", WahooCPDataLen);
#endif
  // Transfer the contents of data to server_Wahoo_Control_Point_Data.bytes
  memset(server_Wahoo_Control_Point_Data.bytes, 0, sizeof(server_Wahoo_Control_Point_Data.bytes));
  for (int i = 0; i < WahooCPDataLen; i++) {
      server_Wahoo_Control_Point_Data.bytes[i] = WahooCPData[i];
  }
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA
  /// Decodes an incoming Wahoo Control Point request
  DEBUG_PRINTF("[OpCode: %02X] [Values: ", server_Wahoo_Control_Point_Data.values.OPCODE, HEX);
  for (int i=0; i<WahooCPDataLen; i++) { 
    DEBUG_PRINTF("%02X ", server_Wahoo_Control_Point_Data.values.OCTETS[i], HEX); 
  }
  DEBUG_PRINTLN("]");
  // The documentation I found states that all write actions to this Wahoo CP characteristic are "Write with Response"
  // So we have formally to acknowledge the receipt of the trainer setting
  // Zwift does NOT care at all if one sets a response, it is still working !!!
#endif
  switch(server_Wahoo_Control_Point_Data.values.OPCODE) {
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA    
    case unlock: {
      DEBUG_PRINTLN("    Request to Unlock Machine!");
      break;
    }
    case setResistanceMode: {
      DEBUG_PRINTLN("    Set Resistance Mode!");
      break;
    }
    case setStandardMode: {
      DEBUG_PRINTLN("    Set Standard Mode!");
      break;
    }
    case setSimMode : {
      DEBUG_PRINT("    Set Simulation Mode! ");   
      uint16_t tmp = (server_Wahoo_Control_Point_Data.values.OCTETS[0]) + (server_Wahoo_Control_Point_Data.values.OCTETS[1] << 8);       
      weight = (float(tmp) / 100); // Rider weight in Kg
      tmp = ( (server_Wahoo_Control_Point_Data.values.OCTETS[2]) + (server_Wahoo_Control_Point_Data.values.OCTETS[3] << 8) );
      rrc = (float(tmp) / 1000);    // Rolling Resistance Coefficient
      tmp = ( (server_Wahoo_Control_Point_Data.values.OCTETS[4]) + (server_Wahoo_Control_Point_Data.values.OCTETS[5] << 8) );      
      wrc = (float(tmp) / 1000);    // Wind Resistance Coefficient
      DEBUG_PRINTF(" --> Weight: %0.2f RRC: %f WRC: %f\n", weight, rrc, wrc); 
      break;
    }
#endif
    case setSimGrade: {
      uint16_t gr = ( server_Wahoo_Control_Point_Data.values.OCTETS[0] + (server_Wahoo_Control_Point_Data.values.OCTETS[1] << 8) );
      grade = 100 * float( ((gr * 2.0 / 65535) - 1.0) ); // Percentage of road grade --> range: between +1 and -1 (!)
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA
      DEBUG_PRINT("    Set Simulation Grade! "); 
      DEBUG_PRINTF(" --> Grade: %4.1f%%\n", grade); //
#endif
      SetNewRawGradeValue(grade);
      SetNewActuatorPosition();
      ShowSlopeTriangleOnOled();        
      break;       
    }
#ifdef DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA
    case setErgMode:
    case setSimCRR:
    case setSimWindResistance:
    case setSimWindSpeed:
    case setWheelCircumference:
    {
      DEBUG_PRINTLN("    Unresolved OpCode!");
      break;
    }
#endif    
    } // switch
  }; // onWrite
  
  void onSubscribe(NimBLECharacteristic* pCharacteristic, ble_gap_conn_desc* desc, uint16_t subValue) {
        String str = "Central Updated CCCD -->";
        if(subValue == 0) {
            str += " Notify/Indicate Disabled for Char:";
        }else if(subValue == 1) {
            str += " Notify Enabled for Char:";
        } else if(subValue == 2) {
            str += " Indicate Enabled for Char:";
        } else if(subValue == 3) {
            str += " Notify & Indicate Enabled for Char:";
        }
        DEBUG_PRINTF("%s", str.c_str());
        str = std::string(pCharacteristic->getUUID()).c_str();
        DEBUG_PRINTF(" [%s]\n", str.c_str());
  }; // onSubscribe
};

void server_setupCPS(void)
{
   server_CyclingPower_Service = pServer->createService(UUID16_SVC_CYCLING_POWER);
    server_CP_Measurement_Chr = server_CyclingPower_Service->createCharacteristic(UUID16_CHR_CYCLING_POWER_MEASUREMENT, 
                                                                            NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY);
    server_CP_Measurement_Chr->setCallbacks(&server_Multi_Chr_Callbacks); //NIMBLE 
    server_CP_Feature_Chr = server_CyclingPower_Service->createCharacteristic(UUID16_CHR_CYCLING_POWER_FEATURE, 
                                                                            NIMBLE_PROPERTY::READ);
    // Set server CP Feature Flags field                                                                            
    server_CP_Feature_Chr->setValue(client_CP_Feature_Flags);                                                                            
    server_CP_Location_Chr = server_CyclingPower_Service->createCharacteristic(UUID16_CHR_SENSOR_LOCATION, 
                                                                            NIMBLE_PROPERTY::READ);
    // Set server_CP_Location for sensor
    server_CP_Location_Chr->setValue(&client_CP_Location_Value, 1);

    // Wahoo proprietary Control Point Characteristic --------------------------------------------------------------------------
    server_Wahoo_ControlPoint_Chr = server_CyclingPower_Service->createCharacteristic(UUID16_CHR_WAHOO_CONTROL_POINT, 
                                                                            NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::INDICATE);
    server_Wahoo_ControlPoint_Chr->setCallbacks(new server_Wahoo_ControlPoint_Chr_callback);
    // -------------------------------------------------------------------------------------------------------------------------
    
    server_CyclingPower_Service->start();         
}

void server_setupCSC(void)
{
   server_CyclingSpeedCadence_Service = pServer->createService(UUID16_SVC_CYCLING_SPEED_AND_CADENCE);
    server_CSC_Measurement_Chr = server_CyclingSpeedCadence_Service->createCharacteristic(UUID16_CHR_CSC_MEASUREMENT, 
                                                                            NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY);
    server_CSC_Measurement_Chr->setCallbacks(&server_Multi_Chr_Callbacks); //NIMBLE 
    server_CSC_Feature_Chr = server_CyclingSpeedCadence_Service->createCharacteristic(UUID16_CHR_CSC_FEATURE, 
                                                                            NIMBLE_PROPERTY::READ);
    // Set server CSC Feature Flags field                                                                            
    server_CSC_Feature_Chr->setValue(client_CSC_Feature_Flags);                                                                            
    server_CSC_Location_Chr = server_CyclingSpeedCadence_Service->createCharacteristic(UUID16_CHR_SENSOR_LOCATION, 
                                                                            NIMBLE_PROPERTY::READ);
    // Set server_CSC_Location for sensor
    server_CSC_Location_Chr->setValue(&client_CSC_Location_Value, 1);
    server_CyclingSpeedCadence_Service->start();    
}

class server_NUS_Rxd_Chr_callback: public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *pCharacteristic) {
    // Read data received over NUS Rxd from Mobile Phone
    std::string NusRxdData = server_NUS_Rxd_Chr->getValue();
    uint8_t NusRxdDataLen = NusRxdData.length();  // Get the actual length of data bytes
    // Display the raw packet data in actual length
    DEBUG_PRINTF(" -> Server Rec'd NUS Rxd Data [%d][%s]\n", NusRxdDataLen, NusRxdData.c_str());
    // The following routines parse and process the incoming commands
    // Every NusRxdData packet starts with a '!' otherwise corrupt/invalid
    if (NusRxdData[0] != '!') {
      DEBUG_PRINTLN(F("-> Error: RXD-packet does not start with a '!'"));
      return; // invalid NusRxdData packet: do not further parse and process
    }
  // RXpacket buffer has IdCode = "S"
  if (NusRxdData[1] == 'S') { // Settings packet
    // Besides what is mechanically possible there are also limits in what is physically pleasant/comfortable
    // The allowed Raw Grade Value min and max values should be within the limits of the mechanically feasible values !!!
    // Minimally allowed Raw Grade Value that should not be exceeded: -5%!
    // default: aRGVmin is default set to 19500
    // Maximally allowed Raw Grade Value that should not be exceeded: 15%!
    // default: aRGVmax is default set to: 21500
    // New Settings values have arrived --> parse, set values and store persistently
    uint8_t iMax = 0, iMin = 0, iPerc = 0, iDispl = 0;
    sscanf((char*)NusRxdData.c_str(), "!S%d;%d;%d;%d;", &iMax, &iMin, &iPerc, &iDispl);
    // set Ascent Grade Limit to aRGVmax
    iMax = constrain(iMax, 0, RGVMAX_GRADE);
    aRGVmax = map(iMax, 0, RGVMAX_GRADE, 20000, RGVMAX);
    // set Descent Grade Limit to aRGVmin
    iMin = constrain(iMin, 0, RGVMIN_GRADE); // Notice: positive value!
    aRGVmin = map(iMin, RGVMIN_GRADE, 0, RGVMIN, 20000);
    // set Road Grade Change Factor
    GradeChangeFactor = iPerc;
    // set OledDisplaySelection
    OledDisplaySelection = iDispl;
    // LittleFS for persistent storage of these values
    setPRSdata();
    // LittleFS --------------------------------------
    DEBUG_PRINT(F(" Settings: Max: ")); DEBUG_PRINT(iMax);
    DEBUG_PRINT(F(" Min: ")); DEBUG_PRINT(iMin);
    DEBUG_PRINT(F(" Perc: ")); DEBUG_PRINT(iPerc);
    DEBUG_PRINT(F(" Displ: ")); DEBUG_PRINTLN(iDispl);
    // Confirm to the PHONE: settings rcvd and set to persistent
    DEBUG_PRINTF("Server Sends NUS TXD Confirm message: Done!\n");
    server_NUS_Txd_Chr->setValue("!SDone!;");
    server_NUS_Txd_Chr->notify();
    return; // Settings rcvd and set to persistent
  }
  // Manual Control Buttons Up Down get parsed and processed!
  // ONLY when the Actuator plus sensor are working well!
  // i.e. low level up/down movement functions work !!
  if (NusRxdData[1] == 'U' && IsBasicMotorFunctions) {
    DEBUG_PRINTLN("-> Set motor UPward moving!");
    RawgradeValue = RawgradeValue + 100;
    SetManualGradePercentValue();
    ShowSlopeTriangleOnOled();
    return;
  }
  if (NusRxdData[1] == 'D' && IsBasicMotorFunctions) {
    DEBUG_PRINTLN("-> Set motor DOWNward moving!");
    RawgradeValue = RawgradeValue - 100;
    SetManualGradePercentValue();
    ShowSlopeTriangleOnOled();
    return;
  } 
  server_NUS_Txd_Chr->setValue("!UOut of Order!;");
  server_NUS_Txd_Chr->notify();
  DEBUG_PRINTF("\nServer Sends NUS TXD Error message: Out of Order!\n");
  }; // onWrite
}; 

void server_NUS_Txd_Persistent_Settings(void) {
    // Send persistent stored values to Mobile Phone for correct Settings!
    // recalculate the values for use on the Phone
    uint8_t TXpacketBuffer[16] = { 0 };
    int iMax, iMin, iPerc, iDispl;
    // set within limits
    aRGVmax = constrain(aRGVmax, 0, RGVMAX);
    aRGVmin = constrain(aRGVmin, 0, RGVMIN);
    // set aRGVmax to Ascent Grade Limit in whole number
    iMax = map(aRGVmax, 20000, RGVMAX, 0, RGVMAX_GRADE);
    // set aRGVmin to Descent Grade Limit in whole number
    iMin = map(aRGVmin, RGVMIN, 20000, RGVMIN_GRADE, 0);
    // set GradeChangeFactor to Road Grade Change Factor
    iPerc = GradeChangeFactor;
    iDispl = OledDisplaySelection;
    sprintf((char*)TXpacketBuffer, "!S%d;%d;%d;%d;", iMax, iMin, iPerc, iDispl);
    // send these persistent data to the Settings page on the smartphone
    server_NUS_Txd_Chr->notify(TXpacketBuffer, sizeof(TXpacketBuffer));
    DEBUG_PRINTF("Server Sends NUS TXD Persistent settings to Phone: [%s]\n", (char*)TXpacketBuffer);
}

// Handler class for Server NUS Txd Characteristic actions limited to onSubscribe
class server_NUS_Txd_Callback: public NimBLECharacteristicCallbacks {
/*  We only define onSubscribe !!!
    void onRead(NimBLECharacteristic* pCharacteristic);
    void onWrite(NimBLECharacteristic* pCharacteristic);
    void onNotify(NimBLECharacteristic* pCharacteristic);    
    void onStatus(NimBLECharacteristic* pCharacteristic, Status status, int code);
*/  
  void onSubscribe(NimBLECharacteristic* pCharacteristic, ble_gap_conn_desc* desc, uint16_t subValue) {
          String str = "Central Updated CCCD -->";
        if(subValue == 0) {
            str += " Notify/Indicate Disabled for Char:";
        }else if(subValue == 1) {
            str += " Notify Enabled for Char:";
        } else if(subValue == 2) {
            str += " Indicate Enabled for Char:";
        } else if(subValue == 3) {
            str += " Notify & Indicate Enabled for Char:";
        }
        DEBUG_PRINTF("%s", str.c_str());
        str = std::string(pCharacteristic->getUUID()).c_str();
        DEBUG_PRINTF(" [%s]\n", str.c_str());

        if(subValue == 1) {
          server_NUS_Txd_Persistent_Settings();
        }
    };
};

void server_setupNUS(void)
{
    server_NordicUart_Service = pServer->createService(UUID_NUS_SERVICE);
    server_NUS_Rxd_Chr = server_NordicUart_Service->createCharacteristic(UUID_NUS_CHR_RXD, 
                                                                            NIMBLE_PROPERTY::WRITE_NR); // Write with No response !!
    server_NUS_Rxd_Chr->setCallbacks(new server_NUS_Rxd_Chr_callback()); 
    server_NUS_Txd_Chr = server_NordicUart_Service->createCharacteristic(UUID_NUS_CHR_TXD, 
                                                                            NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY);
    server_NUS_Txd_Chr->setCallbacks(new server_NUS_Txd_Callback()); //NIMBLE
    server_NordicUart_Service->start();
}

void server_setupGA(void)
{
  // Set the Generic Access Appearance value from default: [0] --> Unknown to [1152] --> Generic Cycling
    int RespErr = ble_svc_gap_device_appearance_set(client_GA_Appearance_Value);
    if(RespErr == 0) {
      DEBUG_PRINTF("Successfully Set Generic Access Appearance Chr value to:  [%d] Generic Cycling\n", client_GA_Appearance_Value); 
    } else {
      DEBUG_PRINTLN("Unable to Set Generic Access Appearance Chr value!");      
    } 
  // Set Generic Access Device Name Chr to a value
    RespErr = ble_svc_gap_device_name_set((const char*)client_GA_DeviceName_Str.c_str());
    if(RespErr == 0) {
      DEBUG_PRINTF("Successfully Set Generic Access Device Name Chr value to: [%s]\n", client_GA_DeviceName_Str.c_str()); 
    } else {
      DEBUG_PRINTLN("Unable to Set Generic Access Device Name Chr value!");      
    } 
}

void server_setupDIS(void)
{
    server_DeviceInformation_Service = pServer->createService(UUID16_SVC_DEVICE_INFORMATION);
    server_DIS_ModelNumber_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_MODEL_NUMBER_STRING, 
                                                                            NIMBLE_PROPERTY::READ);
    server_DIS_ModelNumber_Chr->setValue(client_DIS_ModelNumber_Str);
    server_DIS_SerialNumber_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_SERIAL_NUMBER_STRING, 
                                                                            NIMBLE_PROPERTY::READ);
    server_DIS_SerialNumber_Chr->setValue(client_DIS_SerialNumber_Str);
    server_DIS_ManufacturerName_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_MANUFACTURER_NAME_STRING, 
                                                                            NIMBLE_PROPERTY::READ);                                                                                        
    server_DIS_ManufacturerName_Chr->setValue(client_DIS_Manufacturer_Str);
    /*
    server_DIS_Firmware_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_FIRMWARE_REVISION_STRING, 
                                                                            NIMBLE_PROPERTY::READ);
    server_DIS_Hardware_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_HARDWARE_REVISION_STRING, 
                                                                            NIMBLE_PROPERTY::READ);
    server_DIS_Software_Chr = server_DeviceInformation_Service->createCharacteristic(UUID16_CHR_SOFTWARE_REVISION_STRING, 
                                                                            NIMBLE_PROPERTY::READ);
    // Set Device Information varariables   
    server_DIS_Hardware_Chr->setValue(client_DIS_Hardware_Str);
    server_DIS_Firmware_Chr->setValue(client_DIS_Firmware_Str);
    server_DIS_Software_Chr->setValue(client_DIS_Software_Str);
    */
    server_DeviceInformation_Service->start();
}


void client_Set_All_NotificationIndication(bool IsEnable)
{   
if(IsEnable) { // Enable Client Char's
  if( pRemote_Wahoo_ControlPoint_Chr != nullptr) { // Check: Is it exposed?
            pRemote_Wahoo_ControlPoint_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)indicationOn, 2, true);
         }
  if ( pRemote_CSC_Measurement_Chr != nullptr ) {
            pRemote_CSC_Measurement_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOn, 2, true); 
          }          
  if ( pRemote_CP_Measurement_Chr != nullptr ) {
            pRemote_CP_Measurement_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOn, 2, true); 
          }                     
  DEBUG_PRINTLN("All Client (Trainer) Characteristics are Notify/Indicate Enabled!");
  } else { // Disable Client Char's
  if( pRemote_Wahoo_ControlPoint_Chr != nullptr) { // Check: Is it exposed?
            pRemote_Wahoo_ControlPoint_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)indicationOff, 2, true); 
          }
  if ( pRemote_CSC_Measurement_Chr != nullptr ) {
            pRemote_CSC_Measurement_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOff, 2, true); 
          }                      
  if ( pRemote_CP_Measurement_Chr != nullptr ) {
            pRemote_CP_Measurement_Chr->getDescriptor(BLEUUID((uint16_t)0x2902))->writeValue((uint8_t*)notificationOff, 2, true); 
          }
  DEBUG_PRINTLN("All Client (Trainer) Characteristics are Notify/Indicate Disabled!");
  }
} // end

void loop() { // loop() is used to start sort of Callback functions
 // If the flag "DoCallClientEnable" is true, we enable Notify and Indicate on ALL Client Char's of BLE server!
  if(Trainer.IsConnected && DoCallClientEnable) {
    DoCallClientEnable = false; 
    client_Set_All_NotificationIndication(true);
  }
 // If the flag "DoCallClientDisable" is true, we disable Notify and Indicate on ALL Client Char's of BLE server!
  if(Trainer.IsConnected && DoCallClientDisable) {
    DoCallClientDisable = false; 
    client_Set_All_NotificationIndication(false);
  }
  // If the flag "doClientConnectCall" is true, we connect to the BLE server!
  if (doClientConnectCall) {
    doClientConnectCall = false;
    bool dummy = client_Connect_Callback();
  } // doClientConnectCall
  // If the flag "RestartScanningOnDisconnect" is true, we start scanning for a (new) BLE Server!  
  if(RestartScanningOnDisconnect) {
        //DEBUG_PRINTLN("Trying to set indicate off!");
        //server_Wahoo_ControlPoint_Chr->getDescriptorByUUID(BLEUUID((uint16_t)0x2902))->setValue((uint8_t*)indicationOff, 2);    
        pBLEScan->clearResults();   // delete results from BLEScan buffer to release memory    
        DEBUG_PRINTLN("Client Restarts Scanning for Server Device (Wahoo) with CPS!");
        RestartScanningOnDisconnect = false;        
        pBLEScan->start(0, false);
  } 
 delay(200);  // DO NOT REMOVE or Task watchdog will be triggered!!!   
} // End of loop

@Fukkie-S
Copy link
Author

Fukkie-S commented Nov 29, 2024

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 271414342, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4688
load:0x40078000,len:15460
ho 0 tail 12 room 4
load:0x40080400,len:4
load:0x40080404,len:3196
entry 0x400805a4
[ 10][D][esp32-hal-cpu.c:263] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[ 18][I][esp32-hal-psram.c:102] psramAddToHeap(): PSRAM added to the heap.
=========== Before Setup Start ===========
Chip Info:

Model : ESP32
Package : PICO-V3-02
Revision : 3.01
Cores : 2
CPU Frequency : 240 MHz
XTAL Frequency : 40 MHz
Features Bitfield : 0x000000b3
Embedded Flash : Yes
Embedded PSRAM : Yes
2.4GHz WiFi : Yes
Classic BT : Yes
BT Low Energy : Yes
IEEE 802.15.4 : No

INTERNAL Memory Info:

Total Size : 264160 B ( 258.0 KB)
Free Bytes : 232088 B ( 226.6 KB)
Allocated Bytes : 26728 B ( 26.1 KB)
Minimum Free Bytes: 227316 B ( 222.0 KB)
Largest Free Block: 110580 B ( 108.0 KB)

SPIRAM Memory Info:

Total Size : 2097152 B (2048.0 KB)
Free Bytes : 2095104 B (2046.0 KB)
Allocated Bytes : 0 B ( 0.0 KB)
Minimum Free Bytes: 2095104 B (2046.0 KB)
Largest Free Block: 2064372 B (2016.0 KB)
Bus Mode : QSPI

Flash Info:

Chip Size : 8388608 B (8 MB)
Block Size : 65536 B ( 64.0 KB)
Sector Size : 4096 B ( 4.0 KB)
Page Size : 256 B ( 0.2 KB)
Bus Speed : 80 MHz
Bus Mode : DIO

Partitions Info:

            nvs : addr: 0x00009000, size:    20.0 KB, type: DATA, subtype: NVS
        otadata : addr: 0x0000E000, size:     8.0 KB, type: DATA, subtype: OTA
           app0 : addr: 0x00010000, size:  3264.0 KB, type:  APP, subtype: OTA_0
           app1 : addr: 0x00340000, size:  3264.0 KB, type:  APP, subtype: OTA_1
         spiffs : addr: 0x00670000, size:  1536.0 KB, type: DATA, subtype: SPIFFS
       coredump : addr: 0x007F0000, size:    64.0 KB, type: DATA, subtype: COREDUMP

Software Info:

Compile Date/Time : Nov 25 2024 21:30:58
Compile Host OS : windows
ESP-IDF Version : v5.3.1-638-ga0f798cfc4-dirty
Arduino Version : 3.1.0

Board Info:

Arduino Board : ADAFRUIT_FEATHER_ESP32_V2
Arduino Variant : adafruit_feather_esp32_v2
Arduino FQBN : esp32:esp32:adafruit_feather_esp32_v2:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashSize=8M,PartitionScheme=default_8MB,DebugLevel=debug,PSRAM=enabled,LoopCore=1,EventsCore=1,EraseFlash=none,ZigbeeMode=default
============ Before Setup End ============
ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
------------------------ Version 01.2 --------------------------
SIM32
E (1794) esp_littlefs: ./managed_components/joltwallet__littlefs/src/littlefs/lfs.c:1369:error: Corrupted dir pair at {0x0, 0x1}

E (1795) esp_littlefs: mount failed, (-84)
E (1799) esp_littlefs: Failed to initialize LittleFS
[ 1813][E][LittleFS.cpp:79] begin(): Mounting LittleFS failed! Error: -1
[ 1831][E][vfs_api.cpp:106] exists(): File system is not mounted
[ 1836][E][vfs_api.cpp:23] open(): File system is not mounted
[ 1843][I][esp32-hal-i2c.c:125] i2cInit(): Initializing I2C Master: sda=22 scl=20 freq=100000
SSD1306 OLED display is running...
[ 4935][W][Wire.cpp:296] begin(): Bus already started in Master Mode.
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
I NimBLEDevice: BLE Host Task Started
I NimBLEDevice: NimBle host synced.
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
D NimBLEServer: >> createService - 6e400001-b5a3-f393-e0a9-e50e24dcca9e
D NimBLEServer: << createService
D NimBLEService: >> start(): Starting service: UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e, handle: 0xffff
D NimBLEService: Adding 2 characteristics for service UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e, handle: 0xffff
D NimBLEService: << start()
Configuring the Server Device Information Service
D NimBLEServer: >> createService - 0x180a
D NimBLEServer: << createService
D NimBLEService: >> start(): Starting service: UUID: 0x180a, handle: 0xffff
D NimBLEService: Adding 3 characteristics for service UUID: 0x180a, handle: 0xffff
D NimBLEService: << start()
Configuring the Server Cycle Power Service
D NimBLEServer: >> createService - 0x1818
D NimBLEServer: << createService
D NimBLECharacteristic: >> setValue: length=1, data=0c, characteristic UUID=0x2a5d
D NimBLECharacteristic: << setValue
D NimBLEService: >> start(): Starting service: UUID: 0x1818, handle: 0xffff
D NimBLEService: Adding 4 characteristics for service UUID: 0x1818, handle: 0xffff
D NimBLEService: << start()
Configuring the Server Cadence and Speed Service
D NimBLEServer: >> createService - 0x1816
D NimBLEServer: << createService
D NimBLECharacteristic: >> setValue: length=1, data=0c, characteristic UUID=0x2a5d
D NimBLECharacteristic: << setValue
D NimBLEService: >> start(): Starting service: UUID: 0x1816, handle: 0xffff
D NimBLEService: Adding 3 characteristics for service UUID: 0x1816, handle: 0xffff
D NimBLEService: << start()
Setting up the Server advertising payload(s)
D NimBLEDevice: >> setPower: 7 (type: 11)
D NimBLEDevice: << setPower
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
D NimBLEAdvertising: >> Advertising start: customAdvData: 0, customScanResponseData: 0
primary service
uuid 0x1800
handle 1
end_handle 5
characteristic
uuid 0x2a00
def_handle 2
val_handle 3
min_key_size 0
flags [READ]
characteristic
uuid 0x2a01
def_handle 4
val_handle 5
min_key_size 0
flags [READ]
primary service
uuid 0x1801
handle 6
end_handle 9
characteristic
uuid 0x2a05
def_handle 7
val_handle 8
min_key_size 0
flags [INDICATE]
ccc descriptor
uuid 0x2902
handle 9
min_key_size 0
flags [READ|WRITE]
primary service
uuid 6e400001-b5a3-f393-e0a9-e50e24dcca9e
handle 10
end_handle 15
characteristic
uuid 6e400002-b5a3-f393-e0a9-e50e24dcca9e
def_handle 11
val_handle 12
min_key_size 0
flags [WRITE_NO_RSP]
characteristic
uuid 6e400003-b5a3-f393-e0a9-e50e24dcca9e
def_handle 13
val_handle 14
min_key_size 0
flags [READ|NOTIFY]
ccc descriptor
uuid 0x2902
handle 15
min_key_size 0
flags [READ|WRITE]
primary service
uuid 0x180a
handle 16
end_handle 22
characteristic
uuid 0x2a24
def_handle 17
val_handle 18
min_key_size 0
flags [READ]
characteristic
uuid 0x2a25
def_handle 19
val_handle 20
min_key_size 0
flags [READ]
characteristic
uuid 0x2a29
def_handle 21
val_handle 22
min_key_size 0
flags [READ]
primary service
uuid 0x1818
handle 23
end_handle 33
characteristic
uuid 0x2a63
def_handle 24
val_handle 25
min_key_size 0
flags [READ|NOTIFY]
ccc descriptor
uuid 0x2902
handle 26
min_key_size 0
flags [READ|WRITE]
characteristic
uuid 0x2a65
def_handle 27
val_handle 28
min_key_size 0
flags [READ]
characteristic
uuid 0x2a5d
def_handle 29
val_handle 30
min_key_size 0
flags [READ]
characteristic
uuid a026e005-0a7d-4ab3-97fa-f1500f9feb8b
def_handle 31
val_handle 32
min_key_size 0
flags [WRITE|INDICATE]
ccc descriptor
uuid 0x2902
handle 33
min_key_size 0
flags [READ|WRITE]
primary service
uuid 0x1816
handle 34
end_handle 41
characteristic
uuid 0x2a5b
def_handle 35
val_handle 36
min_key_size 0
flags [READ|NOTIFY]
ccc descriptor
uuid 0x2902
handle 37
min_key_size 0
flags [READ|WRITE]
characteristic
uuid 0x2a5c
def_handle 38
val_handle 39
min_key_size 0
flags [READ]
characteristic
uuid 0x2a5d
def_handle 40
val_handle 41
min_key_size 0
flags [READ]
D NimBLEAdvertising: << Advertising start
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
W NimBLEScan: Blocking scan called with duration = forever
D NimBLEScan: >> start: duration=0
D NimBLEScan: << start()
I NimBLEScan: New advertiser: e5:39:1a:8c:c4:cf
I NimBLEScan: Updated advertiser: e5:39:1a:8c:c4:cf
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
D NimBLEScan: >> stop()
D NimBLEScan: << stop()

Failed to connect Trainer! Reset ESP32 and try again!

@Fukkie-S
Copy link
Author

The Nimble version I use at this moment is 1.4.2
image

@Fukkie-S
Copy link
Author

image

@Fukkie-S
Copy link
Author

Did some testing with V11 (see bold) and everything went perfect.

Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [Sim ESP32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: Found!
-> Client Reads Device Name: [KICKR CORE 287D]
-> Client Reads Appearance: [0]
Client Device Information Service: Found!
-> Client Reads Manufacturer Name: [Wahoo Fitness]
-> Client Reads Serial Number: [221001365]
Client_CyclingPower_Service: Found!
Client_Wahoo_ControlPoint_Chr: Found!
Client_CP_Measurement_Chr: Found!
Client_CP_Feature_Chr: Found!
-> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
Client_CP_Location_Chr: Found!
-> Client Reads CP Location Sensor: Loc#: 0 Other
Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

@Berg0162
Copy link
Owner

Berg0162 commented Nov 30, 2024

Dear Jan-Willem,
You are doing fine! Don't bother about your English that is perfect!
Thanks for all the Info.... I have been comparing v11 and v12, but for now, I do not have any clue why v11 is working and v12 fails!
Please check if you have exactly the same settings in the IDE 2 Tools menu for v11 and v12 when you compile....
You can try v12 with Core Debug Level "None", sometimes a high debug level can cause side effects when timing is critical..
I noticed that you have error messages at the start concerning LittleFS, please take a look at:

// WARNING --------- Uncomment only when strictly necessary!!! ---------
  // Uncomment only the very first time the Simcline code is executed!!!
  /* This creates LittleFS with a root subdirectory /littlefs/
  LittleFS.format();
  DEBUG_PRINTLN("Wipe out all persistent data, including any file(s)....");
  */

change /* into // and */ into //
Run only once (!) and than restore to original section.... The data is stored permanently, so later uploaded programs will have access without the format action!

Have fun!

@Fukkie-S
Copy link
Author

Hi Jörgen,

At last succes.. I did what you advised and after a reset the Wahoo Kickr had a fix with the Sim32. I did a little testdrive in Zwift for testing the Simcline so I had a serial output. Hereby the serial monitor output from V12.

Little other question. For rapid up-down climbs you build in some wait time for simcline to react on the Zwift commands. How can I activate this? Or is it better to have less trainer difficulty?

Regards, groetjes

JW


rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 271414342, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4688
load:0x40078000,len:15460
ho 0 tail 12 room 4
load:0x40080400,len:4
load:0x40080404,len:3196
entry 0x400805a4

ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
------------------------ Version 01.2 --------------------------
SIM32
E (2800) task_wdt: esp_task_wdt_reset(705): task not found
E (2800) task_wdt: esp_task_wdt_reset(705): task not found
E (2801) task_wdt: esp_task_wdt_reset(705): task not found
E (2805) task_wdt: esp_task_wdt_reset(705): task not found
E (2847) task_wdt: esp_task_wdt_reset(705): task not found
E (2848) task_wdt: esp_task_wdt_reset(705): task not found
E (2849) task_wdt: esp_task_wdt_reset(705): task not found
E (2852) task_wdt: esp_task_wdt_reset(705): task not found
E (2896) task_wdt: esp_task_wdt_reset(705): task not found
E (2897) task_wdt: esp_task_wdt_reset(705): task not found
E (2898) task_wdt: esp_task_wdt_reset(705): task not found
E (2901) task_wdt: esp_task_wdt_reset(705): task not found
E (2906) task_wdt: esp_task_wdt_reset(705): task not found
E (2911) task_wdt: esp_task_wdt_reset(705): task not found
E (2916) task_wdt: esp_task_wdt_reset(705): task not found
Wipe out all persistent data, including any file(s)....
ESP32 internally Set new values in persistent storage to: /littlefs/PRSdata -> 21500 19500 200 2
SSD1306 OLED display is running...
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: NOT Found!
Device Information Service: NOT Found!
Mandatory Cycling Power Service: Not Found!

Failed to connect Trainer! Reset ESP32 and try again!
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: Found!
-> Client Reads Device Name: [KICKR CORE 287D]
-> Client Reads Appearance: [0]
Client Device Information Service: Found!
-> Client Reads Manufacturer Name: [Wahoo Fitness]
-> Client Reads Serial Number: [221001365]
Client_CyclingPower_Service: Found!
Client_Wahoo_ControlPoint_Chr: Found!
Client_CP_Measurement_Chr: Found!
Client_CP_Feature_Chr: Found!
-> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
Client_CP_Location_Chr: Found!
-> Client Reads CP Location Sensor: Loc#: 0 Other
Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
All Client (Trainer) Characteristics are Notify/Indicate Enabled!
Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 5.1 % RawgradeValue: 20972
Set Simcline to Percentage: 3.5 % RawgradeValue: 20658
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.3 % RawgradeValue: 20010
Set Simcline to Percentage: 0.4 % RawgradeValue: 20024
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.0 % RawgradeValue: 19942
Set Simcline to Percentage: -0.2 % RawgradeValue: 19910
Set Simcline to Percentage: -0.5 % RawgradeValue: 19850
Set Simcline to Percentage: -1.0 % RawgradeValue: 19750
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.8 % RawgradeValue: 19794
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 2.4 % RawgradeValue: 20424
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 2.9 % RawgradeValue: 20524
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.6 % RawgradeValue: 20062
Set Simcline to Percentage: 0.1 % RawgradeValue: 19962
Set Simcline to Percentage: -0.1 % RawgradeValue: 19932
Set Simcline to Percentage: -0.1 % RawgradeValue: 19922
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: -0.2 % RawgradeValue: 19918
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 2.6 % RawgradeValue: 20470
Set Simcline to Percentage: 5.8 % RawgradeValue: 21100
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 5.7 % RawgradeValue: 21082
Set Simcline to Percentage: 4.9 % RawgradeValue: 20938
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.6 % RawgradeValue: 20064
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.4 % RawgradeValue: 19866
Set Simcline to Percentage: -0.2 % RawgradeValue: 19904
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: -0.2 % RawgradeValue: 19918
Set Simcline to Percentage: -0.1 % RawgradeValue: 19936
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 2.6 % RawgradeValue: 20478
Set Simcline to Percentage: 4.2 % RawgradeValue: 20786
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 2.2 % RawgradeValue: 20390
Set Simcline to Percentage: -0.1 % RawgradeValue: 19926
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.8 % RawgradeValue: 19794
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -1.1 % RawgradeValue: 19724
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.3 % RawgradeValue: 19900
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -1.6 % RawgradeValue: 19632
Set Simcline to Percentage: -1.6 % RawgradeValue: 19626
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -0.5 % RawgradeValue: 19842
Set Simcline to Percentage: 0.2 % RawgradeValue: 19980
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
Set Simcline to Percentage: 0.7 % RawgradeValue: 20086
Set Simcline to Percentage: 0.9 % RawgradeValue: 20138
Set Simcline to Percentage: 0.9 % RawgradeValue: 20126
Set Simcline to Percentage: 0.9 % RawgradeValue: 20120
Set Simcline to Percentage: 0.9 % RawgradeValue: 20128
Set Simcline to Percentage: 0.9 % RawgradeValue: 20128
Set Simcline to Percentage: 0.1 % RawgradeValue: 19974
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Error: NOT responding to Wahoo Control Point -> Write Value!
Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
Client Restarts Scanning for Server Device (Wahoo) with CPS!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
--> ESP32 Server is advertising again!
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: NOT Found!
Device Information Service: NOT Found!
Mandatory Cycling Power Service: Not Found!

@Fukkie-S
Copy link
Author

Hi Jörgen,

I did yesterday a comparison between the latest Tacx/FTMS and the V11-V12 Wahoo Kickr scripts in Winmerge and this line in V12 is different than in the other scripts. Did you have a special reason to write this line in V12? Or is this line not important for pairing with the Wahoo client?

VerschilV11-V12

@Berg0162
Copy link
Owner

Dear Jan-Willem,
Finally I have found what is different in version v12 with respect to v11
If you look at the line 618 you will see the following:

while(pBLEScan->isScanning()) ; // Wait until scanning is finished

I think it worth the try, to comment that line completely so change it into:

//while(pBLEScan->isScanning()) ; // Wait until scanning is finished

@Berg0162
Copy link
Owner

Berg0162 commented Nov 30, 2024

Did you install the Simcline App on an Android phone or are you an Iphone lover?

I just saw that you found it yourself as well! Good work!

@Fukkie-S
Copy link
Author

Fukkie-S commented Nov 30, 2024 via email

@Fukkie-S
Copy link
Author

Fukkie-S commented Nov 30, 2024 via email

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 1, 2024

Ok, this morning I want to ride a Zwift ride and again difficulties with the Kickr connection. Tried to go back to the earlier version (v11) but it wasn't succesfull. I see in the monitor a successful fix and some time later a client disconnection. Than I remembered the earlier NimBLE library update and reversed it from 1.43 to 1.40. This give me immidiatly succes and now for several times i've a immidiate fix. (second output)

1__________________________
ESP32 internally Set new values in persistent storage to: /littlefs/PRSdata -> 21500 19500 200 2
SSD1306 OLED display is running...
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: Found!
-> Client Reads Device Name: [KICKR CORE 287D]
-> Client Reads Appearance: [0]
Client Device Information Service: Found!
-> Client Reads Manufacturer Name: [Wahoo Fitness]
Mandatory Cycling Power Service: Not Found!

Failed to connect Trainer! Reset ESP32 and try again!
Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!

2_______________________

ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
------------------------ Version 01.2 --------------------------
SIM32
E (1223) esp_littlefs: ./managed_components/joltwallet__littlefs/src/littlefs/lfs.c:1369:error: Corrupted dir pair at {0x0, 0x1}

E (1223) esp_littlefs: mount failed, (-84)
E (1227) esp_littlefs: Failed to initialize LittleFS
E (2813) task_wdt: esp_task_wdt_reset(705): task not found
E (2819) task_wdt: esp_task_wdt_reset(705): task not found
E (2868) task_wdt: esp_task_wdt_reset(705): task not found
E (2869) task_wdt: esp_task_wdt_reset(705): task not found
E (2870) task_wdt: esp_task_wdt_reset(705): task not found
E (2872) task_wdt: esp_task_wdt_reset(705): task not found
E (2921) task_wdt: esp_task_wdt_reset(705): task not found
E (2922) task_wdt: esp_task_wdt_reset(705): task not found
E (2923) task_wdt: esp_task_wdt_reset(705): task not found
E (2927) task_wdt: esp_task_wdt_reset(705): task not found
E (2931) task_wdt: esp_task_wdt_reset(705): task not found
E (2936) task_wdt: esp_task_wdt_reset(705): task not found
E (2942) task_wdt: esp_task_wdt_reset(705): task not found
Wipe out all persistent data, including any file(s)....
SSD1306 OLED display is running...
Simcline >> ERROR << Basic Motor Funtions are NOT working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: Found!
-> Client Reads Device Name: [KICKR CORE 287D]
-> Client Reads Appearance: [0]
Client Device Information Service: Found!
-> Client Reads Manufacturer Name: [Wahoo Fitness]
-> Client Reads Serial Number: [221001365]
Client_CyclingPower_Service: Found!
Client_Wahoo_ControlPoint_Chr: Found!
Client_CP_Measurement_Chr: Found!
Client_CP_Feature_Chr: Found!
-> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
Client_CP_Location_Chr: Found!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: Found!
-> Client Reads Device Name: [KICKR CORE 287D]
-> Client Reads Appearance: [0]
Client Device Information Service: Found!
-> Client Reads Manufacturer Name: [Wahoo Fitness]
-> Client Reads Serial Number: [221001365]
Client_CyclingPower_Service: Found!
Client_Wahoo_ControlPoint_Chr: Found!
Client_CP_Measurement_Chr: Found!
Client_CP_Feature_Chr: Found!
-> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
Client_CP_Location_Chr: Found!
-> Client Reads CP Location Sensor: Loc#: 0 Other
Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
All Client (Trainer) Characteristics are Notify/Indicate Enabled!
Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 2.4 % RawgradeValue: 20438
Set Simcline to Percentage: -1.1 % RawgradeValue: 19730
-> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
Set Simcline to Percentage: -1.1 % RawgradeValue: 19728
Set Simcline to Percentage: -1.1 % RawgradeValue: 19726
Set Simcline to Percentage: -1.1 % RawgradeValue: 19726
Set Simcline to Percentage: -1.1 % RawgradeValue: 19728
Set Simcline to Percentage: -1.3 % RawgradeValue: 19684
Set Simcline to Percentage: -1.4 % RawgradeValue: 19674
Set Simcline to Percentage: -1.2 % RawgradeValue: 19706
Set Simcline to Percentage: -1.0 % RawgradeValue: 19748
Set Simcline to Percentage: -0.9 % RawgradeValue: 19778
Set Simcline to Percentage: -0.8 % RawgradeValue: 19784
Set Simcline to Percentage: -0.8 % RawgradeValue: 19790
Set Simcline to Percentage: -0.8 % RawgradeValue: 19796
Set Simcline to Percentage: -0.7 % RawgradeValue: 19812
Set Simcline to Percentage: -0.6 % RawgradeValue: 19824
Set Simcline to Percentage: -0.6 % RawgradeValue: 19836
Set Simcline to Percentage: -0.5 % RawgradeValue: 19852
Set Simcline to Percentage: -0.3 % RawgradeValue: 19900
Set Simcline to Percentage: -0.1 % RawgradeValue: 19922
Set Simcline to Percentage: -0.1 % RawgradeValue: 19940
Set Simcline to Percentage: 0.0 % RawgradeValue: 19956
Set Simcline to Percentage: 0.3 % RawgradeValue: 20000
Set Simcline to Percentage: 0.3 % RawgradeValue: 20010
Set Simcline to Percentage: 0.3 % RawgradeValue: 20010
Set Simcline to Percentage: 0.3 % RawgradeValue: 20006
Set Simcline to Percentage: 0.2 % RawgradeValue: 19980
Set Simcline to Percentage: 0.0 % RawgradeValue: 19958
Set Simcline to Percentage: 0.0 % RawgradeValue: 19954
Set Simcline to Percentage: 0.0 % RawgradeValue: 19956
Set Simcline to Percentage: -1.1 % RawgradeValue: 19738

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 1, 2024

Another thing i found was when Zwift have a fix with Sim32 and Kickr it rizes Simcline to +2% - +3%. Anyone who knowes to fix this? Is it a setiing in Zwift? Or in Zwift preferences?

On the other hand, when I connect to Simcline Compagnion stays it at 0%.

ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
All Client (Trainer) Characteristics are Notify/Indicate Enabled!
Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710
Set Simcline to Percentage: 3.8 % RawgradeValue: 20710

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 1, 2024

Hi Jörgen,

I found the section with code for a smoother ride when the road incline moves very quickly up and down. as in Titan Groves
Is it a question of simply give it more milliseconds delay?

Gr JW
_________________________________-----
// EMA filter for smoothing quickly fluctuating Target Position values see: Zwift Titan Grove
#ifdef EMA_ALPHA
TargetPosition = EMA_TargetPositionFilter(TargetPosition);
#endif
if(IsBasicMotorFunctions) {
xSemaphoreTake(xSemaphore, portMAX_DELAY);
lift.SetTargetPosition(TargetPosition);
xSemaphoreGive(xSemaphore);
#ifdef MOVEMENTDEBUG
DEBUG_PRINTF("RawgradeValue: %05d Grade percent: %03.1f%% ", RawgradeValue, gradePercentValue);
DEBUG_PRINTF("TargetPosition: %03d\n", TargetPosition, DEC);
#endif
}
}

void xControlUpDownMovement(void *arg) {
// Check "continuously" the Actuator Position and move Motor Up/Down until target position is reached
int OnOffsetAction = 0;
const TickType_t xDelay = 110 / portTICK_PERIOD_MS; // Block for 110ms < 10Hz sample rate of VL6180X
while(1) {
if(xSemaphoreTake(xSemaphore, portMAX_DELAY)) {
// BLE channels can interrupt and consequently target position changes on-the-fly !!
// We do not want changes in TargetPosition during one of the following actions!!!
OnOffsetAction = lift.GetOffsetPosition(); // calculate offset to target and determine action
switch (OnOffsetAction)
{
case 0 :
lift.brakeActuator();
#ifdef MOVEMENTDEBUG
DEBUG_PRINTLN(F(" -> Brake"));
#endif
break;
case 1 :
lift.moveActuatorUp();
#ifdef MOVEMENTDEBUG
DEBUG_PRINTLN(F(" -> Upward"));
#endif
break;
case 2 :
lift.moveActuatorDown();
#ifdef MOVEMENTDEBUG
DEBUG_PRINTLN(F(" -> Downward"));
#endif
break;
case 3 :
// Timeout --> OffsetPosition is undetermined --> do nothing and brake
lift.brakeActuator();
#ifdef MOVEMENTDEBUG
DEBUG_PRINTLN(F(" -> Timeout"));
#endif
break;
} // switch
xSemaphoreGive(xSemaphore);
}
vTaskDelay(xDelay);
} // while
} // end

@Berg0162
Copy link
Owner

Berg0162 commented Dec 1, 2024

Ok, this morning I want to ride a Zwift ride and again difficulties with the Kickr connection. Tried to go back to the earlier version (v11) but it wasn't succesfull. I see in the monitor a successful fix and some time later a client disconnection. Than I remembered the earlier NimBLE library update and reversed it from 1.43 to 1.40. This give me immidiatly succes and now for several times i've a immidiate fix. (second output)

I am not aware of critical differences between 1.43, 1.42 and 1.40. I do not see any error messages that point in this direction, so I think it is a coincidence....

1__________________________
ESP32 internally Set new values in persistent storage to: /littlefs/PRSdata -> 21500 19500 200 2

Have you changed permanently the GradeChangeFactor to 200 ? For what reason? Are you sure it is not causing side-effects?

2_______________________

E (1223) esp_littlefs: ./managed_components/joltwallet__littlefs/src/littlefs/lfs.c:1369:error: Corrupted dir pair at {0x0, 0x1}
E (2942) task_wdt: esp_task_wdt_reset(705): task not found
Wipe out all persistent data, including any file(s)....
SSD1306 OLED display is running...

How come "format" is activated here? Do you have problems when switching between versions? Is LittleFS storage corrupted all the time?

Another thing i found was when Zwift have a fix with Sim32 and Kickr it rizes Simcline to +2% - +3%. Anyone who knowes to fix this? Is it a setiing in Zwift? Or in Zwift preferences?

Zwift has the strange habit to send after connection with the server a start value for the grade that will set the start resistance of the trainer. It will send new values when the ride starts!

On the other hand, when I connect to Simcline Compagnion stays it at 0%.

Can you be more specific what value you mean on the App? The Simcline app does not ever get grade information at all!

I found the section with code for a smoother ride when the road incline moves very quickly up and down. as in Titan Groves
Is it a question of simply give it more milliseconds delay?

YOU DO NOT WANT to interfere with vTaskDelay(xDelay);

What problem do you want to solve?

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 1, 2024

Thank for replying, Jörgen. appreciate it very much.

I was a bit disapointed but this search to reliability is part of the SIMdeal. I will be honest to you, had connected everything and want to ride a Join workout. Zwift put my frontend of the bike in the sky and when you have to do 2,5 our workout it isn't very pretty to ride. So i stopped the workout and chose a flat route to ride and stopped again when Simcline was down to 0 degrees. Than I want to do my workout and Kickr lost its connection. Had to start from skratch, Simcline off, Kickr off, Laptop off. Start Kickr, start simcline, look at the blue led if there's a fix and do some paddeling to make data. Next start the laptop en when Zwift and when i look behind i see Kickr's blue led blinking again. This procedure repeat again til I went down to pickup my other laptop en connect to the Featherboard to see what was happening in the Serial Output.

So, did no workout but troubleshooting instead :-).

Here my answers

Regards/Groetjes

JW

Ps: lesson learned, with the strange Zwift habid, think its better to ride workouts without Simcline.

1--
Nimble 140-141-142, I was searching why V11 nor V12 closes client Kickr. A step of troubleshooting, maybe it was the library.
2--
My excuses for forgetting to reset GradeChangeFactor from 200 to 100. Thinking it was a solution for the halved roadgrade values on the oled screen. But it wasn't afterall. My bad for this.
3--
The LittleFS settings in V12 are these:
image
Thought you advised me in a comment above to do this but i see the mistake. I changed it in:
LittleFS.begin();
// WARNING --------- Uncomment only when strictly necessary!!! ---------
// Uncomment only the very first time the Simcline code is executed!!!
// This creates LittleFS with a root subdirectory /littlefs/
LittleFS.format();
DEBUG_PRINTLN("Wipe out all persistent data, including any file(s)....");
//
// Get or set (first time only) the values of relevant and crucial variables
// to persistence, whith the Companion App the user can set these on the fly!
// Get or set the values of aRGVmax, aRGVmin, GradeChangeFactor in PRSdata.
if (!getPRSdata()) {
setPRSdata();

Is it ok now?
4--
Zwift habid, i can live with it, no problem
5--
What problems I like to solve? None i think, but I was wondering if i can perform, with rides like Titan's Grove, less up/down action from Simcline. But if you didn't advice this to change, no problem.

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

Best Jan-Willem,
Even onder ons! Ik waardeer enorm je enthousiasme en inzet om te komen tot een eigen betrouwbare Simcline met een relatief "oude" Wahoo Kickr. Mijn eigen Tacx Neo (eerste generatie, FEC over BLE) is ruim 10 jaar oud, dat is overigens de enige trainer die ik bezit! De code voor de Wahoo Kickr is jaren geleden tot stand gekomen met een virtuele Canadese vriend Christian B. die vroeg om een versie voor zijn Kickr... Ik heb de code de afgelopen jaren niet aangeraakt in de veronderstelling dat alles goed werkt, anders had Christian wel geklaagd. Ik ben vooral bezig geweest met de FTMS versie waar de meeste belangstelling voor is. Meer dan 20 mij bekende en veel onbekende gebruikers, knutselaars (eigen versie) en nabouwers. Alle "moderne" trainers hebben FTMS als protocol, vandaar. Om te komen tot een betrouwbare versie (voor jouw situatie) stel ik voor om vanaf heden, gestructureerd en stap voor stap, de lijst met "problemen" af te werken en pas daarna het werkgebied uit te breiden. Wat vind je daarvan?
Met vriendelijke groeten, Jörgen.

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 2, 2024

Hoi Jörgen,

Goed idee. Inmiddels ben ik al weer een hoop wijzer geworden door het lezen over het Climb onderwerp. Ik ben van plan om de Arduino versie en bibliotheek te installeren op de laptop waar Zwift op geïnstalleerd staat om zo de ritten te kunnen loggen. Gisterenavond had ik onder het trainen 2x een Kickr die de verbinding verloor. Dat kon ik wel weer repareren door Simcline te resetten maar ik zou toch graag willen weten wat er nu precies gebeurd. Dan kunnen we wellicht verbindingsproblemen uit het log vissen.

Het project is veel uitgebreider dan ik had verwacht maar ik pak de uitdaging met 2 handen aan.

Het komt goed. 😉

Groetjes JW

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

Wacht a.u.b. met weer een nieuwe kaart te trekken, first things first! Eerst even dit spel uitspelen! Stap voor stap, toch?
Laten we eerst even vaststellen wat het speelveld is. Kun je beschrijven welke IT-componenten je gebruikt en in welke volgorde je deze inzet om tot een werkende versie te komen? Gebruik je Zwift Companion App en wanneer? Gebruik je de Simcline App?Verder wil ik heel graag een foto of een screenshot van de Arduino IDE window met het geladen Simcline v12 programma, terwijl het TOOLS menu is uitgeklapt.

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

Onderdeel van het speelveld is ook versie 1.2

Aub zie erop toe dat in v12 de volgende secties er precies zo uitzien als:

// -------------------------------------------------------------------------------------------
// COMPILER DIRECTIVE to allow/suppress DEBUG messages that help debugging...
// Uncomment general "#define DEBUG" to activate
#define DEBUG
// Include these debug utility macros in all cases!
#include "DebugUtils.h"
#ifdef DEBUG
//  Restrict activating one or more of the following DEBUG directives --> process intensive 
//  The overhead can lead to spurious side effects and a loss of quality of service handling!!
//#define DEBUG_CP_MEASUREMENT    // If defined allows for parsing and decoding the Cycling Power Data
//#define DEBUG_CSC_MEASUREMENT   // If defined allows for parsing and decoding the Cycling Speed and Cadence Data
//#define DEBUG_WAHOO_CONTROLPOINT_RESPONSE     // If defined allows for parsing the Data
//#define DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA  // If defined allows for parsing and decoding Data
//#define MOVEMENTDEBUG 
#endif

int GradeChangeFactor = 100; // 100% means no effect, 50% means only halved up/down steps --> Road Grade Change Factor

Tussen haakjes, heb je je gerealiseerd dat dankzij de 200 waarde in jouw code de (onverwachte) Zwift start waarde van 3.8 naar 2 * 3.8 = 7.6 ging toen je in ERG Mode ging trainen?

  // LittleFS start the Littlefilesystem lib and see if we have persistent data ----
  // This opens LittleFS with a root subdirectory /littlefs/
  LittleFS.begin();
  // WARNING --------- Uncomment only when strictly necessary!!! ---------
  // Uncomment only the very first time the Simcline code is executed!!!
  /* This creates LittleFS with a root subdirectory /littlefs/
  LittleFS.format();
  DEBUG_PRINTLN("Wipe out all persistent data, including any file(s)....");
  */
  // Get or set (first time only) the values of relevant and crucial variables
  // Start the Client-side!
  client_Start_Scanning();
  if(doClientConnectCall) {
    doClientConnectCall = false;
    bool dummy = client_Connect_Callback();
  }

Ik hoor graag als er nog andere delen of waarden zijn gewijzigd.

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

Als we een gelijk speelveld hebben is het eerste wat je gaat testen: het opstarten van v12 en zien of de procedure normaal verloopt.

  1. Of de volgende data worden opgehaald (LittleFS) uit het permanente geheugen: 21500 19500 100 2
  2. Of de TestBasicMotorFunctions met succes wordt uitgevoerd
  3. Of Simcline connect met Zwift (NB Zwift moet dus wel gestart zijn en het pairing screen tonen)

Dus hou even bij (op papier ofzo) wat de resultaten van deze 3 stappen steeds zijn!

Ik hoef geen serial output, tenzij er rare dingen gebeuren, maar wil wel weten hoevaak dit goed gaat en zo niet wat er steeds/soms misgaat!
Je test namelijk niet maar een (1) keer maar zeker 3 maal. Voordat je de test herhaalt moet je eerst Zwift beeindigen alsof je helemaal klaar bent -> complete exit dus.
Voor de volgende test: Zwift weer opstarten (wait, wait, wait) en de Simcline resetten...
Het is belangrijk dat Zwift helemaal wordt uitgezet, want Zwift onthoudt met wie het is ingelogd geweest en als een trainer disconnect dan is het reconnect proces anders! We willen vergelijkbare situaties, niet de ene keer zus en de andere keer zo!

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

Ter informatie: ik heb zojuist mijn eigen setup getest en alles werkte 100% , onmiddellijk, volledig en zonder fouten of hickups. Mijn setup is een Wahoo Kickr trainer simulator running op een nRF52480 board. Een Adafruit Feather ESP32 V2 running Wahoo Kickr Simcline code v12 met een Simcline 2.0 + full working mechanics. Ik deed een rondje Zwift Sands en Sequoias, na de start een U-turn zodat je in een paar minuten op het kritieke stuk zit met de heuveltjes die elkaar snel opvolgen..... Nu jij nog, maar je zal wel zelf moeten trappen, ik reed in een bureau stoel!

@Berg0162
Copy link
Owner

Berg0162 commented Dec 2, 2024

WahooKickrTestRun

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 2, 2024

Ik gebruik Zwift Compagnion app soms wanneer ik in een workout zit of in een groepsrit. Simcline Compagnion app gebruik ik niet echt om iets in te stellen. Meer om even uit te testen en om te zien of de bluetooth verbindingen zichtbaar zijn.

Ik ga ermee aan de slag, Jörgen. Kom later terug met met info.

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 2, 2024

Nou, hier de resultaten: Eerst tools gecheckt en daarna het V12 script nagelopen en LittleFS instellingen gewijzigd omdat die anders waren.

Daarna 10x getest en daarvan kreeg ik 5x een fix met de trainer. En als ik een fix met de trainer had dan kon ik ook doorstarten naar Zwift en een route fietsen.

Wat opviel, wanneer de Sim32 de weerstand overnam bij het pairen in Zwift dan werd de voorkant in 3x van de gevallen naar 2,7 graden getild en 2x naar 4,9 graden. Trappen laat je dan wel uit je hoofd tot een Zwift route is geladen ;-) .

1 op 2 van de pogingen mislukt dus doordat na de bluetooth verbinding met de Kickr er geen services komen. Op zich geen probleem als ik weet dat met een herstart wel een succesvolle poging kan komen.

Wanneer ik eerst Sim32 start en even wacht, daarna Kickr aanzet en het blauwe bluetooth lampje blijft knipperen dan kan ik stoppen, dan komt er geen fix. Als het blauwe lampje daarentegen meteen gaat branden dan weet ik dat ik kan doorgaan naar Zwift.

Hieronder een output van een mislukte poging. Zo zagen de outputs van de mislukte pogingen er overigens allemaal uit .

Persoonlijk denk ik dat het eerder een Wahoo Kickr probleem dan een probleem aan de kant van Sim32. Wat denk jij?

ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
------------------------ Version 01.2 --------------------------
SIM32
ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
SSD1306 OLED display is running...
Motor Control Task Created and Active!
Simcline Basic Motor Funtions are working!!
Configuring the default Generic Access Service
Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
Successfully Set Generic Access Device Name Chr value to: [SIM32]
Configuring the Server Nordic Uart Service
Configuring the Server Device Information Service
Configuring the Server Cycle Power Service
Configuring the Server Cadence and Speed Service
Setting up the Server advertising payload(s)
Setting Appearance in Advertised data to [1152]
Setting DeviceName in Advertised data to [SIM32]
Server is advertising: CPS + Wahoo
Client Starts Scanning for Server Device with CPS + Wahoo!
Found advertising Peripheral with CPS enabled! See data:
Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
Service Data:
UUID: 0x1826, Data: �
Now checking all Client Services and Characteristics!
If Mandatory Services Fail --> the Client will disconnect!
Client Generic Access: NOT Found!
Device Information Service: NOT Found!
Mandatory Cycling Power Service: Not Found!

Failed to connect Trainer! Reset ESP32 and try again!

@Berg0162
Copy link
Owner

Berg0162 commented Dec 3, 2024

Beste Jan-Willem,

Nou, hier de resultaten: Eerst tools gecheckt en daarna het V12 script nagelopen en LittleFS instellingen gewijzigd omdat die anders waren.

Kun je een screen shot maken en uploaden naar dit "issue" zoals ik gevraagd had? Sorry, maar ik wil het graag zelf zien!

Dankzij de tests die je deed ben ik erachter dat je Kickr soms iets te traag reageert nadat er een connectie verzoek is gedaan. Er is dus sprake van een timing probleem tijdens het connectie proces... soms doet ie het niet en soms doet ie het wel!
--> daar gaan we iets aan doen!
Kun je "Toggle Timestamp" aanzetten -> Serial Monitor scherm rechts boven -> klokje (aan of uit)
Met tijdregistratie kun je zien wanneer welke taken (output) worden uitgevoerd, heel handig met debuggen!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 3, 2024

Ik zal straks even testen voordat ik een koffieritje ga doen met mijn clubgenoten. Hierbij vast de gevraagde screendump. met de toggle timestamp geactiveerd.

image

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 3, 2024

5 pogingen gedaan, 1x geen fix. Waarschijnlijk is het weinig wat er aan tijd bij moet. ;-)

1e poging en meteen een fix maar niet door gegaan naar Zwift
17:13:14.319 ->
17:13:14.319 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
17:13:14.319 -> ------------------------ Version 01.2 --------------------------
17:13:14.319 -> SIM32
17:13:14.506 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
17:13:14.506 -> SSD1306 OLED display is running...
17:13:21.027 -> Motor Control Task Created and Active!
17:13:21.027 -> Simcline Basic Motor Funtions are working!!
17:13:21.274 -> Configuring the default Generic Access Service
17:13:21.274 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
17:13:21.306 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
17:13:21.306 -> Configuring the Server Nordic Uart Service
17:13:21.306 -> Configuring the Server Device Information Service
17:13:21.306 -> Configuring the Server Cycle Power Service
17:13:21.306 -> Configuring the Server Cadence and Speed Service
17:13:21.337 -> Setting up the Server advertising payload(s)
17:13:21.337 -> Setting Appearance in Advertised data to [1152]
17:13:21.337 -> Setting DeviceName in Advertised data to [SIM32]
17:13:21.337 -> Server is advertising: CPS + Wahoo
17:13:21.337 -> Client Starts Scanning for Server Device with CPS + Wahoo!
17:13:28.478 -> Found advertising Peripheral with CPS enabled! See data:
17:13:28.478 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
17:13:28.523 -> Service Data:
17:13:28.523 -> UUID: 0x1826, Data: �
17:13:29.171 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
17:13:29.171 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
17:13:29.171 -> Now checking all Client Services and Characteristics!
17:13:29.205 -> If Mandatory Services Fail --> the Client will disconnect!
17:13:29.457 -> Client Generic Access: Found!
17:13:29.799 -> -> Client Reads Device Name: [KICKR CORE 287D]
17:13:30.272 -> -> Client Reads Appearance: [0]
17:13:30.498 -> Client Device Information Service: Found!
17:13:31.123 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
17:13:32.308 -> -> Client Reads Serial Number: [221001365]
17:13:32.574 -> Client_CyclingPower_Service: Found!
17:13:33.222 -> Client_Wahoo_ControlPoint_Chr: Found!
17:13:34.208 -> Client_CP_Measurement_Chr: Found!
17:13:35.319 -> Client_CP_Feature_Chr: Found!
17:13:35.486 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
17:13:36.224 -> Client_CP_Location_Chr: Found!
17:13:36.306 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
17:13:36.386 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
17:13:36.851 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

2e met fix en naar Zwift
17:14:32.538 ->
17:14:32.538 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
17:14:32.573 -> ------------------------ Version 01.2 --------------------------
17:14:32.573 -> SIM32
17:14:32.788 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
17:14:32.788 -> SSD1306 OLED display is running...
17:14:39.271 -> Motor Control Task Created and Active!
17:14:39.271 -> Simcline Basic Motor Funtions are working!!
17:14:39.551 -> Configuring the default Generic Access Service
17:14:39.551 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
17:14:39.551 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
17:14:39.590 -> Configuring the Server Nordic Uart Service
17:14:39.590 -> Configuring the Server Device Information Service
17:14:39.590 -> Configuring the Server Cycle Power Service
17:14:39.590 -> Configuring the Server Cadence and Speed Service
17:14:39.590 -> Setting up the Server advertising payload(s)
17:14:39.590 -> Setting Appearance in Advertised data to [1152]
17:14:39.590 -> Setting DeviceName in Advertised data to [SIM32]
17:14:39.623 -> Server is advertising: CPS + Wahoo
17:14:39.623 -> Client Starts Scanning for Server Device with CPS + Wahoo!
17:14:43.917 -> Found advertising Peripheral with CPS enabled! See data:
17:14:43.917 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
17:14:43.917 -> Service Data:
17:14:43.917 -> UUID: 0x1826, Data: �
17:14:44.353 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
17:14:44.353 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
17:14:44.353 -> Now checking all Client Services and Characteristics!
17:14:44.353 -> If Mandatory Services Fail --> the Client will disconnect!
17:14:44.689 -> Client Generic Access: Found!
17:14:45.134 -> -> Client Reads Device Name: [KICKR CORE 287D]
17:14:45.604 -> -> Client Reads Appearance: [0]
17:14:45.887 -> Client Device Information Service: Found!
17:14:46.310 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
17:14:47.631 -> -> Client Reads Serial Number: [221001365]
17:14:48.009 -> Client_CyclingPower_Service: Found!
17:14:48.803 -> Client_Wahoo_ControlPoint_Chr: Found!
17:14:50.188 -> Client_CP_Measurement_Chr: Found!
17:14:51.588 -> Client_CP_Feature_Chr: Found!
17:14:51.701 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
17:14:52.436 -> Client_CP_Location_Chr: Found!
17:14:52.585 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
17:14:52.623 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
17:14:53.189 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
17:17:41.050 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
17:17:41.050 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
17:17:41.050 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
17:17:41.569 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
17:17:42.088 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
17:17:46.774 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
17:17:47.205 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
17:17:47.842 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
17:17:50.121 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:17:52.153 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:17:54.133 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:17:56.137 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:17:58.170 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:00.221 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:02.172 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:04.212 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:06.252 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:08.268 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:10.306 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
17:18:14.722 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
17:18:14.722 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
17:18:14.722 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
17:18:14.762 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
17:18:14.762 -> --> ESP32 Server is advertising again!
17:18:15.662 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!

3e poging, geen fix, SIM32 en Kickr reset
17:19:05.637 ->
17:19:05.637 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
17:19:05.637 -> ------------------------ Version 01.2 --------------------------
17:19:05.637 -> SIM32
17:19:05.853 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
17:19:05.853 -> SSD1306 OLED display is running...
17:19:12.333 -> Motor Control Task Created and Active!
17:19:12.333 -> Simcline Basic Motor Funtions are working!!
17:19:12.617 -> Configuring the default Generic Access Service
17:19:12.617 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
17:19:12.617 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
17:19:12.617 -> Configuring the Server Nordic Uart Service
17:19:12.617 -> Configuring the Server Device Information Service
17:19:12.617 -> Configuring the Server Cycle Power Service
17:19:12.649 -> Configuring the Server Cadence and Speed Service
17:19:12.649 -> Setting up the Server advertising payload(s)
17:19:12.649 -> Setting Appearance in Advertised data to [1152]
17:19:12.649 -> Setting DeviceName in Advertised data to [SIM32]
17:19:12.649 -> Server is advertising: CPS + Wahoo
17:19:12.649 -> Client Starts Scanning for Server Device with CPS + Wahoo!
17:19:20.872 -> Found advertising Peripheral with CPS enabled! See data:
17:19:20.872 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
17:19:20.872 -> Service Data:
17:19:20.872 -> UUID: 0x1826, Data: �
17:19:21.351 -> Now checking all Client Services and Characteristics!
17:19:21.351 -> If Mandatory Services Fail --> the Client will disconnect!
17:19:21.351 -> Client Generic Access: NOT Found!
17:19:21.351 -> Device Information Service: NOT Found!
17:19:21.351 -> Mandatory Cycling Power Service: Not Found!
17:19:21.351 -> >>> Failed to connect Trainer! Reset ESP32 and try again!

4e poging en koppeling met Zwift
17:19:54.116 ->
17:19:54.116 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
17:19:54.116 -> ------------------------ Version 01.2 --------------------------
17:19:54.153 -> SIM32
17:19:54.352 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
17:19:54.352 -> SSD1306 OLED display is running...
17:20:00.842 -> Motor Control Task Created and Active!
17:20:00.842 -> Simcline Basic Motor Funtions are working!!
17:20:01.132 -> Configuring the default Generic Access Service
17:20:01.132 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
17:20:01.132 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
17:20:01.132 -> Configuring the Server Nordic Uart Service
17:20:01.132 -> Configuring the Server Device Information Service
17:20:01.132 -> Configuring the Server Cycle Power Service
17:20:01.132 -> Configuring the Server Cadence and Speed Service
17:20:01.167 -> Setting up the Server advertising payload(s)
17:20:01.167 -> Setting Appearance in Advertised data to [1152]
17:20:01.167 -> Setting DeviceName in Advertised data to [SIM32]
17:20:01.167 -> Server is advertising: CPS + Wahoo
17:20:01.167 -> Client Starts Scanning for Server Device with CPS + Wahoo!
17:20:02.765 -> Found advertising Peripheral with CPS enabled! See data:
17:20:02.765 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
17:20:02.765 -> Service Data:
17:20:02.765 -> UUID: 0x1826, Data: �
17:20:03.181 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
17:20:03.214 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
17:20:03.214 -> Now checking all Client Services and Characteristics!
17:20:03.214 -> If Mandatory Services Fail --> the Client will disconnect!
17:20:03.869 -> Client Generic Access: Found!
17:20:04.599 -> -> Client Reads Device Name: [KICKR CORE 287D]
17:20:05.452 -> -> Client Reads Appearance: [0]
17:20:06.018 -> Client Device Information Service: Found!
17:20:06.750 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
17:20:08.169 -> -> Client Reads Serial Number: [221001365]
17:20:08.384 -> Client_CyclingPower_Service: Found!
17:20:08.967 -> Client_Wahoo_ControlPoint_Chr: Found!
17:20:10.398 -> Client_CP_Measurement_Chr: Found!
17:20:11.616 -> Client_CP_Feature_Chr: Found!
17:20:11.689 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
17:20:12.280 -> Client_CP_Location_Chr: Found!
17:20:12.463 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
17:20:12.498 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
17:20:13.129 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
17:21:51.613 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
17:21:51.613 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
17:21:51.613 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
17:21:51.800 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
17:21:52.633 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
17:21:56.368 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
17:21:56.785 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
17:21:57.515 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
17:21:59.769 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:01.816 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:03.861 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:05.851 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:07.886 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:09.927 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:11.983 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:13.989 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:16.067 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:18.083 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:20.080 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:22.089 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:24.145 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:26.184 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:28.150 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:30.234 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:32.232 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:34.228 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:36.249 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:38.263 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:40.317 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:42.331 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:44.329 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:46.360 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:48.330 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:50.383 -> Set Simcline to Percentage: 4.8 % RawgradeValue: 20433
17:22:56.297 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
17:22:56.297 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
17:22:56.339 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
17:22:56.339 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
17:22:56.339 -> --> ESP32 Server is advertising again!
17:22:57.561 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!
17:23:24.949 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
17:23:24.949 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!

5e poging ook meteen een fix, maar niet door gegaan naar Zwift
17:23:43.144 ->
17:23:43.144 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
17:23:43.177 -> ------------------------ Version 01.2 --------------------------
17:23:43.177 -> SIM32
17:23:43.364 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
17:23:43.403 -> SSD1306 OLED display is running...
17:23:49.865 -> Motor Control Task Created and Active!
17:23:49.865 -> Simcline Basic Motor Funtions are working!!
17:23:50.128 -> Configuring the default Generic Access Service
17:23:50.128 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
17:23:50.161 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
17:23:50.161 -> Configuring the Server Nordic Uart Service
17:23:50.161 -> Configuring the Server Device Information Service
17:23:50.161 -> Configuring the Server Cycle Power Service
17:23:50.161 -> Configuring the Server Cadence and Speed Service
17:23:50.161 -> Setting up the Server advertising payload(s)
17:23:50.161 -> Setting Appearance in Advertised data to [1152]
17:23:50.161 -> Setting DeviceName in Advertised data to [SIM32]
17:23:50.195 -> Server is advertising: CPS + Wahoo
17:23:50.195 -> Client Starts Scanning for Server Device with CPS + Wahoo!
17:24:03.899 -> Found advertising Peripheral with CPS enabled! See data:
17:24:03.899 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
17:24:03.940 -> Service Data:
17:24:03.940 -> UUID: 0x1826, Data: �
17:24:04.365 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
17:24:04.365 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
17:24:04.365 -> Now checking all Client Services and Characteristics!
17:24:04.406 -> If Mandatory Services Fail --> the Client will disconnect!
17:24:05.062 -> Client Generic Access: Found!
17:24:05.598 -> -> Client Reads Device Name: [KICKR CORE 287D]
17:24:06.113 -> -> Client Reads Appearance: [0]
17:24:06.398 -> Client Device Information Service: Found!
17:24:07.012 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
17:24:07.965 -> -> Client Reads Serial Number: [221001365]
17:24:08.214 -> Client_CyclingPower_Service: Found!
17:24:08.994 -> Client_Wahoo_ControlPoint_Chr: Found!
17:24:10.265 -> Client_CP_Measurement_Chr: Found!
17:24:11.677 -> Client_CP_Feature_Chr: Found!
17:24:11.963 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
17:24:12.646 -> Client_CP_Location_Chr: Found!
17:24:12.777 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
17:24:12.814 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
17:24:13.665 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 3, 2024

Hoi Jörgen,

We hadden vanavond een groepsrit op Zwift en na aanvankelijk een goede start viel ineens het vermogen weg. Dat was het begin van ruim een half uur testen en resetten. Hopelijk kun jij er wijs uit worden. Anyway, hier de output:

Groetjes JW

1e start - foutmelding lineaire motor
19:08:40.423 ->
19:08:40.423 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:08:40.423 -> ------------------------ Version 01.2 --------------------------
19:08:40.423 -> SIM32
19:08:40.656 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:08:40.656 -> SSD1306 OLED display is running...
19:08:45.413 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
19:08:45.689 -> Configuring the default Generic Access Service
19:08:45.689 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:08:45.689 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:08:45.689 -> Configuring the Server Nordic Uart Service
19:08:45.689 -> Configuring the Server Device Information Service
19:08:45.689 -> Configuring the Server Cycle Power Service
19:08:45.689 -> Configuring the Server Cadence and Speed Service
19:08:45.724 -> Setting up the Server advertising payload(s)
19:08:45.724 -> Setting Appearance in Advertised data to [1152]
19:08:45.724 -> Setting DeviceName in Advertised data to [SIM32]
19:08:45.724 -> Server is advertising: CPS + Wahoo
19:08:45.724 -> Client Starts Scanning for Server Device with CPS + Wahoo!

2e start success en gestart met Zwift
19:09:02.071 ->
19:09:02.071 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:09:02.071 -> ------------------------ Version 01.2 --------------------------
19:09:02.071 -> SIM32
19:09:02.306 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:09:02.306 -> SSD1306 OLED display is running...
19:09:08.807 -> Motor Control Task Created and Active!
19:09:08.807 -> Simcline Basic Motor Funtions are working!!
19:09:09.074 -> Configuring the default Generic Access Service
19:09:09.074 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:09:09.074 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:09:09.108 -> Configuring the Server Nordic Uart Service
19:09:09.108 -> Configuring the Server Device Information Service
19:09:09.108 -> Configuring the Server Cycle Power Service
19:09:09.108 -> Configuring the Server Cadence and Speed Service
19:09:09.108 -> Setting up the Server advertising payload(s)
19:09:09.108 -> Setting Appearance in Advertised data to [1152]
19:09:09.108 -> Setting DeviceName in Advertised data to [SIM32]
19:09:09.141 -> Server is advertising: CPS + Wahoo
19:09:09.141 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:09:14.818 -> Found advertising Peripheral with CPS enabled! See data:
19:09:14.818 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:09:14.818 -> Service Data:
19:09:14.818 -> UUID: 0x1826, Data: �
19:09:15.006 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:09:15.006 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:09:15.006 -> Now checking all Client Services and Characteristics!
19:09:15.040 -> If Mandatory Services Fail --> the Client will disconnect!
19:09:15.239 -> Client Generic Access: Found!
19:09:15.806 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:09:16.357 -> -> Client Reads Appearance: [0]
19:09:16.756 -> Client Device Information Service: Found!
19:09:17.256 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:09:18.556 -> -> Client Reads Serial Number: [221001365]
19:09:18.787 -> Client_CyclingPower_Service: Found!
19:09:19.706 -> Client_Wahoo_ControlPoint_Chr: Found!
19:09:20.640 -> Client_CP_Measurement_Chr: Found!
19:09:22.306 -> Client_CP_Feature_Chr: Found!
19:09:22.422 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:09:23.287 -> Client_CP_Location_Chr: Found!
19:09:23.406 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:09:23.440 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:09:24.307 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:11:10.737 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:11:10.737 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:11:10.737 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:11:11.137 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:11:11.737 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:11:14.738 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:11:15.107 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:11:15.572 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:11:21.206 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:28.187 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:30.156 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:32.204 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:34.254 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:36.286 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:38.271 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:40.287 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:42.355 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:44.321 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:46.420 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:48.420 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:50.438 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:52.720 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:54.770 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:56.803 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:11:58.855 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:12:00.887 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20141
19:12:27.402 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20032
19:12:27.518 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:12:29.620 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:31.654 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:33.685 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:35.671 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:12:39.638 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:41.686 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:45.754 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:12:49.554 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:51.587 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:53.638 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:12:55.603 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:12:59.671 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:01.720 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:03.804 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:05.803 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:09.703 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:11.671 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:13.786 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:15.770 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:19.719 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:21.871 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:13:23.870 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:13:25.970 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:29.737 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:31.788 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:13:33.819 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19961
19:13:35.869 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19986
19:13:39.770 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19966
19:13:41.921 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19942
19:13:43.971 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19915
19:13:45.985 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19858
19:13:49.836 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19833
19:13:51.864 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19877
19:13:53.980 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20033
19:13:56.019 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20248
19:13:58.070 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
19:14:00.152 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20245
19:14:02.270 -> Set Simcline to Percentage: 1.2 % RawgradeValue: 20065
19:14:02.456 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:14:04.583 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19969
19:14:06.585 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19941
19:14:08.603 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19936
19:14:10.669 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:14:14.552 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:14:16.535 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:18.571 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:20.602 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:24.469 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:14:26.502 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:28.584 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:14:30.585 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:34.470 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:36.518 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:14:38.552 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19906
19:14:40.553 -> Set Simcline to Percentage: 1.4 % RawgradeValue: 20086
19:14:44.568 -> Set Simcline to Percentage: 5.9 % RawgradeValue: 20540
19:14:46.584 -> Set Simcline to Percentage: 5.3 % RawgradeValue: 20479
19:14:48.635 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20265
19:14:50.602 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19974
19:14:54.518 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19941
19:14:56.569 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:14:58.552 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:00.653 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:04.734 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:06.868 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:09.269 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19935
19:15:15.104 -> Set Simcline to Percentage: 2.8 % RawgradeValue: 20226
19:15:17.135 -> Set Simcline to Percentage: 4.1 % RawgradeValue: 20364
19:15:19.301 -> Set Simcline to Percentage: 2.4 % RawgradeValue: 20188
19:15:21.385 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19923
19:15:24.986 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19839
19:15:27.218 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19847
19:15:29.385 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19913
19:15:31.417 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20054
19:15:34.967 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19811
19:15:36.935 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19789
19:15:38.984 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19791
19:15:41.100 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19841
19:15:44.985 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 20004
19:15:47.001 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19990
19:15:49.067 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:15:51.086 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:55.067 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:15:57.100 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:15:59.150 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:01.172 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:05.085 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:07.101 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:09.151 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20039
19:16:11.217 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20023
19:16:15.151 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19847
19:16:17.200 -> Set Simcline to Percentage: -2.0 % RawgradeValue: 19746
19:16:19.350 -> Set Simcline to Percentage: -2.2 % RawgradeValue: 19728
19:16:21.367 -> Set Simcline to Percentage: -2.1 % RawgradeValue: 19743
19:16:23.433 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19793
19:16:25.552 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19816
19:16:25.724 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:16:27.680 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19834
19:16:29.735 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19852
19:16:31.899 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19955
19:16:33.951 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:39.533 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:41.484 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:16:43.533 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:16:45.567 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:16:47.784 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:16:49.834 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:16:51.883 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:16:53.917 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:16:57.883 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:16:59.900 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:17:02.032 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:17:03.983 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:07.833 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:09.867 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:11.983 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:14.000 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:17:17.917 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:20.083 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:22.133 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:24.115 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:27.882 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:29.916 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:32.033 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:33.999 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:37.900 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:17:39.950 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:17:41.984 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20020
19:17:44.031 -> Set Simcline to Percentage: 2.9 % RawgradeValue: 20244
19:17:46.115 -> Set Simcline to Percentage: 5.6 % RawgradeValue: 20509
19:17:48.216 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20459
19:17:50.179 -> Set Simcline to Percentage: 5.0 % RawgradeValue: 20447
19:17:52.250 -> Set Simcline to Percentage: 4.4 % RawgradeValue: 20390
19:17:54.350 -> Set Simcline to Percentage: 4.2 % RawgradeValue: 20371
19:17:56.616 -> Set Simcline to Percentage: 4.3 % RawgradeValue: 20382
19:17:58.466 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20456
19:18:00.399 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20164
19:18:02.449 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20019
19:18:02.614 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:18:04.715 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19994
19:18:06.698 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19971
19:18:08.800 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:18:10.715 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:18:14.682 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19947
19:18:16.715 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:18:18.681 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19954
19:18:20.666 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:18:24.682 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19932
19:18:26.748 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19910
19:18:28.784 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20307
19:18:30.831 -> Set Simcline to Percentage: 4.6 % RawgradeValue: 20411
19:18:32.914 -> Set Simcline to Percentage: 4.6 % RawgradeValue: 20408
19:18:34.915 -> Set Simcline to Percentage: 4.1 % RawgradeValue: 20357
19:18:36.865 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20172
19:18:38.982 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19920
19:18:39.097 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:18:41.064 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:18:42.998 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 20002
19:18:45.215 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19976
19:18:47.132 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19925
19:18:51.098 -> Set Simcline to Percentage: -1.9 % RawgradeValue: 19756
19:18:53.081 -> Set Simcline to Percentage: -1.8 % RawgradeValue: 19768
19:18:55.165 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19942
19:18:57.198 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20013
19:19:01.115 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:19:03.216 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:19:05.133 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:19:07.165 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:19:11.149 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:19:13.181 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19943
19:19:15.214 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19943
19:19:15.214 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19943
19:19:17.214 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:19:21.197 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:19:23.182 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19957
19:19:25.263 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19963
19:19:27.282 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19966
19:19:31.280 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19968
19:19:33.349 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19952
19:19:35.380 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:19:37.414 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:19:41.365 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:19:43.348 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:19:45.413 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:19:47.431 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:19:51.381 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:19:53.481 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19955
19:19:55.481 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19961
19:19:57.496 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19971
19:20:01.480 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20013
19:20:03.447 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20017
19:20:05.431 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20010
19:20:07.546 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19985
19:20:11.481 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:20:13.515 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:15.563 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:20:17.612 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:20:21.529 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:23.563 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:25.665 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:27.630 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:31.531 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:20:33.513 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19974
19:20:35.614 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19987
19:20:37.663 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19967
19:20:41.574 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19902
19:20:43.595 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19839
19:20:45.646 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19830
19:20:47.679 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19875
19:20:51.675 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20266
19:20:53.730 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20309
19:20:55.763 -> Set Simcline to Percentage: 2.4 % RawgradeValue: 20189
19:20:57.796 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20017
19:21:01.696 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:21:03.830 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19937
19:21:05.795 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:07.829 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:11.749 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:21:13.780 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:15.813 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:17.862 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:21.745 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:23.779 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:25.778 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:27.863 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19933
19:21:31.713 -> Set Simcline to Percentage: 5.3 % RawgradeValue: 20479
19:21:33.795 -> Set Simcline to Percentage: 5.9 % RawgradeValue: 20543
19:21:35.847 -> Set Simcline to Percentage: 5.2 % RawgradeValue: 20474
19:21:37.910 -> Set Simcline to Percentage: 2.5 % RawgradeValue: 20197
19:21:39.929 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19923
19:21:40.052 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:21:42.045 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19925
19:21:44.078 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:21:46.094 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:48.162 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:21:52.111 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:21:54.194 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:21:56.194 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:21:58.214 -> Set Simcline to Percentage: 4.2 % RawgradeValue: 20367
19:22:00.212 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19991
19:22:00.328 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:22:02.313 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19849
19:22:04.363 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19842
19:22:06.445 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19956
19:22:08.474 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20032
19:22:12.329 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19793
19:22:14.361 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19788
19:22:16.427 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19807
19:22:18.462 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19916
19:22:22.345 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20009
19:22:24.396 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:26.428 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:28.477 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:32.377 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:34.394 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:22:36.444 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:38.495 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:42.513 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:22:44.562 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:22:46.578 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20046
19:22:48.560 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20020
19:22:52.528 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19871
19:22:54.561 -> Set Simcline to Percentage: -1.9 % RawgradeValue: 19758
19:22:56.594 -> Set Simcline to Percentage: -2.2 % RawgradeValue: 19729
19:22:58.662 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:23:00.628 -> Set Simcline to Percentage: -1.7 % RawgradeValue: 19783
19:23:02.694 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:23:02.773 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:23:04.828 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19832
19:23:06.860 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19850
19:23:08.845 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:23:10.912 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:14.796 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:16.813 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:18.861 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:20.913 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:24.863 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:23:26.910 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:23:28.945 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:23:30.977 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:23:34.911 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:36.944 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:38.893 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:40.944 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:44.911 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:46.961 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:49.044 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:23:51.096 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:54.993 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:57.027 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:23:59.059 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:01.160 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:04.944 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:06.994 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:09.044 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:10.993 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:24:15.043 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 20000
19:24:17.025 -> Set Simcline to Percentage: 3.7 % RawgradeValue: 20318
19:24:19.043 -> Set Simcline to Percentage: 5.4 % RawgradeValue: 20487
19:24:21.092 -> Set Simcline to Percentage: 5.0 % RawgradeValue: 20450
19:24:23.175 -> Set Simcline to Percentage: 4.4 % RawgradeValue: 20392
19:24:25.240 -> Set Simcline to Percentage: 4.2 % RawgradeValue: 20371
19:24:27.326 -> Set Simcline to Percentage: 4.7 % RawgradeValue: 20415
19:24:29.376 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20208
19:24:31.409 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20016
19:24:31.524 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:24:33.510 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 19995
19:24:35.556 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19968
19:24:37.542 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:24:39.575 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19947
19:24:43.575 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:24:45.625 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19953
19:24:47.660 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19953
19:24:49.660 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:24:53.591 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19941
19:24:55.643 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20218
19:24:57.674 -> Set Simcline to Percentage: 4.6 % RawgradeValue: 20406
19:24:59.727 -> Set Simcline to Percentage: 4.6 % RawgradeValue: 20407
19:25:01.776 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20334
19:25:03.809 -> Set Simcline to Percentage: 1.3 % RawgradeValue: 20082
19:25:03.939 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:25:05.909 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19906
19:25:07.943 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19973
19:25:09.992 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 20002
19:25:12.042 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19980
19:25:15.992 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19819
19:25:17.978 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:25:19.991 -> Set Simcline to Percentage: -1.9 % RawgradeValue: 19762
19:25:22.059 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19941
19:25:25.959 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19957
19:25:27.974 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:25:29.959 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:25:31.991 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19952
19:25:35.960 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:25:38.008 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19943
19:25:40.042 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:25:42.094 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:25:45.974 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19962
19:25:48.040 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19966
19:25:49.991 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19973
19:25:52.093 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19962
19:25:56.075 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:25:58.157 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:00.224 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:02.192 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:06.158 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:26:08.193 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:10.342 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19952
19:26:12.325 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19960
19:26:16.159 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19977
19:26:18.191 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 19997
19:26:20.176 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:26:22.225 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20017
19:26:26.192 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19993
19:26:28.273 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19961
19:26:30.324 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19947
19:26:32.374 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:26:36.276 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:38.308 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:26:40.357 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:26:42.441 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:26:46.357 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:48.390 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:50.374 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:52.390 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:56.359 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:26:58.405 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:00.442 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:02.409 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:06.309 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:08.349 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:10.410 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:12.391 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:16.406 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:18.393 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:20.440 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:22.457 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:26.442 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:28.474 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:30.457 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:32.474 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:36.442 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:38.491 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:40.526 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:42.506 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:46.474 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:48.442 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:50.475 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:52.590 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:56.553 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:27:58.507 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:28:00.557 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:02.608 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:06.508 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:08.557 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:10.573 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:12.623 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:16.541 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:18.624 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:20.606 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:22.657 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:26.560 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:28.594 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:30.641 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:32.738 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:36.573 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:38.609 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:40.591 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:42.607 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:46.657 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:48.673 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:50.656 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:52.688 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:56.672 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:28:58.704 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:00.739 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:02.789 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:06.739 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:08.723 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:10.772 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:12.739 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:16.687 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:18.739 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:20.738 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:22.755 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:26.789 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:28.838 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:30.821 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:32.856 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:36.739 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:38.839 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:40.821 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:42.786 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:46.756 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:48.805 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:50.788 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:52.822 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:56.771 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:29:58.806 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:00.872 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:02.826 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:06.871 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:08.889 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:10.889 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:12.938 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:16.822 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:18.873 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:20.906 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:22.870 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:26.886 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:28.956 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:30:30.988 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:32.971 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19942
19:30:36.923 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:30:38.956 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:30:41.001 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19975
19:30:43.089 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20038
19:30:46.937 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:30:48.987 -> Set Simcline to Percentage: 2.9 % RawgradeValue: 20237
19:30:51.040 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20168
19:30:53.071 -> Set Simcline to Percentage: 1.2 % RawgradeValue: 20065
19:30:57.021 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19923
19:30:59.004 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19891
19:31:01.037 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:03.070 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19855
19:31:05.019 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:07.025 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19837
19:31:09.088 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19832
19:31:11.120 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19828
19:31:13.084 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19826
19:31:17.080 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:19.044 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19833
19:31:21.108 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19840
19:31:23.105 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19845
19:31:27.169 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:29.143 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19851
19:31:31.144 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:33.225 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19851
19:31:37.204 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19849
19:31:39.224 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19845
19:31:41.263 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:43.264 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19825
19:31:45.124 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:47.140 -> Set Simcline to Percentage: -1.7 % RawgradeValue: 19779
19:31:49.144 -> Set Simcline to Percentage: -1.9 % RawgradeValue: 19764
19:31:51.145 -> Set Simcline to Percentage: -1.8 % RawgradeValue: 19774
19:31:53.164 -> Set Simcline to Percentage: -1.8 % RawgradeValue: 19769
19:31:55.219 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19786
19:31:57.193 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19829
19:31:57.332 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:31:59.240 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19860
19:32:01.289 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19864
19:32:03.395 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19858
19:32:05.442 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19858
19:32:09.438 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19809
19:32:11.426 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19848
19:32:13.534 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19854
19:32:15.543 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19855
19:32:19.522 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19875
19:32:21.571 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19869
19:32:23.677 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19871
19:32:25.644 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19865
19:32:27.462 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:32:29.493 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19841
19:32:31.443 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19860
19:32:33.483 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19905
19:32:35.532 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19909
19:32:39.520 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:32:41.523 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19830
19:32:43.526 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19833
19:32:45.582 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19863
19:32:47.564 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:32:49.546 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19892
19:32:51.560 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19939
19:32:53.629 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19980
19:32:55.658 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19985
19:32:59.604 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19970
19:33:01.586 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19953
19:33:03.639 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:33:05.622 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:33:09.620 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:33:11.668 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:33:13.638 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:33:15.686 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:33:17.608 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:33:19.649 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19954
19:33:21.693 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:33:23.678 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19985
19:33:25.716 -> Set Simcline to Percentage: 1.2 % RawgradeValue: 20069
19:33:29.730 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20160
19:33:31.719 -> Set Simcline to Percentage: 2.3 % RawgradeValue: 20182
19:33:33.751 -> Set Simcline to Percentage: 2.5 % RawgradeValue: 20199
19:33:35.807 -> Set Simcline to Percentage: 2.4 % RawgradeValue: 20191
19:33:37.834 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20163
19:33:39.781 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20138
19:33:41.864 -> Set Simcline to Percentage: 1.6 % RawgradeValue: 20112
19:33:43.922 -> Set Simcline to Percentage: 1.3 % RawgradeValue: 20083
19:33:44.042 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:33:46.051 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20037
19:33:48.107 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19931
19:33:50.101 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19913
19:33:52.172 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19923
19:33:56.008 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20215
19:33:58.021 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20251
19:34:00.103 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20219
19:34:02.142 -> Set Simcline to Percentage: 2.0 % RawgradeValue: 20151
19:34:04.081 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20118
19:34:06.148 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
19:34:08.161 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20100
19:34:10.202 -> Set Simcline to Percentage: 1.6 % RawgradeValue: 20105
19:34:12.325 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20122
19:34:14.281 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20172
19:34:16.352 -> Set Simcline to Percentage: 3.3 % RawgradeValue: 20282
19:34:18.396 -> Set Simcline to Percentage: 3.7 % RawgradeValue: 20317
19:34:20.402 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20273
19:34:22.381 -> Set Simcline to Percentage: 2.4 % RawgradeValue: 20190
19:34:24.389 -> Set Simcline to Percentage: 2.0 % RawgradeValue: 20146
19:34:26.502 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20116
19:34:28.528 -> Set Simcline to Percentage: 1.3 % RawgradeValue: 20083
19:34:28.665 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:34:30.601 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20013
19:34:32.607 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19957
19:34:34.621 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:34:36.635 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19944
19:34:40.598 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:34:42.630 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:34:44.746 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:34:46.681 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:34:50.581 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:34:52.644 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19971
19:34:54.705 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19993
19:34:56.761 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19876
19:35:00.690 -> Set Simcline to Percentage: -3.1 % RawgradeValue: 19639
19:35:02.736 -> Set Simcline to Percentage: -3.0 % RawgradeValue: 19648
19:35:04.801 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:06.759 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:08.761 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19937
19:35:08.882 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:10.880 -> Set Simcline to Percentage: 2.8 % RawgradeValue: 20229
19:35:12.927 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:14.880 -> Set Simcline to Percentage: 6.1 % RawgradeValue: 20564
19:35:16.961 -> Set Simcline to Percentage: 7.1 % RawgradeValue: 20655
19:35:19.021 -> Set Simcline to Percentage: 7.4 % RawgradeValue: 20687
19:35:21.025 -> Set Simcline to Percentage: 7.5 % RawgradeValue: 20699
19:35:23.139 -> Set Simcline to Percentage: 7.5 % RawgradeValue: 20698
19:35:25.081 -> Set Simcline to Percentage: 7.2 % RawgradeValue: 20666
19:35:27.095 -> Set Simcline to Percentage: 8.4 % RawgradeValue: 20793
19:35:29.142 -> Set Simcline to Percentage: 1.4 % RawgradeValue: 20092
19:35:29.220 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:31.217 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19919
19:35:33.339 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20009
19:35:35.237 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20009
19:35:37.289 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19890
19:35:41.247 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19836
19:35:43.276 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:45.402 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19831
19:35:47.322 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:49.260 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:51.209 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:35:53.369 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
19:35:53.369 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:35:53.538 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:35:55.086 -> Found advertising Peripheral with CPS enabled! See data:
19:35:55.086 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:35:55.128 -> Service Data:
19:35:55.128 -> UUID: 0x1826, Data: �
19:35:58.090 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:35:58.131 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:35:58.131 -> Now checking all Client Services and Characteristics!
19:35:58.131 -> If Mandatory Services Fail --> the Client will disconnect!
19:36:02.155 -> Client Generic Access: NOT Found!
19:36:02.155 -> Device Information Service: NOT Found!
19:36:02.192 -> Mandatory Cycling Power Service: Not Found!
19:36:02.192 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:36:02.375 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:36:38.540 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:36:38.540 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:36:38.540 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:36:38.540 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
19:36:38.587 -> --> ESP32 Server is advertising again!
19:36:49.477 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:36:49.477 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
19:36:49.477 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:36:49.560 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
19:36:53.175 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:36:53.543 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:36:54.101 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:36:55.578 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:36:57.636 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:37:42.365 -> Found advertising Peripheral with CPS enabled! See data:
19:37:42.365 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:37:42.410 -> Service Data:
19:37:42.410 -> UUID: 0x1826, Data: �
19:37:43.093 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:37:43.093 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
19:37:43.135 -> Now checking all Client Services and Characteristics!
19:37:43.135 -> If Mandatory Services Fail --> the Client will disconnect!
19:37:43.535 -> Client Generic Access: Found!
19:37:44.413 -> -> Client Reads Device Name: [KICKR CORE 287D]

3e start na wegvallen vermogen (Zwift aan gelaten - evenement bezig)
19:37:54.091 ->
19:37:54.091 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:37:54.135 -> ------------------------ Version 01.2 --------------------------
19:37:54.135 -> SIM32
19:37:54.310 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:37:54.350 -> SSD1306 OLED display is running...
19:38:00.849 -> Motor Control Task Created and Active!
19:38:00.849 -> Simcline Basic Motor Funtions are working!!
19:38:01.115 -> Configuring the default Generic Access Service
19:38:01.115 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:38:01.115 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:38:01.115 -> Configuring the Server Nordic Uart Service
19:38:01.115 -> Configuring the Server Device Information Service
19:38:01.115 -> Configuring the Server Cycle Power Service
19:38:01.115 -> Configuring the Server Cadence and Speed Service
19:38:01.147 -> Setting up the Server advertising payload(s)
19:38:01.147 -> Setting Appearance in Advertised data to [1152]
19:38:01.147 -> Setting DeviceName in Advertised data to [SIM32]
19:38:01.147 -> Server is advertising: CPS + Wahoo
19:38:01.147 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:38:01.441 -> Found advertising Peripheral with CPS enabled! See data:
19:38:01.441 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:38:01.441 -> Service Data:
19:38:01.441 -> UUID: 0x1826, Data: �
19:38:02.082 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:38:02.082 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:38:02.082 -> Now checking all Client Services and Characteristics!
19:38:02.128 -> If Mandatory Services Fail --> the Client will disconnect!
19:38:02.480 -> Client Generic Access: Found!
19:38:03.181 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:38:03.223 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:38:03.223 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:38:03.223 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:38:03.381 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:38:03.781 -> -> Client Reads Appearance: [0]
19:38:04.110 -> Client Device Information Service: Found!
19:38:06.681 -> Mandatory Cycling Power Service: Not Found!
19:38:06.681 -> >>> Failed to connect Trainer! Reset ESP32 and try again!
19:38:06.681 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:38:07.032 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:38:07.464 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:38:07.981 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]

4e start omdat er geen fix kwam met Kickr (Zwift aan gelaten - evenement bezig)
19:38:45.412 ->
19:38:45.412 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:38:45.412 -> ------------------------ Version 01.2 --------------------------
19:38:45.412 -> SIM32
19:38:45.606 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:38:45.644 -> SSD1306 OLED display is running...
19:38:50.431 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
19:38:50.679 -> Configuring the default Generic Access Service
19:38:50.679 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:38:50.679 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:38:50.679 -> Configuring the Server Nordic Uart Service
19:38:50.679 -> Configuring the Server Device Information Service
19:38:50.679 -> Configuring the Server Cycle Power Service
19:38:50.712 -> Configuring the Server Cadence and Speed Service
19:38:50.712 -> Setting up the Server advertising payload(s)
19:38:50.712 -> Setting Appearance in Advertised data to [1152]
19:38:50.712 -> Setting DeviceName in Advertised data to [SIM32]
19:38:50.712 -> Server is advertising: CPS + Wahoo
19:38:50.712 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:38:50.998 -> Found advertising Peripheral with CPS enabled! See data:
19:38:50.998 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:38:50.998 -> Service Data:
19:38:50.998 -> UUID: 0x1826, Data: �
19:38:52.115 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:38:52.115 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:38:52.115 -> Now checking all Client Services and Characteristics!
19:38:52.115 -> If Mandatory Services Fail --> the Client will disconnect!
19:38:52.448 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:38:52.481 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:38:52.481 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:38:52.581 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:38:52.615 -> Client Generic Access: Found!
19:38:53.717 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:38:54.348 -> -> Client Reads Appearance: [0]
19:38:54.748 -> Client Device Information Service: Found!
19:38:55.198 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:38:56.765 -> -> Client Reads Serial Number: [221001365]
19:38:56.937 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:38:57.083 -> Client_CyclingPower_Service: Found!
19:38:57.332 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:38:57.932 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:38:58.046 -> Client_Wahoo_ControlPoint_Chr: Found!
19:38:59.514 -> Client_CP_Measurement_Chr: Found!
19:39:05.713 -> Client_CP_Feature_Chr: Found!
19:39:06.715 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:39:09.615 -> Client_CP_Location_Chr: Found!
19:39:10.398 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:39:10.435 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:39:17.913 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:39:18.415 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:39:18.915 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!

5e start omdat de motor functie het niet deed (Zwift aan gelaten - evenement bezig)
19:39:33.280 ->
19:39:33.280 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:39:33.280 -> ------------------------ Version 01.2 --------------------------
19:39:33.280 -> SIM32
19:39:33.513 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:39:33.513 -> SSD1306 OLED display is running...
19:39:40.013 -> Motor Control Task Created and Active!
19:39:40.013 -> Simcline Basic Motor Funtions are working!!
19:39:40.260 -> Configuring the default Generic Access Service
19:39:40.260 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:39:40.293 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:39:40.293 -> Configuring the Server Nordic Uart Service
19:39:40.293 -> Configuring the Server Device Information Service
19:39:40.293 -> Configuring the Server Cycle Power Service
19:39:40.293 -> Configuring the Server Cadence and Speed Service
19:39:40.293 -> Setting up the Server advertising payload(s)
19:39:40.293 -> Setting Appearance in Advertised data to [1152]
19:39:40.293 -> Setting DeviceName in Advertised data to [SIM32]
19:39:40.327 -> Server is advertising: CPS + Wahoo
19:39:40.327 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:39:42.096 -> Found advertising Peripheral with CPS enabled! See data:
19:39:42.096 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:39:42.096 -> Service Data:
19:39:42.096 -> UUID: 0x1826, Data: �
19:39:42.664 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:39:42.664 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:39:42.664 -> Now checking all Client Services and Characteristics!
19:39:42.664 -> If Mandatory Services Fail --> the Client will disconnect!
19:39:42.946 -> Client Generic Access: Found!
19:39:43.647 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:39:43.812 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:39:43.812 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:39:43.812 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:39:43.959 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:39:44.214 -> -> Client Reads Appearance: [0]
19:39:44.597 -> Client Device Information Service: Found!
19:39:45.498 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:39:46.948 -> -> Client Reads Serial Number: [221001365]
19:39:47.414 -> Client_CyclingPower_Service: Found!
19:39:47.543 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:39:47.846 -> Client_Wahoo_ControlPoint_Chr: Found!
19:39:47.879 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:39:48.497 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:39:51.763 -> Client_CP_Measurement_Chr: Found!
19:39:58.546 -> Client_CP_Feature_Chr: Found!
19:39:59.448 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:40:04.331 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19824
19:40:06.363 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19793
19:40:06.446 -> Client_CP_Location_Chr: Found!
19:40:08.413 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19813
19:40:08.778 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:40:08.824 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:40:10.462 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19807
19:40:13.346 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:40:14.347 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19837
19:40:14.962 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:40:16.147 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:40:16.379 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19828
19:40:18.378 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:20.395 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19829
19:40:24.379 -> Set Simcline to Percentage: -1.5 % RawgradeValue: 19797
19:40:26.347 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19834
19:40:28.396 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:30.428 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19827
19:40:34.378 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19859
19:40:36.445 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:38.480 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20048
19:40:40.462 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:44.429 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19818
19:40:46.514 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19812
19:40:48.429 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:50.479 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:54.462 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19808
19:40:56.412 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:40:58.494 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:00.480 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:02.411 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:04.513 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19826
19:41:06.478 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:08.529 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19834
19:41:10.495 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:14.462 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:16.562 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19876
19:41:18.612 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19888
19:41:20.578 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:22.494 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:24.496 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19944
19:41:26.529 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:41:28.578 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19928
19:41:30.678 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:34.580 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19832
19:41:36.612 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:38.594 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:40.628 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:42.594 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:44.579 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19940
19:41:46.578 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:48.594 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19903
19:41:50.594 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19857
19:41:52.561 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:41:54.594 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19851
19:41:56.579 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19824
19:41:58.645 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:00.662 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19845
19:42:02.727 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:04.696 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19816
19:42:06.678 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19828
19:42:08.712 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19824
19:42:10.677 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:14.711 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19819
19:42:16.811 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:18.714 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:20.778 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19837
19:42:22.645 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:24.679 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:26.777 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19841
19:42:28.827 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:30.777 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19866
19:42:34.678 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19866
19:42:36.744 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19834
19:42:38.777 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19838
19:42:40.812 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19872
19:42:42.678 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:44.693 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19824
19:42:46.794 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:48.777 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19852
19:42:50.844 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:54.728 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19945
19:42:56.712 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:42:58.793 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19926
19:43:00.778 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19959
19:43:04.827 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19980
19:43:06.912 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20026
19:43:08.845 -> Set Simcline to Percentage: 1.8 % RawgradeValue: 20130
19:43:10.860 -> Set Simcline to Percentage: 2.3 % RawgradeValue: 20180
19:43:12.976 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:43:14.997 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20245
19:43:16.977 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20250
19:43:19.043 -> Set Simcline to Percentage: 2.8 % RawgradeValue: 20234
19:43:21.076 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:43:23.109 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20268
19:43:25.092 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:43:27.177 -> Set Simcline to Percentage: 2.9 % RawgradeValue: 20244
19:43:29.191 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:43:31.209 -> Set Simcline to Percentage: 3.4 % RawgradeValue: 20289
19:43:33.376 -> Set Simcline to Percentage: 3.3 % RawgradeValue: 20279
19:43:35.276 -> Set Simcline to Percentage: 3.4 % RawgradeValue: 20290
19:43:37.327 -> Set Simcline to Percentage: 3.4 % RawgradeValue: 20287
19:43:39.375 -> Set Simcline to Percentage: 3.1 % RawgradeValue: 20264
19:43:41.426 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20171
19:43:43.492 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20253
19:43:45.494 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20220
19:43:47.542 -> Set Simcline to Percentage: 3.1 % RawgradeValue: 20257
19:43:49.576 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20213
19:43:51.676 -> Set Simcline to Percentage: 1.8 % RawgradeValue: 20130
19:43:53.691 -> Set Simcline to Percentage: 3.0 % RawgradeValue: 20245
19:43:55.676 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20210
19:43:57.744 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:43:59.775 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20161
19:44:01.810 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20215
19:44:03.792 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20213
19:44:05.811 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20212
19:44:07.791 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20218
19:44:09.892 -> Set Simcline to Percentage: 2.0 % RawgradeValue: 20145
19:44:11.892 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20205
19:44:13.857 -> Set Simcline to Percentage: 2.3 % RawgradeValue: 20184
19:44:15.908 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20217
19:44:17.930 -> Set Simcline to Percentage: 2.5 % RawgradeValue: 20201
19:44:19.992 -> Set Simcline to Percentage: 2.3 % RawgradeValue: 20177
19:44:22.043 -> Set Simcline to Percentage: 2.3 % RawgradeValue: 20177
19:44:24.059 -> Set Simcline to Percentage: 2.7 % RawgradeValue: 20224
19:44:26.109 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20270
19:44:28.174 -> Set Simcline to Percentage: 2.1 % RawgradeValue: 20157
19:44:30.193 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20060
19:44:30.308 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:44:32.225 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20032
19:44:34.259 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20037
19:44:36.308 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20020
19:44:38.274 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20032
19:44:42.242 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20051
19:44:44.291 -> Set Simcline to Percentage: 1.8 % RawgradeValue: 20126
19:44:46.290 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20124
19:44:48.360 -> Set Simcline to Percentage: 1.8 % RawgradeValue: 20125
19:44:50.359 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20121
19:44:52.343 -> Set Simcline to Percentage: 2.0 % RawgradeValue: 20150
19:44:54.376 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20060
19:44:54.491 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:44:56.408 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19988
19:44:58.458 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19943
19:45:00.475 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19952
19:45:02.542 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19971
19:45:06.476 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19958
19:45:08.543 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:45:10.491 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19913
19:45:12.574 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19901
19:45:16.490 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19879
19:45:18.559 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:20.591 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19826
19:45:22.550 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:24.474 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:26.542 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19857
19:45:28.490 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19884
19:45:30.557 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19922
19:45:32.591 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19934
19:45:36.542 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:38.642 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19916
19:45:40.609 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:42.658 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19837
19:45:44.541 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:46.559 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19863
19:45:48.607 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19883
19:45:50.642 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:52.758 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19896
19:45:56.574 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:45:58.624 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19849
19:46:00.674 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19835
19:46:02.689 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:06.605 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:08.575 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19836
19:46:10.609 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:12.724 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19848
19:46:14.570 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:16.557 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:18.609 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:20.590 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19833
19:46:22.624 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:24.609 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:46:26.657 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
19:46:26.657 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:46:26.724 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:46:44.707 -> Found advertising Peripheral with CPS enabled! See data:
19:46:44.707 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:46:44.707 -> Service Data:
19:46:44.707 -> UUID: 0x1826, Data: �
19:46:55.123 -> Now checking all Client Services and Characteristics!
19:46:55.123 -> If Mandatory Services Fail --> the Client will disconnect!
19:46:55.123 -> Client Generic Access: NOT Found!
19:46:55.123 -> Device Information Service: NOT Found!
19:46:55.123 -> Mandatory Cycling Power Service: Not Found!

6e start omdat verbinding met Kickr wegviel (Nu ook Zwift herstart)
19:48:28.538 ->
19:48:28.538 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:48:28.538 -> ------------------------ Version 01.2 --------------------------
19:48:28.570 -> SIM32
19:48:28.751 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:48:28.787 -> SSD1306 OLED display is running...
19:48:35.271 -> Motor Control Task Created and Active!
19:48:35.271 -> Simcline Basic Motor Funtions are working!!
19:48:35.537 -> Configuring the default Generic Access Service
19:48:35.537 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:48:35.537 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:48:35.578 -> Configuring the Server Nordic Uart Service
19:48:35.578 -> Configuring the Server Device Information Service
19:48:35.578 -> Configuring the Server Cycle Power Service
19:48:35.578 -> Configuring the Server Cadence and Speed Service
19:48:35.578 -> Setting up the Server advertising payload(s)
19:48:35.578 -> Setting Appearance in Advertised data to [1152]
19:48:35.578 -> Setting DeviceName in Advertised data to [SIM32]
19:48:35.578 -> Server is advertising: CPS + Wahoo
19:48:35.578 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:48:35.782 -> Found advertising Peripheral with CPS enabled! See data:
19:48:35.782 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:48:35.782 -> Service Data:
19:48:35.782 -> UUID: 0x1826, Data: �
19:48:37.606 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:48:37.638 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:48:37.638 -> Now checking all Client Services and Characteristics!
19:48:37.638 -> If Mandatory Services Fail --> the Client will disconnect!
19:48:37.638 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:48:37.638 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:48:37.671 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:48:37.788 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:48:38.453 -> Client Generic Access: Found!
19:48:40.672 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:48:41.589 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:48:41.855 -> -> Client Reads Appearance: [0]
19:48:41.968 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:48:42.202 -> Client Device Information Service: Found!
19:48:42.487 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:48:42.871 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:48:44.821 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:48:46.788 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:48:49.138 -> -> Client Reads Serial Number: []
19:48:49.138 -> Mandatory Cycling Power Service: Not Found!
19:48:49.138 -> >>> Failed to connect Trainer! Reset ESP32 and try again!
19:48:49.138 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:49:09.972 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:49:09.972 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:49:09.972 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:49:09.972 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
19:49:10.015 -> --> ESP32 Server is advertising again!

7e start omdat er geen fix kwam met Kickr
19:49:43.970 ->
19:49:43.970 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:49:43.970 -> ------------------------ Version 01.2 --------------------------
19:49:44.004 -> SIM32
19:49:44.204 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:49:44.204 -> SSD1306 OLED display is running...
19:49:50.704 -> Motor Control Task Created and Active!
19:49:50.704 -> Simcline Basic Motor Funtions are working!!
19:49:50.972 -> Configuring the default Generic Access Service
19:49:50.972 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:49:51.005 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:49:51.005 -> Configuring the Server Nordic Uart Service
19:49:51.005 -> Configuring the Server Device Information Service
19:49:51.005 -> Configuring the Server Cycle Power Service
19:49:51.005 -> Configuring the Server Cadence and Speed Service
19:49:51.005 -> Setting up the Server advertising payload(s)
19:49:51.005 -> Setting Appearance in Advertised data to [1152]
19:49:51.005 -> Setting DeviceName in Advertised data to [SIM32]
19:49:51.038 -> Server is advertising: CPS + Wahoo
19:49:51.038 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:49:51.356 -> Found advertising Peripheral with CPS enabled! See data:
19:49:51.356 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:49:51.356 -> Service Data:
19:49:51.356 -> UUID: 0x1826, Data: �
19:49:52.408 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:49:52.408 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:49:52.408 -> Now checking all Client Services and Characteristics!
19:49:52.449 -> If Mandatory Services Fail --> the Client will disconnect!
19:49:52.821 -> Client Generic Access: Found!
19:49:53.721 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:49:54.555 -> -> Client Reads Appearance: [0]
19:49:55.054 -> Client Device Information Service: Found!
19:49:56.154 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:49:59.071 -> -> Client Reads Serial Number: [221001365]
19:49:59.871 -> Client_CyclingPower_Service: Found!
19:50:01.120 -> Client_Wahoo_ControlPoint_Chr: Found!
19:50:03.421 -> Client_CP_Measurement_Chr: Found!
19:50:07.321 -> Client_CP_Feature_Chr: Found!
19:50:07.722 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:50:10.289 -> Client_CP_Location_Chr: Found!
19:50:10.821 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:50:10.854 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:50:14.721 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:50:38.286 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:50:38.286 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:50:38.286 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:50:38.453 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:50:40.422 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:50:42.355 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:50:42.720 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:50:43.253 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:50:49.754 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:50:51.837 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:50:53.887 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:50:55.920 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:50:57.670 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:50:59.703 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19951
19:51:01.785 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:51:03.787 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:51:05.804 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:51:09.722 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:51:11.752 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19937
19:51:13.736 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:51:15.785 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
19:51:19.737 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19955
19:51:21.787 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19989
19:51:23.836 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20060
19:51:25.784 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20122
19:51:27.854 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20139
19:51:29.886 -> Set Simcline to Percentage: 1.9 % RawgradeValue: 20135
19:51:31.871 -> Set Simcline to Percentage: 1.7 % RawgradeValue: 20117
19:51:33.888 -> Set Simcline to Percentage: 1.4 % RawgradeValue: 20089
19:51:34.049 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:51:35.986 -> Set Simcline to Percentage: 1.2 % RawgradeValue: 20073
19:51:38.037 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20063
19:51:40.021 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20056
19:51:42.067 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20051
19:51:46.021 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20037
19:51:48.003 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20015
19:51:50.036 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 19995
19:51:52.036 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:51:55.970 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19968
19:51:58.003 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:00.084 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19959
19:52:02.037 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:06.069 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:08.102 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19955
19:52:10.069 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:52:12.052 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:52:14.052 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:16.073 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:52:18.119 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19929
19:52:20.119 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:22.154 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19904
19:52:24.054 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:26.102 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:28.153 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19892
19:52:30.119 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:32.168 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19895
19:52:34.085 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:36.102 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:38.153 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:40.152 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:42.253 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:46.153 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:48.185 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:50.219 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:52.251 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:54.134 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:56.170 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:52:58.186 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:53:00.236 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:02.219 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
19:53:04.153 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:06.168 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:08.234 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:10.250 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:12.282 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:16.202 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:18.184 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:20.218 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19947
19:53:22.249 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:24.167 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:26.284 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20037
19:53:28.318 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20051
19:53:30.367 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:32.400 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20061
19:53:34.200 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:36.235 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:38.285 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20031
19:53:40.317 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:42.381 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:53:43.399 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
19:53:43.399 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:53:43.600 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:53:57.165 -> Found advertising Peripheral with CPS enabled! See data:
19:53:57.165 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:53:57.206 -> Service Data:
19:53:57.206 -> UUID: 0x1826, Data: �
19:54:04.316 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:54:04.316 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:54:04.316 -> Now checking all Client Services and Characteristics!
19:54:04.316 -> If Mandatory Services Fail --> the Client will disconnect!
19:54:04.637 -> Client Generic Access: Found!
19:54:05.401 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:54:06.299 -> -> Client Reads Appearance: [0]
19:54:06.917 -> Client Device Information Service: Found!
19:54:08.066 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:54:09.602 -> -> Client Reads Serial Number: [221001365]
19:54:10.218 -> Client_CyclingPower_Service: Found!
19:54:11.368 -> Client_Wahoo_ControlPoint_Chr: Found!
19:54:13.301 -> Client_CP_Measurement_Chr: Found!
19:54:15.417 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:54:16.999 -> Client_CP_Feature_Chr: Found!
19:54:17.217 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:54:17.518 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:54:19.300 -> Client_CP_Location_Chr: Found!
19:54:19.566 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:54:19.801 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:54:19.879 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:54:21.550 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20024
19:54:23.583 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20024
19:54:30.200 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:54:30.200 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:54:30.200 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:54:30.399 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:54:49.531 -> Found advertising Peripheral with CPS enabled! See data:
19:54:49.531 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:54:49.531 -> Service Data:
19:54:49.531 -> UUID: 0x1826, Data: �
19:54:57.432 -> Now checking all Client Services and Characteristics!
19:54:57.432 -> If Mandatory Services Fail --> the Client will disconnect!
19:54:57.432 -> Client Generic Access: NOT Found!
19:54:57.432 -> Device Information Service: NOT Found!
19:54:57.432 -> Mandatory Cycling Power Service: Not Found!

8e start omdat Kickr verbinding wegviel en niet terug kwam
19:55:29.829 ->
19:55:29.829 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:55:29.864 -> ------------------------ Version 01.2 --------------------------
19:55:29.864 -> SIM32
19:55:30.063 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:55:30.063 -> SSD1306 OLED display is running...
19:55:36.566 -> Motor Control Task Created and Active!
19:55:36.566 -> Simcline Basic Motor Funtions are working!!
19:55:36.849 -> Configuring the default Generic Access Service
19:55:36.849 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:55:36.849 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:55:36.849 -> Configuring the Server Nordic Uart Service
19:55:36.849 -> Configuring the Server Device Information Service
19:55:36.849 -> Configuring the Server Cycle Power Service
19:55:36.849 -> Configuring the Server Cadence and Speed Service
19:55:36.849 -> Setting up the Server advertising payload(s)
19:55:36.849 -> Setting Appearance in Advertised data to [1152]
19:55:36.882 -> Setting DeviceName in Advertised data to [SIM32]
19:55:36.882 -> Server is advertising: CPS + Wahoo
19:55:36.882 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:55:38.482 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:55:38.482 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
19:55:38.482 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:55:38.618 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
19:55:39.602 -> Found advertising Peripheral with CPS enabled! See data:
19:55:39.602 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:55:39.602 -> Service Data:
19:55:39.602 -> UUID: 0x1826, Data: �
19:55:40.549 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:55:40.549 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
19:55:40.585 -> Now checking all Client Services and Characteristics!
19:55:40.585 -> If Mandatory Services Fail --> the Client will disconnect!
19:55:41.565 -> Client Generic Access: Found!
19:55:42.166 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:55:42.600 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:55:43.133 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:55:43.215 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:55:45.066 -> -> Client Reads Appearance: [0]
19:55:45.450 -> Client Device Information Service: Found!
19:55:46.365 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:55:48.616 -> -> Client Reads Serial Number: [221001365]
19:55:49.200 -> Client_CyclingPower_Service: Found!
19:55:51.665 -> Client_Wahoo_ControlPoint_Chr: Found!
19:55:55.265 -> Client_CP_Measurement_Chr: Found!
19:55:59.782 -> Client_CP_Feature_Chr: Found!
19:56:00.166 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:56:02.178 -> Client_CP_Location_Chr: Found!
19:56:02.649 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:56:02.729 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:56:03.549 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:56:04.666 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:56:05.866 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:56:27.999 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:56:30.082 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20023
19:56:32.079 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20024
19:56:34.150 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20025
19:56:38.048 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20028
19:56:40.065 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20027
19:56:42.116 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:56:44.079 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20007
19:56:48.099 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:56:50.150 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19938
19:56:52.182 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:56:54.249 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19923
19:56:56.100 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:56:58.149 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19933
19:57:00.132 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:02.177 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:04.199 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:08.148 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19944
19:57:10.182 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
19:57:12.249 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:14.264 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19956
19:57:16.148 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:18.180 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19985
19:57:20.216 -> Set Simcline to Percentage: 0.5 % RawgradeValue: 20003
19:57:22.265 -> Set Simcline to Percentage: 1.3 % RawgradeValue: 20080
19:57:24.251 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:26.284 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:28.332 -> Set Simcline to Percentage: 1.6 % RawgradeValue: 20111
19:57:30.365 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:30.481 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:32.447 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:34.432 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19947
19:57:36.465 -> Set Simcline to Percentage: -0.4 % RawgradeValue: 19910
19:57:38.464 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:57:42.415 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19905
19:57:44.466 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:57:46.497 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
19:57:48.548 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:57:52.481 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:57:54.457 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:57:56.514 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
19:57:58.565 -> Set Simcline to Percentage: 0.7 % RawgradeValue: 20023
19:58:02.497 -> Set Simcline to Percentage: 2.6 % RawgradeValue: 20208
19:58:04.564 -> Set Simcline to Percentage: 3.2 % RawgradeValue: 20268
19:58:06.597 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:08.647 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20334
19:58:10.630 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:12.678 -> Set Simcline to Percentage: 3.9 % RawgradeValue: 20337
19:58:14.694 -> Set Simcline to Percentage: 3.7 % RawgradeValue: 20315
19:58:16.681 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:18.697 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20299
19:58:20.764 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:22.747 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20302
19:58:24.763 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20303
19:58:26.830 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20305
19:58:28.798 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:30.829 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20313
19:58:32.864 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:34.863 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20329
19:58:36.847 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
19:58:40.345 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
19:58:40.345 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:58:40.462 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:58:44.947 -> Found advertising Peripheral with CPS enabled! See data:
19:58:44.947 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:58:44.947 -> Service Data:
19:58:44.947 -> UUID: 0x1826, Data: �
19:58:46.062 -> Now checking all Client Services and Characteristics!
19:58:46.062 -> If Mandatory Services Fail --> the Client will disconnect!
19:58:46.108 -> Client Generic Access: NOT Found!
19:58:46.108 -> Device Information Service: NOT Found!
19:58:46.108 -> Mandatory Cycling Power Service: Not Found!
19:59:42.154 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:59:42.154 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:59:42.154 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:59:42.192 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
19:59:42.192 -> --> ESP32 Server is advertising again!

9e start omdat Kickr verbinding wegviel en niet meer terug kwam
20:00:46.777 ->
20:00:46.777 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:00:46.777 -> ------------------------ Version 01.2 --------------------------
20:00:46.777 -> SIM32
20:00:46.994 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:00:46.994 -> SSD1306 OLED display is running...
20:00:53.461 -> Motor Control Task Created and Active!
20:00:53.461 -> Simcline Basic Motor Funtions are working!!
20:00:53.749 -> Configuring the default Generic Access Service
20:00:53.749 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:00:53.749 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:00:53.783 -> Configuring the Server Nordic Uart Service
20:00:53.783 -> Configuring the Server Device Information Service
20:00:53.783 -> Configuring the Server Cycle Power Service
20:00:53.783 -> Configuring the Server Cadence and Speed Service
20:00:53.783 -> Setting up the Server advertising payload(s)
20:00:53.783 -> Setting Appearance in Advertised data to [1152]
20:00:53.783 -> Setting DeviceName in Advertised data to [SIM32]
20:00:53.783 -> Server is advertising: CPS + Wahoo
20:00:53.783 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:01:00.795 -> Found advertising Peripheral with CPS enabled! See data:
20:01:00.795 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:01:00.795 -> Service Data:
20:01:00.795 -> UUID: 0x1826, Data: �
20:01:01.360 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:01:01.405 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:01:01.405 -> Now checking all Client Services and Characteristics!
20:01:01.405 -> If Mandatory Services Fail --> the Client will disconnect!
20:01:01.627 -> Client Generic Access: Found!
20:01:02.662 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:01:03.475 -> -> Client Reads Appearance: [0]
20:01:04.044 -> Client Device Information Service: Found!
20:01:05.860 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:01:10.095 -> Mandatory Cycling Power Service: Not Found!
20:01:10.095 -> >>> Failed to connect Trainer! Reset ESP32 and try again!
20:01:10.095 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!

10e start omdat er geen fix kwam met Kickr
20:01:55.627 ->
20:01:55.627 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:01:55.627 -> ------------------------ Version 01.2 --------------------------
20:01:55.627 -> SIM32
20:01:55.825 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:01:55.825 -> SSD1306 OLED display is running...
20:02:02.346 -> Motor Control Task Created and Active!
20:02:02.346 -> Simcline Basic Motor Funtions are working!!
20:02:02.611 -> Configuring the default Generic Access Service
20:02:02.611 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:02:02.611 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:02:02.644 -> Configuring the Server Nordic Uart Service
20:02:02.644 -> Configuring the Server Device Information Service
20:02:02.644 -> Configuring the Server Cycle Power Service
20:02:02.644 -> Configuring the Server Cadence and Speed Service
20:02:02.644 -> Setting up the Server advertising payload(s)
20:02:02.644 -> Setting Appearance in Advertised data to [1152]
20:02:02.644 -> Setting DeviceName in Advertised data to [SIM32]
20:02:02.678 -> Server is advertising: CPS + Wahoo
20:02:02.678 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:02:02.892 -> Found advertising Peripheral with CPS enabled! See data:
20:02:02.892 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:02:02.892 -> Service Data:
20:02:02.892 -> UUID: 0x1826, Data: �
20:02:05.133 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:02:05.133 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:02:05.168 -> Now checking all Client Services and Characteristics!
20:02:05.168 -> If Mandatory Services Fail --> the Client will disconnect!
20:02:05.545 -> Client Generic Access: Found!
20:02:06.195 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:02:06.671 -> -> Client Reads Appearance: [0]
20:02:07.043 -> Client Device Information Service: Found!
20:02:07.580 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:02:09.044 -> -> Client Reads Serial Number: [221001365]
20:02:09.394 -> Client_CyclingPower_Service: Found!
20:02:10.195 -> Client_Wahoo_ControlPoint_Chr: Found!
20:02:11.396 -> Client_CP_Measurement_Chr: Found!
20:02:12.541 -> Client_CP_Feature_Chr: Found!
20:02:12.760 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:02:13.194 -> Client_CP_Location_Chr: Found!
20:02:13.495 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:02:13.541 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:02:14.344 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:04:24.624 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:04:24.624 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
20:04:24.665 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:04:24.787 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
20:04:29.025 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
20:04:29.391 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:04:30.041 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
20:04:37.591 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
20:04:44.457 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:04:53.623 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:04:55.674 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:04:57.724 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:04:59.807 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:01.742 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:03.753 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:05.839 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:07.842 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:09.942 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:11.924 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:13.958 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:16.008 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:18.173 -> Set Simcline to Percentage: 1.5 % RawgradeValue: 20104
20:05:20.157 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:41.091 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:05:41.170 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:05:47.390 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20012
20:05:48.090 -> Found advertising Peripheral with CPS enabled! See data:
20:05:48.090 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:05:48.090 -> Service Data:
20:05:48.090 -> UUID: 0x1826, Data: �
20:05:49.540 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19839
20:05:51.039 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:05:51.039 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:05:51.039 -> Now checking all Client Services and Characteristics!
20:05:51.072 -> If Mandatory Services Fail --> the Client will disconnect!
20:05:51.656 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19839
20:05:54.924 -> Client Generic Access: Found!
20:06:14.575 -> -> Client Reads Device Name: []
20:06:14.575 -> Device Information Service: NOT Found!
20:06:14.575 -> Mandatory Cycling Power Service: Not Found!
20:06:14.575 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:06:14.804 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:06:18.922 -> Found advertising Peripheral with CPS enabled! See data:
20:06:18.922 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:06:18.922 -> Service Data:
20:06:18.922 -> UUID: 0x1826, Data: �
20:06:24.673 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:06:24.707 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:06:24.707 -> Now checking all Client Services and Characteristics!
20:06:24.707 -> If Mandatory Services Fail --> the Client will disconnect!
20:06:25.822 -> Client Generic Access: Found!
20:06:26.721 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:06:27.490 -> -> Client Reads Appearance: [0]
20:06:28.042 -> Client Device Information Service: Found!
20:06:28.940 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:06:30.425 -> -> Client Reads Serial Number: [221001365]
20:06:30.773 -> Client_CyclingPower_Service: Found!
20:06:31.724 -> Client_Wahoo_ControlPoint_Chr: Found!
20:06:33.791 -> Client_CP_Measurement_Chr: Found!
20:06:37.440 -> Client_CP_Feature_Chr: Found!
20:06:37.823 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:06:38.106 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19838
20:06:39.643 -> Client_CP_Location_Chr: Found!
20:06:40.040 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:06:40.072 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19838
20:06:40.072 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:06:41.223 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:06:42.092 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19838
20:06:42.239 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
20:06:44.172 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19838
20:06:48.122 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19839
20:06:50.157 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19837
20:06:52.174 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19831
20:06:54.242 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19822
20:06:58.173 -> Set Simcline to Percentage: -1.4 % RawgradeValue: 19812
20:07:00.156 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:07:02.206 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19848
20:07:04.189 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19861
20:07:08.156 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19866
20:07:10.189 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:07:12.288 -> Set Simcline to Percentage: -0.8 % RawgradeValue: 19873
20:07:14.371 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:07:18.222 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19886
20:07:20.271 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19893
20:07:22.323 -> Set Simcline to Percentage: -0.5 % RawgradeValue: 19903
20:07:24.271 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19918
20:07:28.255 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19944
20:07:30.271 -> Set Simcline to Percentage: 0.1 % RawgradeValue: 19955
20:07:32.322 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19971
20:07:34.372 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19979
20:07:36.288 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:07:38.339 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:07:40.739 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
20:07:40.739 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:07:40.820 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:07:51.855 -> Found advertising Peripheral with CPS enabled! See data:
20:07:51.855 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:07:51.896 -> Service Data:
20:07:51.896 -> UUID: 0x1826, Data: �
20:07:53.029 -> Now checking all Client Services and Characteristics!
20:07:53.029 -> If Mandatory Services Fail --> the Client will disconnect!
20:07:53.029 -> Client Generic Access: NOT Found!
20:07:53.029 -> Device Information Service: NOT Found!
20:07:53.029 -> Mandatory Cycling Power Service: Not Found!
20:09:21.214 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
20:09:21.214 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:09:21.258 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
20:09:21.258 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
20:09:21.258 -> --> ESP32 Server is advertising again!
Kickr werd niet meer gevonden..

Gestopt, alles uit gezet, gedouched en met analyse begonnen.

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 3, 2024

image

@Berg0162
Copy link
Owner

Berg0162 commented Dec 4, 2024

Beste Jan-Willem,
Behoorlijk frustrerend voor je lijkt me! Ik heb de output goed bekeken en ik zie geen problemen, die zich ook niet al eerder hadden voorgedaan met jouw Kickr! Kortom we gaan gewoon door, stap voor stap met het lijstje afwerken!
Ik was in afwachting van een Tools menu screenshot en inderdaad de settings staan allemaal goed! Mooi!
Hieronder een nieuw stukje code (voor jouw versie v12) , toegevoegd aan de client_Connect_callback functie om bij het connecten van de trainer eventuele traagheid (bij oudere modellen) op te vangen.

bool client_Connect_Callback(void) {
    // Every time we want to connect to a Server a NEW Client is created !!
    pClient_Wahoo = BLEDevice::createClient(); 
    pClient_Wahoo->setClientCallbacks(new client_Connection_Callbacks());
    // Connect to the Wahoo BLE Server.
    pClient_Wahoo->connect(myDevice);

    // NEW inserted code
    // Wait until Client connection is established, Kickr may need some extra time....
    DEBUG_PRINTLN("Check Kickr is connected!");
    while(!pClient_Wahoo->isConnected()) {
      delay(20);
    }
    DEBUG_PRINTLN("Done!");

    DEBUG_PRINTLN("Now checking all Client Services and Characteristics!");
    DEBUG_PRINTLN("If Mandatory Services Fail --> the Client will disconnect!");

De bedoeling is dat jezelf dat stukje toevoegt (op de juiste plaats en in jouw actuele versie) en vervolgens weer compileert en upload naar de Feather (Simcline). Dat moet toch wel lukken?
Vervolgens weer 3-5 keer testen van de Simcline opstart fase tot en met het (succesvol?) connecten van de Trainer. Zwift tussen de stappen door steeds afluiten (-> EXIT) en Simcline resetten. Ik ben geinteresseerd in een output van een mislukte connectie en in een output van succesvol connecten...
Succes!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 4, 2024

Hoi Jörgen, vanavond testavond. Over het algemeen kan ik positief berichten over de eerste fix met Kickr na de aanpassing. Echter is de verbinding nog verre van stabiel. Wellicht kun je wat met deze 7 pogingen ;-)

1e poging aangepaste versie V12
19:52:23.910 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:52:23.910 -> ------------------------ Version 01.21 -------------------------
19:52:23.910 -> SIM32
19:52:24.091 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:52:24.124 -> SSD1306 OLED display is running...
19:52:30.612 -> Motor Control Task Created and Active!
19:52:30.612 -> Simcline Basic Motor Funtions are working!!
19:52:30.860 -> Configuring the default Generic Access Service
19:52:30.860 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:52:30.894 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:52:30.894 -> Configuring the Server Nordic Uart Service
19:52:30.894 -> Configuring the Server Device Information Service
19:52:30.894 -> Configuring the Server Cycle Power Service
19:52:30.894 -> Configuring the Server Cadence and Speed Service
19:52:30.894 -> Setting up the Server advertising payload(s)
19:52:30.894 -> Setting Appearance in Advertised data to [1152]
19:52:30.894 -> Setting DeviceName in Advertised data to [SIM32]
19:52:30.934 -> Server is advertising: CPS + Wahoo
19:52:30.934 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:53:29.246 -> Found advertising Peripheral with CPS enabled! See data:
19:53:29.246 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:53:29.246 -> Service Data:
19:53:29.246 -> UUID: 0x1826, Data: �
19:53:29.792 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:53:29.792 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:53:29.826 -> Check Kickr is connected!
19:53:29.826 -> Done!
19:53:29.826 -> Now checking all Client Services and Characteristics!
19:53:29.826 -> If Mandatory Services Fail --> the Client will disconnect!
19:53:33.562 -> Client_CyclingPower_Service: Found!
19:53:34.245 -> Client_Wahoo_ControlPoint_Chr: Found!
19:53:35.694 -> Client_CP_Measurement_Chr: Found!
19:53:37.262 -> Client_CP_Feature_Chr: Found!
19:53:37.344 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:53:37.981 -> Client_CP_Location_Chr: Found!
19:53:38.212 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:53:38.258 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
19:53:38.910 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:54:36.399 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:54:36.500 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:55:09.114 -> Found advertising Peripheral with CPS enabled! See data:
19:55:09.114 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:55:09.156 -> Service Data:
19:55:09.156 -> UUID: 0x1826, Data: �
19:55:11.279 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:55:11.320 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:55:11.320 -> Check Kickr is connected!
19:55:11.320 -> Done!
19:55:11.320 -> Now checking all Client Services and Characteristics!
19:55:11.320 -> If Mandatory Services Fail --> the Client will disconnect!
19:55:14.521 -> Client Generic Access: Found!
19:55:17.338 -> Device Information Service: NOT Found!
19:55:17.338 -> Mandatory Cycling Power Service: Not Found!
19:55:17.380 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:55:17.570 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:55:17.614 -> Found advertising Peripheral with CPS enabled! See data:
19:55:17.614 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:55:17.614 -> Service Data:
19:55:17.614 -> UUID: 0x1826, Data: �
19:55:21.675 -> Check Kickr is connected!
19:55:21.973 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:55:21.973 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
19:55:21.973 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:55:22.320 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
19:55:25.753 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:55:26.088 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:55:26.602 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:55:43.808 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:55:43.808 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:55:43.808 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:55:43.808 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
19:55:43.851 -> --> ESP32 Server is advertising again!
19:56:00.241 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:56:00.241 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
19:56:00.283 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:56:00.386 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
19:56:03.886 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:56:04.306 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:56:04.786 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:56:10.322 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:56:10.322 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:56:10.322 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:56:10.322 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
19:56:10.363 -> --> ESP32 Server is advertising again!
Tijdens het pairen met Zwift viel de verbinding met Kickr weg en kwam niet meer terug.

2e poging
20:00:57.546 ->
20:00:57.546 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:00:57.546 -> ------------------------ Version 01.21 -------------------------
20:00:57.546 -> SIM32
20:00:57.786 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:00:57.786 -> SSD1306 OLED display is running...
20:01:04.304 -> Motor Control Task Created and Active!
20:01:04.304 -> Simcline Basic Motor Funtions are working!!
20:01:04.567 -> Configuring the default Generic Access Service
20:01:04.567 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:01:04.567 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:01:04.567 -> Configuring the Server Nordic Uart Service
20:01:04.567 -> Configuring the Server Device Information Service
20:01:04.567 -> Configuring the Server Cycle Power Service
20:01:04.567 -> Configuring the Server Cadence and Speed Service
20:01:04.567 -> Setting up the Server advertising payload(s)
20:01:04.567 -> Setting Appearance in Advertised data to [1152]
20:01:04.615 -> Setting DeviceName in Advertised data to [SIM32]
20:01:04.615 -> Server is advertising: CPS + Wahoo
20:01:04.615 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:01:14.368 -> Found advertising Peripheral with CPS enabled! See data:
20:01:14.368 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:01:14.368 -> Service Data:
20:01:14.368 -> UUID: 0x1826, Data: �
20:01:14.561 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:01:14.601 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:01:14.601 -> Check Kickr is connected!
20:01:14.601 -> Done!
20:01:14.601 -> Now checking all Client Services and Characteristics!
20:01:14.601 -> If Mandatory Services Fail --> the Client will disconnect!
20:01:15.108 -> Client Generic Access: Found!
20:01:15.852 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:01:16.440 -> -> Client Reads Appearance: [0]
20:01:17.221 -> Client Device Information Service: Found!
20:01:17.985 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:01:20.736 -> -> Client Reads Serial Number: [221001365]
20:01:21.509 -> Client_CyclingPower_Service: Found!
20:01:24.922 -> Client_Wahoo_ControlPoint_Chr: Found!
20:01:28.903 -> Client_CP_Measurement_Chr: Found!
20:01:33.390 -> Client_CP_Feature_Chr: Found!
20:01:34.672 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:01:39.385 -> Client_CP_Location_Chr: Found!
20:01:39.989 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:01:40.022 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:01:43.061 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:03:14.886 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:03:14.886 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
20:03:14.886 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:03:15.080 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
20:03:16.500 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
20:03:18.705 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
20:03:19.218 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:03:19.983 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
20:03:59.998 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:02.051 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:09.853 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:11.863 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:13.930 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:15.921 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:04:17.922 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:19.967 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:21.952 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:04:23.996 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:25.996 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:28.033 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20300
20:04:56.041 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20172
20:04:58.044 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:04:58.193 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:00.110 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
20:05:02.179 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:04.198 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:05:06.220 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:10.211 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:12.315 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
20:05:14.149 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:16.191 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:05:18.148 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:05:21.356 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
20:05:21.396 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:05:21.469 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:05:29.613 -> Found advertising Peripheral with CPS enabled! See data:
20:05:29.614 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:05:29.614 -> Service Data:
20:05:29.614 -> UUID: 0x1826, Data: �
20:05:35.283 -> Check Kickr is connected!
20:07:03.668 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
20:07:03.668 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:07:03.668 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
20:07:03.668 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
20:07:03.668 -> --> ESP32 Server is advertising again!
Verbinding met Kickr viel weg onder het fietsen van een route en kwam niet meer terug. Zwift afgesloten.

3e poging
20:13:41.555 ->
20:13:41.555 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:13:41.555 -> ------------------------ Version 01.21 -------------------------
20:13:41.555 -> SIM32
20:13:41.790 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:13:41.790 -> SSD1306 OLED display is running...
20:13:48.260 -> Motor Control Task Created and Active!
20:13:48.260 -> Simcline Basic Motor Funtions are working!!
20:13:48.558 -> Configuring the default Generic Access Service
20:13:48.558 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:13:48.558 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:13:48.558 -> Configuring the Server Nordic Uart Service
20:13:48.558 -> Configuring the Server Device Information Service
20:13:48.558 -> Configuring the Server Cycle Power Service
20:13:48.593 -> Configuring the Server Cadence and Speed Service
20:13:48.593 -> Setting up the Server advertising payload(s)
20:13:48.593 -> Setting Appearance in Advertised data to [1152]
20:13:48.593 -> Setting DeviceName in Advertised data to [SIM32]
20:13:48.593 -> Server is advertising: CPS + Wahoo
20:13:48.593 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:13:59.457 -> Found advertising Peripheral with CPS enabled! See data:
20:13:59.457 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:13:59.457 -> Service Data:
20:13:59.457 -> UUID: 0x1826, Data: �
20:14:00.178 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:14:00.178 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:14:00.214 -> Check Kickr is connected!
20:14:00.214 -> Done!
20:14:00.214 -> Now checking all Client Services and Characteristics!
20:14:00.214 -> If Mandatory Services Fail --> the Client will disconnect!
20:14:00.875 -> Client Generic Access: Found!
20:14:02.723 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:14:03.438 -> -> Client Reads Appearance: [0]
20:14:04.147 -> Client Device Information Service: Found!
20:14:05.709 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:14:09.426 -> -> Client Reads Serial Number: [221001365]
20:14:10.419 -> Client_CyclingPower_Service: Found!
20:14:12.574 -> Client_Wahoo_ControlPoint_Chr: Found!
20:14:16.790 -> Client_CP_Measurement_Chr: Found!
20:14:23.189 -> Client_CP_Feature_Chr: Found!
20:14:24.661 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:14:27.393 -> Client_CP_Location_Chr: Found!
20:14:27.890 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:14:27.931 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:14:29.204 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:14:43.957 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:14:44.001 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:14:56.574 -> Found advertising Peripheral with CPS enabled! See data:
20:14:56.574 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:14:56.574 -> Service Data:
20:14:56.574 -> UUID: 0x1826, Data: �
20:14:58.657 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:14:58.657 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:14:58.657 -> Check Kickr is connected!
20:14:58.657 -> Done!
20:14:58.657 -> Now checking all Client Services and Characteristics!
20:14:58.657 -> If Mandatory Services Fail --> the Client will disconnect!
20:14:59.525 -> Client Generic Access: Found!
20:15:00.823 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:15:01.572 -> -> Client Reads Appearance: [0]
20:15:02.109 -> Client Device Information Service: Found!
20:15:02.874 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:15:05.141 -> -> Client Reads Serial Number: [221001365]
20:15:05.877 -> Client_CyclingPower_Service: Found!
20:15:07.172 -> Client_Wahoo_ControlPoint_Chr: Found!
20:15:09.291 -> Client_CP_Measurement_Chr: Found!
20:15:17.758 -> Client_CP_Feature_Chr: Found!
20:15:22.474 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:15:25.888 -> Client_CP_Location_Chr: Found!
20:15:27.276 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:15:27.344 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:15:30.261 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:15:58.029 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:15:58.029 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
20:15:58.029 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:15:58.139 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
20:15:59.590 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
20:16:01.657 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
20:16:02.042 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:16:02.537 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
20:16:31.509 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:16:38.494 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:40.534 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:42.574 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:44.554 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:46.622 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:48.649 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:16:50.696 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20314
20:17:17.325 -> Set Simcline to Percentage: 2.2 % RawgradeValue: 20168
20:17:19.370 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:19.493 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:21.472 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:23.502 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:25.557 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:27.620 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:31.487 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:33.472 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:35.522 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:37.533 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:41.442 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:43.503 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:45.520 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:47.588 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:51.453 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:17:53.522 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:55.554 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:17:57.600 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:01.608 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:03.574 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:05.635 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:07.670 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:11.554 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:13.608 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:15.654 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:17.692 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:21.572 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:23.612 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:18:25.620 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:27.637 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19987
20:18:31.606 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:33.655 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19935
20:18:35.702 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:37.691 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:39.651 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:41.672 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:43.712 -> Set Simcline to Percentage: -0.3 % RawgradeValue: 19919
20:18:45.788 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:47.803 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20295
20:18:49.832 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:51.872 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:53.932 -> Set Simcline to Percentage: 0.8 % RawgradeValue: 20027
20:18:54.048 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:56.034 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:18:58.054 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:19:00.107 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:19:02.890 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
20:19:02.890 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:19:02.968 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:19:50.423 -> Found advertising Peripheral with CPS enabled! See data:
20:19:50.423 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:19:50.423 -> Service Data:
20:19:50.423 -> UUID: 0x1826, Data: �
20:20:14.767 -> Check Kickr is connected!
20:20:45.404 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
20:20:45.448 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:20:45.448 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
20:20:45.448 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
20:20:45.448 -> --> ESP32 Server is advertising again!
Kickr verbinding viel weer weg onder het fietsen van een route in Zwift en kwam niet meer terug. Alles weer afgesloten en opnieuw gestart

4e poging
20:25:50.945 ->
20:25:50.945 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:25:50.945 -> ------------------------ Version 01.21 -------------------------
20:25:50.945 -> SIM32
20:25:51.168 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:25:51.168 -> SSD1306 OLED display is running...
20:25:57.665 -> Motor Control Task Created and Active!
20:25:57.665 -> Simcline Basic Motor Funtions are working!!
20:25:57.910 -> Configuring the default Generic Access Service
20:25:57.910 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:25:57.943 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:25:57.943 -> Configuring the Server Nordic Uart Service
20:25:57.943 -> Configuring the Server Device Information Service
20:25:57.943 -> Configuring the Server Cycle Power Service
20:25:57.943 -> Configuring the Server Cadence and Speed Service
20:25:57.943 -> Setting up the Server advertising payload(s)
20:25:57.943 -> Setting Appearance in Advertised data to [1152]
20:25:57.943 -> Setting DeviceName in Advertised data to [SIM32]
20:25:57.980 -> Server is advertising: CPS + Wahoo
20:25:57.980 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:26:06.279 -> Found advertising Peripheral with CPS enabled! See data:
20:26:06.279 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:26:06.279 -> Service Data:
20:26:06.279 -> UUID: 0x1826, Data: �
20:26:09.380 -> Check Kickr is connected!
Geen fix met Kickr te krijgen, nieuwe poging

5e poging
20:28:52.401 ->
20:28:52.401 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
20:28:52.440 -> ------------------------ Version 01.21 -------------------------
20:28:52.440 -> SIM32
20:28:52.625 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
20:28:52.663 -> SSD1306 OLED display is running...
20:28:59.174 -> Motor Control Task Created and Active!
20:28:59.174 -> Simcline Basic Motor Funtions are working!!
20:28:59.412 -> Configuring the default Generic Access Service
20:28:59.412 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:28:59.443 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
20:28:59.443 -> Configuring the Server Nordic Uart Service
20:28:59.443 -> Configuring the Server Device Information Service
20:28:59.443 -> Configuring the Server Cycle Power Service
20:28:59.443 -> Configuring the Server Cadence and Speed Service
20:28:59.443 -> Setting up the Server advertising payload(s)
20:28:59.443 -> Setting Appearance in Advertised data to [1152]
20:28:59.443 -> Setting DeviceName in Advertised data to [SIM32]
20:28:59.483 -> Server is advertising: CPS + Wahoo
20:28:59.483 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:29:19.880 -> Found advertising Peripheral with CPS enabled! See data:
20:29:19.880 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:29:19.924 -> Service Data:
20:29:19.924 -> UUID: 0x1826, Data: �
20:29:20.532 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:29:20.576 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:29:20.576 -> Check Kickr is connected!
20:29:20.576 -> Done!
20:29:20.576 -> Now checking all Client Services and Characteristics!
20:29:20.576 -> If Mandatory Services Fail --> the Client will disconnect!
20:29:21.600 -> Client Generic Access: Found!
20:29:23.309 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:29:23.969 -> -> Client Reads Appearance: [0]
20:29:25.148 -> Client Device Information Service: Found!
20:29:26.112 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:29:29.025 -> -> Client Reads Serial Number: [221001365]
20:29:30.560 -> Client_CyclingPower_Service: Found!
20:29:34.180 -> Client_Wahoo_ControlPoint_Chr: Found!
20:29:42.879 -> Client_CP_Measurement_Chr: Found!
20:29:52.979 -> Client_CP_Feature_Chr: Found!
20:29:53.295 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:29:59.513 -> Client_CP_Location_Chr: Found!
20:29:59.813 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:29:59.859 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:30:03.809 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:30:16.578 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:30:16.621 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
20:31:29.544 -> Found advertising Peripheral with CPS enabled! See data:
20:31:29.544 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:31:29.544 -> Service Data:
20:31:29.544 -> UUID: 0x1826, Data: �
20:31:36.582 -> Check Kickr is connected!
20:31:37.011 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:31:37.011 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
20:31:37.011 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:31:37.123 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
20:32:07.179 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
20:32:07.179 -> --> ESP32 Server is advertising again!
20:32:08.012 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:32:08.012 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
20:32:08.012 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:32:08.126 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
20:32:40.890 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
20:32:40.890 -> --> ESP32 Server is advertising again!
tijdens het opstarten van Zwift viel de verbinding met Kickr weg en kwam niet meer terug

6e poging met V11 en delay voor Kickr om even uit te testen of dit enige verbetering gaf
20:52:06.065 -> Motor Control Task Created and Active!
20:52:12.239 -> Simcline Basic Motor Funtions are working!!
20:52:12.504 -> Configuring the default Generic Access Service
20:52:12.504 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
20:52:12.504 -> Successfully Set Generic Access Device Name Chr value to: [Sim ESP32]
20:52:12.504 -> Configuring the Server Nordic Uart Service
20:52:12.504 -> Configuring the Server Device Information Service
20:52:12.504 -> Configuring the Server Cycle Power Service
20:52:12.504 -> Configuring the Server Cadence and Speed Service
20:52:12.542 -> Setting up the Server advertising payload(s)
20:52:12.542 -> Setting Appearance in Advertised data to [1152]
20:52:12.542 -> Server is advertising: CPS + Wahoo
20:52:12.542 -> Client Starts Scanning for Server Device with CPS + Wahoo!
20:52:24.709 -> Found advertising Peripheral with CPS enabled! See data:
20:52:24.709 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:52:24.709 -> Service Data:
20:52:24.709 -> UUID: 0x1826, Data: �
20:52:25.575 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:52:25.575 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:52:25.575 -> Check Kickr is connected!
20:52:25.575 -> Done!
20:52:25.575 -> Now checking all Client Services and Characteristics!
20:52:25.575 -> If Mandatory Services Fail --> the Client will disconnect!
20:52:26.651 -> Client Generic Access: Found!
20:52:27.407 -> -> Client Reads Device Name: [KICKR CORE 287D]
20:52:29.289 -> -> Client Reads Appearance: [0]
20:52:30.002 -> Client Device Information Service: Found!
20:52:31.128 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
20:52:34.813 -> -> Client Reads Serial Number: [221001365]
20:52:38.551 -> Client_CyclingPower_Service: Found!
20:52:43.290 -> Client_Wahoo_ControlPoint_Chr: Found!
20:52:53.389 -> Client_CP_Measurement_Chr: Found!
20:52:57.273 -> Client_CP_Feature_Chr: Found!
20:52:57.754 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
20:52:59.261 -> Client_CP_Location_Chr: Found!
20:53:00.160 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
20:53:00.238 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
20:53:01.673 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
20:54:13.453 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
20:54:13.496 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
20:54:13.496 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
20:54:13.587 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
20:54:14.956 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
20:54:17.707 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
20:54:18.092 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:54:18.570 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
20:54:34.087 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:36.096 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:38.142 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:40.158 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:42.128 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:54:44.191 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:54:46.208 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:53.467 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:55.588 -> Set Simcline to Percentage: 5.1 % RawgradeValue: 20464
20:54:57.606 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:54:59.646 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:25.059 -> Set Simcline to Percentage: 3.5 % RawgradeValue: 20298
20:55:27.207 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:55:29.227 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:31.289 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:55:33.338 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:35.320 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
20:55:39.324 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:55:41.385 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:43.423 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:55:45.385 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
20:55:49.369 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:51.366 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:53.375 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
20:55:55.425 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:57.337 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:55:59.356 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:56:01.403 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
20:56:03.406 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:56:05.443 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
20:56:06.758 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
20:56:06.758 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:56:06.968 -> Client Starts Scanning again for Server Device with CPS + Wahoo!
20:56:37.020 -> Found advertising Peripheral with CPS enabled! See data:
20:56:37.020 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:56:37.020 -> Service Data:
20:56:37.020 -> UUID: 0x1826, Data: �
20:56:39.508 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
20:56:39.508 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
20:56:39.553 -> Check Kickr is connected!
20:56:39.553 -> Done!
20:56:39.553 -> Now checking all Client Services and Characteristics!
20:56:39.553 -> If Mandatory Services Fail --> the Client will disconnect!
20:56:44.493 -> Client Generic Access: NOT Found!
20:56:44.493 -> Device Information Service: NOT Found!
20:56:44.493 -> Mandatory Cycling Power Service: Not Found!
20:56:44.493 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
20:56:44.686 -> Client Starts Scanning again for Server Device with CPS + Wahoo!
20:56:47.591 -> Found advertising Peripheral with CPS enabled! See data:
20:56:47.591 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
20:56:47.632 -> Service Data:
20:56:47.632 -> UUID: 0x1826, Data: �
20:56:50.853 -> Check Kickr is connected!
20:57:11.309 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
20:57:11.309 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
20:57:11.309 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
20:57:11.309 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
20:57:11.352 -> --> ESP32 Server is advertising again!
Kickr verloor opnieuw (toevallig op hetzelfde punt in de Volcano Circuit route, de verbinding. V11 maakt dus geen verschil

V12 weer geladen voor de laatste poging (7) van vandaag, Kickr Fix ging goed, Zwift fix ging ook goed
21:02:49.044 ->
21:02:49.044 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
21:02:49.044 -> ------------------------ Version 01.21 -------------------------
21:02:49.044 -> SIM32
21:02:49.250 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
21:02:49.250 -> SSD1306 OLED display is running...
21:02:55.768 -> Motor Control Task Created and Active!
21:02:55.768 -> Simcline Basic Motor Funtions are working!!
21:02:56.031 -> Configuring the default Generic Access Service
21:02:56.031 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
21:02:56.031 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
21:02:56.031 -> Configuring the Server Nordic Uart Service
21:02:56.031 -> Configuring the Server Device Information Service
21:02:56.031 -> Configuring the Server Cycle Power Service
21:02:56.064 -> Configuring the Server Cadence and Speed Service
21:02:56.064 -> Setting up the Server advertising payload(s)
21:02:56.064 -> Setting Appearance in Advertised data to [1152]
21:02:56.064 -> Setting DeviceName in Advertised data to [SIM32]
21:02:56.064 -> Server is advertising: CPS + Wahoo
21:02:56.064 -> Client Starts Scanning for Server Device with CPS + Wahoo!
21:03:09.567 -> Found advertising Peripheral with CPS enabled! See data:
21:03:09.567 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:03:09.606 -> Service Data:
21:03:09.606 -> UUID: 0x1826, Data: �
21:03:09.844 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:03:09.844 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:03:09.882 -> Check Kickr is connected!
21:03:09.882 -> Done!
21:03:09.882 -> Now checking all Client Services and Characteristics!
21:03:09.882 -> If Mandatory Services Fail --> the Client will disconnect!
21:03:10.180 -> Client Generic Access: Found!
21:03:10.961 -> -> Client Reads Device Name: [KICKR CORE 287D]
21:03:11.985 -> -> Client Reads Appearance: [0]
21:03:12.616 -> Client Device Information Service: Found!
21:03:13.416 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
21:03:15.216 -> -> Client Reads Serial Number: [221001365]
21:03:15.684 -> Client_CyclingPower_Service: Found!
21:03:16.465 -> Client_Wahoo_ControlPoint_Chr: Found!
21:03:17.881 -> Client_CP_Measurement_Chr: Found!
21:03:19.698 -> Client_CP_Feature_Chr: Found!
21:03:19.991 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
21:03:22.135 -> Client_CP_Location_Chr: Found!
21:03:22.478 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
21:03:22.513 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
21:03:23.765 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
21:06:56.310 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
21:06:56.310 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
21:06:56.310 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
21:06:57.036 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
21:06:57.111 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
21:07:01.627 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
21:07:01.979 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:07:02.511 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
21:07:15.546 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:17.572 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:19.541 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:21.624 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:23.627 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:07:25.595 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:27.665 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:29.692 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:38.909 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:41.014 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:07:43.047 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:45.062 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:07:47.079 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:49.064 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:51.108 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:07:53.225 -> Set Simcline to Percentage: 3.8 % RawgradeValue: 20327
21:08:24.045 -> Set Simcline to Percentage: 2.5 % RawgradeValue: 20195
21:08:26.028 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:08:26.137 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:08:28.197 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:30.230 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:32.264 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:34.343 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:38.227 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:40.175 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:42.241 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:44.275 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:48.212 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:50.244 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:52.283 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:08:54.358 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:08:58.313 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:00.323 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:02.393 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:04.412 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:08.258 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:10.293 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:12.293 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:14.308 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:18.340 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:20.378 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:22.422 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:24.442 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:28.343 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:30.397 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:32.443 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:34.463 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:09:38.393 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:40.407 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:42.442 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:09:44.525 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19976
21:09:46.411 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:48.427 -> Set Simcline to Percentage: 0.3 % RawgradeValue: 19984
21:09:50.422 -> Set Simcline to Percentage: 0.2 % RawgradeValue: 19969
21:09:52.489 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:54.510 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:56.382 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:09:58.479 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19858
21:10:00.442 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19831
21:10:02.580 -> Set Simcline to Percentage: -1.2 % RawgradeValue: 19830
21:10:04.582 -> Set Simcline to Percentage: -0.9 % RawgradeValue: 19860
21:10:08.421 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:10.490 -> Set Simcline to Percentage: 3.1 % RawgradeValue: 20263
21:10:12.513 -> Set Simcline to Percentage: 3.6 % RawgradeValue: 20313
21:10:14.558 -> Set Simcline to Percentage: 3.3 % RawgradeValue: 20283
21:10:16.560 -> Set Simcline to Percentage: 2.4 % RawgradeValue: 20185
21:10:18.590 -> Set Simcline to Percentage: 1.0 % RawgradeValue: 20054
21:10:18.696 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:20.696 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:22.731 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19949
21:10:24.716 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19940
21:10:26.762 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19936
21:10:30.697 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:32.740 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:34.724 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:36.758 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:40.729 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:42.743 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:44.757 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:46.848 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:10:48.680 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:10:50.661 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:10:52.740 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:54.772 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:10:56.812 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:00.765 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19946
21:11:02.757 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:04.795 -> Set Simcline to Percentage: 2.0 % RawgradeValue: 20145
21:11:06.762 -> Set Simcline to Percentage: 5.7 % RawgradeValue: 20517
21:11:08.812 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:10.812 -> Set Simcline to Percentage: 5.6 % RawgradeValue: 20514
21:11:12.822 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:14.780 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:16.857 -> Set Simcline to Percentage: 0.9 % RawgradeValue: 20040
21:11:16.957 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:18.874 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:20.921 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:22.919 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:24.938 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:28.957 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:31.005 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:32.987 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:34.996 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:11:36.916 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:38.938 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19935
21:11:40.969 -> Set Simcline to Percentage: -0.1 % RawgradeValue: 19939
21:11:43.157 -> Set Simcline to Percentage: 0.4 % RawgradeValue: 19991
21:11:44.987 -> Set Simcline to Percentage: 2.5 % RawgradeValue: 20204
21:11:47.008 -> Set Simcline to Percentage: 4.2 % RawgradeValue: 20374
21:11:49.039 -> Set Simcline to Percentage: 3.4 % RawgradeValue: 20294
21:11:51.075 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:53.116 -> Set Simcline to Percentage: -0.6 % RawgradeValue: 19895
21:11:55.184 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19852
21:11:57.220 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:11:59.254 -> Set Simcline to Percentage: -1.0 % RawgradeValue: 19851
21:12:03.225 -> Set Simcline to Percentage: 1.1 % RawgradeValue: 20060
21:12:05.253 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:07.276 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19836
21:12:09.316 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:11.368 -> Set Simcline to Percentage: -1.6 % RawgradeValue: 19788
21:12:13.419 -> Set Simcline to Percentage: -1.5 % RawgradeValue: 19798
21:12:15.375 -> Set Simcline to Percentage: -0.7 % RawgradeValue: 19878
21:12:15.520 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:17.510 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:19.524 -> Set Simcline to Percentage: 0.6 % RawgradeValue: 20006
21:12:21.525 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:23.539 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:25.459 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:27.522 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:29.539 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:12:31.606 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:33.594 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:12:35.569 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:37.519 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:12:39.590 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:41.606 -> Set Simcline to Percentage: 0.0 % RawgradeValue: 19950
21:12:43.671 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:47.539 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:49.671 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:51.702 -> Set Simcline to Percentage: -0.2 % RawgradeValue: 19933
21:12:53.688 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:57.655 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:12:59.689 -> Set Simcline to Percentage: -2.2 % RawgradeValue: 19731
21:13:01.725 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:13:03.798 -> Set Simcline to Percentage: -1.5 % RawgradeValue: 19803
21:13:07.732 -> Set Simcline to Percentage: -1.1 % RawgradeValue: 19836
21:13:09.618 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:13:11.674 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19948
21:13:13.790 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:13:15.619 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:13:17.642 -> >>> Error: NOT responding to Wahoo Control Point -> Write Value!
21:13:17.642 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
21:13:17.829 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
21:13:19.375 -> Found advertising Peripheral with CPS enabled! See data:
21:13:19.375 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:13:19.375 -> Service Data:
21:13:19.375 -> UUID: 0x1826, Data: �
21:13:30.552 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:13:30.552 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:13:30.595 -> Check Kickr is connected!
21:13:30.595 -> Done!
21:13:30.595 -> Now checking all Client Services and Characteristics!
21:13:30.595 -> If Mandatory Services Fail --> the Client will disconnect!
21:13:31.456 -> Client Generic Access: Found!
21:13:34.209 -> -> Client Reads Device Name: [KICKR CORE 287D]
21:13:38.184 -> -> Client Reads Appearance: [0]
21:13:42.705 -> Client Device Information Service: Found!
21:13:46.722 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
21:14:04.486 -> -> Client Reads Serial Number: [221001365]
21:14:08.009 -> Client_CyclingPower_Service: Found!
21:14:11.685 -> Client_Wahoo_ControlPoint_Chr: Found!
21:14:15.108 -> Client_CP_Measurement_Chr: Found!
21:14:17.033 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:14:18.219 -> Client_CP_Feature_Chr: Found!
21:14:18.625 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
21:14:19.039 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:14:20.492 -> Client_CP_Location_Chr: Found!
21:14:20.886 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
21:14:20.956 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
21:14:21.036 -> -> Server Rec'd Raw Wahoo Control Point Data --> SKIPPED: Out of Synch!
21:14:22.293 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
21:14:23.072 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:14:23.286 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
21:14:25.098 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:14:29.026 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:14:31.005 -> Set Simcline to Percentage: -0.0 % RawgradeValue: 19950
21:14:35.010 -> Set Simcline to Percentage: -1.3 % RawgradeValue: 19820
21:14:43.843 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
21:14:43.843 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:14:43.843 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
21:14:43.843 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
21:14:43.889 -> --> ESP32 Server is advertising again!
21:14:44.708 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!
In de Volcano route verloor Kickr de verbinding weer, nu na 2,3km terwijl ik even de benen stil hield

@Berg0162
Copy link
Owner

Berg0162 commented Dec 5, 2024

Super bedankt! Connect gaat eigenlijk altijd goed, het is vooral reconnect (na een disconnect) dat problematisch is! Verder is dat spontaan afbreken (disconnect) natuurlijk opvallend. Dat was het al zichtbaar vanaf de allereerste uitdraai die je stuurde. Heel irritant! Vanavond heb ik wat anders te doen maar morgenochtend stuur ik een nieuwe versie (1.4) die beide problemen adresseert. Daar was ik al eerder aan begonnen!
Fijne avond!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 5, 2024 via email

@Berg0162
Copy link
Owner

Berg0162 commented Dec 6, 2024

Versie 1.4 staat klaar in Github. Deze versie heeft letterlijk uren op de pijnbank gelegen en is vele malen getest op Sands&Sequioas. Blijkt in mijn test omgeving heel stabiel (100% score), maar ja dat is niet hetzelfde als met jouw Kickr versie...
Ik heb veel getest op connect en vooral reconnect na een geforceerde disconnect, door the trainer tijdens de rit te resetten (dat is werkelijk worst case). Het duurt dan in mijn opstelling 2 seconden en alles werkt weer alsof er niets is gebeurd. Zwift ziet dus maar heel kort een connectie probleem en heeft geen reden de Simcline eruit te gooien, gaat in 2 seconden gewoon verder met de rit! Al je test werk heeft duidelijk gemaakt dat de "// New code" in versie 1.21 geen enkel verschil maakt... In plaats daarvan heb ik in v14 een andere aanpak gevolgd en die "New code" zul je dus niet meer terugvinden. De stabiele v14 is ook het gevolg van een andere aanpak met het verwerken van de Wahoo Control Point data. (te ingewikkeld om uit te leggen). Waar het op neer komt is dat de code daar robuster met het afhandelen van onregelmatigheden omgaat. Zwift stuurt regelmatig commando's (iedere 2 seconden) maar eens in de zoveel tijd doet Zwift dat heel snel achter elkaar. Het kan dan voorkomen dat Simcline nog niet klaar is met het afhandelen/doorgeven van het laatste commando en dan hup komt er weer een nieuwe, geheel "Out of Synch". De huidige code kan daar beter mee omgaan en zorgt ervoor dat er geen paniek ontstaat!
Ik heb het resultaat van #define DEBUG_WAHOO_CONTROLPOINT_OPCODE_DATA zo gemaakt dat alle Zwift interventies nu ook getimed worden. Dus a.u.b laat deze "aan" staan zoals in het originele v14 codel! Geeft je ook beter inzicht in wat Zwift allemaal naar de Kickr stuurt, wanneer en in welk tempo!

Vergeet niet om jouw setup specifieke settings (Mac Addresses en Min en Max position) in deze v14 aan te brengen, voordat je die compileert en upload naar de Feather...

Ik zou zeggen: Happy testing!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 6, 2024

Hoi Jórgen,

Ik heb vanmiddag mijn best gedaan (20 starts) en wat opviel was het slechte pairen van de Kickr. Maar als er een fix was dan kon ik de hele rit uitfietsen. Ik heb uiteindelijk 3x Volcano circuit gefietst en de laatste keer zelfs 2x helemaal gestopt en daarna weer begonnen. En inderdaad wat je zei, de Kickr data word gewoon weer opgepakt en de verbinding blijft intact. Mijn complimenten daarvoor. Overigens zette ik de Kickr tussen elke gevraagde reset uit en wachtte minimaal 30 - 60 seconden alvorens de Feather te resetten. Anyway, je kijkt zelf maar hieronder. Wellicht kunnen we de resultaten van het pairen nog wat verbeteren. De verbinding valt in elk geval niet meer weg en dat is grote winst.

Groetjes JW

1: Geen fix met Kickr
15:09:05.156 ->
15:09:05.157 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:09:05.157 -> ------------------------ Version 01.4 --------------------------
15:09:05.157 -> SIM32
15:09:05.389 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:09:05.389 -> SSD1306 OLED display is running...
15:09:11.868 -> Motor Control Task Created and Active!
15:09:11.868 -> Simcline Basic Motor Funtions are working!!
15:09:12.144 -> Configuring the default Generic Access Service
15:09:12.144 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:09:12.181 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:09:12.181 -> Configuring the Server Nordic Uart Service
15:09:12.181 -> Configuring the Server Device Information Service
15:09:12.181 -> Configuring the Server Cycle Power Service
15:09:12.181 -> Configuring the Server Cadence and Speed Service
15:09:12.181 -> Setting up the Server advertising payload(s)
15:09:12.181 -> Setting Appearance in Advertised data to [1152]
15:09:12.181 -> Setting DeviceName in Advertised data to [SIM32]
15:09:12.228 -> Server is advertising: CPS + Wahoo
15:09:12.228 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:09:22.071 -> Found advertising Peripheral with CPS enabled! See data:
15:09:22.071 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:09:22.148 -> Service Data:
15:09:22.148 -> UUID: 0x1826, Data: �
15:09:23.750 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:09:23.750 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:09:23.750 -> Now checking all Client Services and Characteristics!
15:09:23.750 -> If Mandatory Services Fail --> the Client will disconnect!
15:09:24.335 -> Client Generic Access: Found!
15:09:26.901 -> Device Information Service: NOT Found!
15:09:26.901 -> Mandatory Cycling Power Service: Not Found!
15:09:26.901 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
15:09:26.901 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

2: Geen fix met Kickr
15:10:00.298 ->
15:10:00.298 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:10:00.298 -> ------------------------ Version 01.4 --------------------------
15:10:00.298 -> SIM32
15:10:00.509 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:10:00.545 -> SSD1306 OLED display is running...
15:10:07.050 -> Motor Control Task Created and Active!
15:10:07.051 -> Simcline Basic Motor Funtions are working!!
15:10:07.305 -> Configuring the default Generic Access Service
15:10:07.305 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:10:07.339 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:10:07.339 -> Configuring the Server Nordic Uart Service
15:10:07.339 -> Configuring the Server Device Information Service
15:10:07.339 -> Configuring the Server Cycle Power Service
15:10:07.339 -> Configuring the Server Cadence and Speed Service
15:10:07.339 -> Setting up the Server advertising payload(s)
15:10:07.339 -> Setting Appearance in Advertised data to [1152]
15:10:07.339 -> Setting DeviceName in Advertised data to [SIM32]
15:10:07.373 -> Server is advertising: CPS + Wahoo
15:10:07.373 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:10:55.885 -> Server Connection Parameters -> Interval: [24] Latency: [0] Supervision Timeout: [500]
15:10:55.885 -> ESP32 Server connected to Client device with MAC Address: [4C:B5:A3:F1:B7:0B] Conn Handle: [0]
15:10:55.885 -> Central (MyPhone/Simcline App) has to set NUS CCCD 'Notify' (enable) and start....
15:10:57.491 -> Central Updated CCCD --> Notify Enabled for Char: [6e400003-b5a3-f393-e0a9-e50e24dcca9e]
15:10:57.491 -> Server Sends NUS TXD Persistent settings to Phone: [!S15;5;100;2;]
15:11:00.351 -> Found advertising Peripheral with CPS enabled! See data:
15:11:00.351 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:11:00.415 -> Service Data:
15:11:00.415 -> UUID: 0x1826, Data: �
15:11:11.641 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!
15:11:32.347 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [6e400003-b5a3-f393-e0a9-e50e24dcca9e]
15:11:32.347 -> ESP32 Server disconnected from Central (MyPhone) Conn handle: [0] Mac Address: [4C:B5:A3:F1:B7:0B]
15:11:32.347 -> --> ESP32 Server is advertising again!

3: Geen fix met Kickr
15:12:29.766 ->
15:12:29.766 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:12:29.766 -> ------------------------ Version 01.4 --------------------------
15:12:29.766 -> SIM32
15:12:29.981 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:12:29.981 -> SSD1306 OLED display is running...
15:12:36.515 -> Motor Control Task Created and Active!
15:12:36.515 -> Simcline Basic Motor Funtions are working!!
15:12:36.778 -> Configuring the default Generic Access Service
15:12:36.778 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:12:36.778 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:12:36.778 -> Configuring the Server Nordic Uart Service
15:12:36.779 -> Configuring the Server Device Information Service
15:12:36.779 -> Configuring the Server Cycle Power Service
15:12:36.779 -> Configuring the Server Cadence and Speed Service
15:12:36.779 -> Setting up the Server advertising payload(s)
15:12:36.779 -> Setting Appearance in Advertised data to [1152]
15:12:36.812 -> Setting DeviceName in Advertised data to [SIM32]
15:12:36.812 -> Server is advertising: CPS + Wahoo
15:12:36.812 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:12:52.058 -> Found advertising Peripheral with CPS enabled! See data:
15:12:52.058 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:12:52.113 -> Service Data:
15:12:52.113 -> UUID: 0x1826, Data: �
15:12:53.152 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!\

4: Geen fix met Kickr
15:13:16.381 ->
15:13:16.381 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:13:16.381 -> ------------------------ Version 01.4 --------------------------
15:13:16.381 -> SIM32
15:13:16.606 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:13:16.606 -> SSD1306 OLED display is running...
15:13:23.120 -> Motor Control Task Created and Active!
15:13:23.120 -> Simcline Basic Motor Funtions are working!!
15:13:23.369 -> Configuring the default Generic Access Service
15:13:23.369 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:13:23.402 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:13:23.402 -> Configuring the Server Nordic Uart Service
15:13:23.402 -> Configuring the Server Device Information Service
15:13:23.402 -> Configuring the Server Cycle Power Service
15:13:23.402 -> Configuring the Server Cadence and Speed Service
15:13:23.436 -> Setting up the Server advertising payload(s)
15:13:23.436 -> Setting Appearance in Advertised data to [1152]
15:13:23.436 -> Setting DeviceName in Advertised data to [SIM32]
15:13:23.436 -> Server is advertising: CPS + Wahoo
15:13:23.436 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:14:05.688 -> Found advertising Peripheral with CPS enabled! See data:
15:14:05.688 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:14:05.760 -> Service Data:
15:14:05.760 -> UUID: 0x1826, Data: �
15:14:22.038 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

5: Geen fix met Kickr
15:23:19.098 ->
15:23:19.098 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:23:19.132 -> ------------------------ Version 01.4 --------------------------
15:23:19.132 -> SIM32
15:23:19.324 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:23:19.324 -> SSD1306 OLED display is running...
15:23:25.863 -> Motor Control Task Created and Active!
15:23:25.863 -> Simcline Basic Motor Funtions are working!!
15:23:26.118 -> Configuring the default Generic Access Service
15:23:26.118 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:23:26.151 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:23:26.151 -> Configuring the Server Nordic Uart Service
15:23:26.151 -> Configuring the Server Device Information Service
15:23:26.152 -> Configuring the Server Cycle Power Service
15:23:26.152 -> Configuring the Server Cadence and Speed Service
15:23:26.152 -> Setting up the Server advertising payload(s)
15:23:26.152 -> Setting Appearance in Advertised data to [1152]
15:23:26.152 -> Setting DeviceName in Advertised data to [SIM32]
15:23:26.187 -> Server is advertising: CPS + Wahoo
15:23:26.187 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:23:49.373 -> Found advertising Peripheral with CPS enabled! See data:
15:23:49.373 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:23:49.431 -> Service Data:
15:23:49.431 -> UUID: 0x1826, Data: �
15:23:50.534 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

6: Geen fix met Kickr
15:29:36.636 ->
15:29:36.636 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:29:36.636 -> ------------------------ Version 01.4 --------------------------
15:29:36.636 -> SIM32
15:29:36.870 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:29:36.870 -> SSD1306 OLED display is running...
15:29:43.370 -> Motor Control Task Created and Active!
15:29:43.370 -> Simcline Basic Motor Funtions are working!!
15:29:43.640 -> Configuring the default Generic Access Service
15:29:43.640 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:29:43.674 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:29:43.674 -> Configuring the Server Nordic Uart Service
15:29:43.674 -> Configuring the Server Device Information Service
15:29:43.674 -> Configuring the Server Cycle Power Service
15:29:43.674 -> Configuring the Server Cadence and Speed Service
15:29:43.674 -> Setting up the Server advertising payload(s)
15:29:43.674 -> Setting Appearance in Advertised data to [1152]
15:29:43.674 -> Setting DeviceName in Advertised data to [SIM32]
15:29:43.711 -> Server is advertising: CPS + Wahoo
15:29:43.711 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:30:14.956 -> Found advertising Peripheral with CPS enabled! See data:
15:30:14.956 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:30:15.000 -> Service Data:
15:30:15.000 -> UUID: 0x1826, Data: �
15:30:35.865 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

7: Geen fix met Kickr
15:31:10.922 ->
15:31:10.922 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:31:10.922 -> ------------------------ Version 01.4 --------------------------
15:31:10.922 -> SIM32
15:31:11.158 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:31:11.158 -> SSD1306 OLED display is running...
15:31:17.625 -> Motor Control Task Created and Active!
15:31:17.625 -> Simcline Basic Motor Funtions are working!!
15:31:17.907 -> Configuring the default Generic Access Service
15:31:17.907 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:31:17.943 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:31:17.943 -> Configuring the Server Nordic Uart Service
15:31:17.943 -> Configuring the Server Device Information Service
15:31:17.943 -> Configuring the Server Cycle Power Service
15:31:17.943 -> Configuring the Server Cadence and Speed Service
15:31:17.943 -> Setting up the Server advertising payload(s)
15:31:17.943 -> Setting Appearance in Advertised data to [1152]
15:31:17.943 -> Setting DeviceName in Advertised data to [SIM32]
15:31:17.989 -> Server is advertising: CPS + Wahoo
15:31:17.989 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:31:20.808 -> Found advertising Peripheral with CPS enabled! See data:
15:31:20.808 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:31:20.841 -> Service Data:
15:31:20.841 -> UUID: 0x1826, Data: �
15:31:51.084 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

8: Eindelijk een fix met Kickr - Volcano Circuit helemaal kunnen fietsen (1e keer)
15:33:44.860 ->
15:33:44.860 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:33:44.896 -> ------------------------ Version 01.4 --------------------------
15:33:44.896 -> SIM32
15:33:45.109 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:33:45.109 -> SSD1306 OLED display is running...
15:33:51.630 -> Motor Control Task Created and Active!
15:33:51.630 -> Simcline Basic Motor Funtions are working!!
15:33:51.860 -> Configuring the default Generic Access Service
15:33:51.860 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:33:51.892 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:33:51.892 -> Configuring the Server Nordic Uart Service
15:33:51.892 -> Configuring the Server Device Information Service
15:33:51.892 -> Configuring the Server Cycle Power Service
15:33:51.892 -> Configuring the Server Cadence and Speed Service
15:33:51.932 -> Setting up the Server advertising payload(s)
15:33:51.932 -> Setting Appearance in Advertised data to [1152]
15:33:51.932 -> Setting DeviceName in Advertised data to [SIM32]
15:33:51.932 -> Server is advertising: CPS + Wahoo
15:33:51.932 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:34:04.075 -> Found advertising Peripheral with CPS enabled! See data:
15:34:04.075 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:34:04.075 -> Service Data:
15:34:04.075 -> UUID: 0x1826, Data: �
15:34:09.126 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:34:09.126 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:34:09.126 -> Now checking all Client Services and Characteristics!
15:34:09.126 -> If Mandatory Services Fail --> the Client will disconnect!
15:34:09.760 -> Client Generic Access: Found!
15:34:10.914 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:34:11.661 -> -> Client Reads Appearance: [0]
15:34:12.317 -> Client Device Information Service: Found!
15:34:13.729 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:34:16.062 -> -> Client Reads Serial Number: [221001365]
15:34:17.134 -> Client_CyclingPower_Service: Found!
15:34:18.309 -> Client_Wahoo_ControlPoint_Chr: Found!
15:34:19.089 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:34:21.998 -> Client_CP_Measurement_Chr: Found!
15:34:26.485 -> Client_CP_Feature_Chr: Found!
15:34:26.987 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:34:30.286 -> Client_CP_Location_Chr: Found!
15:34:31.220 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:34:31.260 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 352
15:34:33.505 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
15:34:50.289 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
15:34:50.289 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
15:36:15.552 -> Found advertising Peripheral with CPS enabled! See data:
15:36:15.552 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:36:15.552 -> Service Data:
15:36:15.552 -> UUID: 0x1826, Data: �
15:36:17.482 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:36:17.482 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:36:17.482 -> Now checking all Client Services and Characteristics!
15:36:17.482 -> If Mandatory Services Fail --> the Client will disconnect!
15:36:17.482 -> Client Generic Access: Found!
15:36:17.623 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:36:17.839 -> -> Client Reads Appearance: [0]
15:36:17.839 -> Client Device Information Service: Found!
15:36:17.968 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:36:19.034 -> -> Client Reads Serial Number: [221001365]
15:36:19.034 -> Client_CyclingPower_Service: Found!
15:36:19.034 -> Client_Wahoo_ControlPoint_Chr: Found!
15:36:19.034 -> Client_CP_Measurement_Chr: Found!
15:36:19.034 -> Client_CP_Feature_Chr: Found!
15:36:19.128 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:36:19.128 -> Client_CP_Location_Chr: Found!
15:36:19.316 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:36:19.363 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 201
15:36:20.727 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
15:37:54.054 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
15:37:54.054 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
15:37:54.054 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
15:37:54.447 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
15:37:54.896 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
15:37:58.284 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
15:37:58.645 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
15:37:59.157 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
15:38:21.064 -> [ 0]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:38:21.064 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 673
15:38:23.100 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:23.100 -> Set Simulation Grade! --> Grade: 1.6% Response: 932
15:38:25.101 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:25.147 -> Set Simulation Grade! --> Grade: 1.6% Response: 394
15:38:27.119 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:27.119 -> Set Simulation Grade! --> Grade: 1.6% Response: 412
15:38:29.126 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:29.172 -> Set Simulation Grade! --> Grade: 1.6% Response: 172
15:38:31.207 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:31.207 -> Set Simulation Grade! --> Grade: 1.6% Response: 634
15:38:33.203 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:33.238 -> Set Simulation Grade! --> Grade: 1.6% Response: 194
15:38:42.141 -> [ 8940]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:42.222 -> Set Simulation Grade! --> Grade: 1.6% Response: 553
15:38:44.209 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:44.209 -> Set Simulation Grade! --> Grade: 1.6% Response: 214
15:38:46.262 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:46.262 -> Set Simulation Grade! --> Grade: 1.6% Response: 273
15:38:48.262 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:48.308 -> Set Simulation Grade! --> Grade: 1.6% Response: 532
15:38:50.280 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1C 82 00 ]
15:38:50.280 -> Set Simulation Grade! --> Grade: 1.6% Response: 557
15:39:46.162 -> [ 55920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 50 81 00 ]
15:39:46.368 -> Set Simulation Grade! --> Grade: 1.0%[ 240]
15:39:46.448 -> >>> Wahoo Trainer is unresponsive!
15:39:46.717 -> Response: 294
15:39:48.409 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:39:48.409 -> Set Simulation Grade! --> Grade: -0.0% Response: 114
15:39:50.508 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:39:50.508 -> Set Simulation Grade! --> Grade: 0.0% Response: 114
15:39:52.523 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:39:52.557 -> Set Simulation Grade! --> Grade: -0.0% Response: 174
15:39:54.530 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:39:54.530 -> Set Simulation Grade! --> Grade: 0.0% Response: 196
15:39:56.491 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:39:56.491 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 114
15:39:58.434 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:39:58.434 -> Set Simulation Grade! --> Grade: 0.0% Response: 196
15:40:00.482 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:00.482 -> Set Simulation Grade! --> Grade: 0.0% Response: 159
15:40:02.484 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:40:02.526 -> Set Simulation Grade! --> Grade: -0.0% Response: 414
15:40:04.551 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:40:04.551 -> Set Simulation Grade! --> Grade: -0.0% Response: 773
15:40:06.448 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:06.448 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 353
15:40:08.436 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:08.436 -> Set Simulation Grade! --> Grade: 0.0% Response: 375
15:40:10.462 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:10.505 -> Set Simulation Grade! --> Grade: 0.0% Response: 1036
15:40:12.503 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:12.541 -> Set Simulation Grade! --> Grade: 0.0% Response: 496
15:40:14.543 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:14.577 -> Set Simulation Grade! --> Grade: 0.0% Response: 653
15:40:16.464 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:16.510 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 736
15:40:18.533 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:18.533 -> Set Simulation Grade! --> Grade: 0.0% Response: 1596
15:40:20.577 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:20.577 -> Set Simulation Grade! --> Grade: 0.0% Response: 557
15:40:22.616 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:40:22.616 -> Set Simulation Grade! --> Grade: -0.0% Response: 1015
15:40:24.632 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:24.632 -> Set Simulation Grade! --> Grade: 0.0% Response: 677
15:40:26.483 -> [ 1861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:26.531 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1014
15:40:28.522 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:40:28.566 -> Set Simulation Grade! --> Grade: -0.0% Response: 174
15:40:30.565 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:30.608 -> Set Simulation Grade! --> Grade: 0.0% Response: 234
15:40:32.585 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:32.585 -> Set Simulation Grade! --> Grade: 0.0% Response: 855
15:40:34.685 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:40:34.685 -> Set Simulation Grade! --> Grade: 0.0% Response: 755
15:40:36.543 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:36.543 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 595
15:40:38.490 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:40:38.490 -> Set Simulation Grade! --> Grade: -0.0% Response: 115
15:40:40.551 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 16 80 00 ]
15:40:40.551 -> Set Simulation Grade! --> Grade: 0.1% Response: 575
15:40:42.564 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3C 80 00 ]
15:40:42.601 -> Set Simulation Grade! --> Grade: 0.2% Response: 936
15:40:44.647 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 80 00 ]
15:40:44.647 -> Set Simulation Grade! --> Grade: 0.2% Response: 594
15:40:46.529 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:46.529 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 376
15:40:48.568 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
15:40:48.614 -> Set Simulation Grade! --> Grade: -0.0% Response: 437
15:40:50.648 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D9 7F 00 ]
15:40:50.648 -> Set Simulation Grade! --> Grade: -0.1% Response: 594
15:40:52.664 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 94 7F 00 ]
15:40:52.664 -> Set Simulation Grade! --> Grade: -0.3% Response: 355
15:40:54.623 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4C 7F 00 ]
15:40:54.668 -> Set Simulation Grade! --> Grade: -0.5% Response: 774
15:40:56.585 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:40:56.585 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1555
15:40:58.599 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4E 7F 00 ]
15:40:58.600 -> Set Simulation Grade! --> Grade: -0.5% Response: 317
15:41:00.631 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A4 7F 00 ]
15:41:00.631 -> Set Simulation Grade! --> Grade: -0.3% Response: 1177
15:41:02.695 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AE 80 00 ]
15:41:02.695 -> Set Simulation Grade! --> Grade: 0.5% Response: 637
15:41:04.729 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D3 81 00 ]
15:41:04.729 -> Set Simulation Grade! --> Grade: 1.4% Response: 295
15:41:06.625 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:06.669 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 677
15:41:08.604 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 82 00 ]
15:41:08.645 -> Set Simulation Grade! --> Grade: 1.7% Response: 895
15:41:10.650 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 99 81 00 ]
15:41:10.650 -> Set Simulation Grade! --> Grade: 1.2% Response: 756
15:41:12.719 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B1 80 00 ]
15:41:12.719 -> Set Simulation Grade! --> Grade: 0.5% Response: 917
15:41:14.769 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3D 80 00 ]
15:41:14.769 -> Set Simulation Grade! --> Grade: 0.2% Response: 576
15:41:16.644 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:16.678 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 457
15:41:18.696 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EE 7F 00 ]
15:41:18.696 -> Set Simulation Grade! --> Grade: -0.1% Response: 1117
15:41:20.665 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E7 7F 00 ]
15:41:20.712 -> Set Simulation Grade! --> Grade: -0.1% Response: 637
15:41:22.733 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: ED 7F 00 ]
15:41:22.733 -> Set Simulation Grade! --> Grade: -0.1% Response: 596
15:41:24.745 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:24.783 -> Set Simulation Grade! --> Grade: 0.0% Response: 457
15:41:26.696 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:26.696 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 737
15:41:28.742 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:41:28.742 -> Set Simulation Grade! --> Grade: -0.0% Response: 997
15:41:30.695 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:30.695 -> Set Simulation Grade! --> Grade: 0.0% Response: 416
15:41:32.727 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:32.761 -> Set Simulation Grade! --> Grade: 0.0% Response: 176
15:41:34.747 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:34.747 -> Set Simulation Grade! --> Grade: 0.0% Response: 596
15:41:36.716 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:36.716 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 318
15:41:38.724 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:38.760 -> Set Simulation Grade! --> Grade: 0.0% Response: 378
15:41:40.704 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:40.739 -> Set Simulation Grade! --> Grade: 0.0% Response: 798
15:41:42.772 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:41:42.772 -> Set Simulation Grade! --> Grade: -0.0% Response: 1758
15:41:44.754 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:44.754 -> Set Simulation Grade! --> Grade: 0.0% Response: 678
15:41:46.734 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:46.734 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 296
15:41:48.786 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:48.786 -> Set Simulation Grade! --> Grade: 0.0% Response: 657
15:41:50.784 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:41:50.825 -> Set Simulation Grade! --> Grade: -0.0% Response: 416
15:41:52.823 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:41:52.868 -> Set Simulation Grade! --> Grade: 0.0% Response: 1077
15:41:54.812 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EA 7F 00 ]
15:41:54.812 -> Set Simulation Grade! --> Grade: -0.1% Response: 596
15:41:56.726 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:41:56.771 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1278
15:41:58.788 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BD 81 00 ]
15:41:58.788 -> Set Simulation Grade! --> Grade: 1.4% Response: 737
15:42:00.871 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BA 83 00 ]
15:42:00.871 -> Set Simulation Grade! --> Grade: 2.9% Response: 438
15:42:02.846 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CA 83 00 ]
15:42:02.886 -> Set Simulation Grade! --> Grade: 3.0% Response: 1157
15:42:04.921 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 84 83 00 ]
15:42:04.921 -> Set Simulation Grade! --> Grade: 2.7% Response: 1017
15:42:06.927 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C4 82 00 ]
15:42:06.970 -> Set Simulation Grade! --> Grade: 2.2% Response: 1278
15:42:08.964 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1A 81 00 ]
15:42:09.001 -> Set Simulation Grade! --> Grade: 0.9%[ 120]
15:42:09.082 -> >>> Wahoo Trainer is unresponsive!
15:42:10.202 -> Response: 1120
15:42:11.002 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D8 7F 00 ]
15:42:11.045 -> Set Simulation Grade! --> Grade: -0.1% Response: 297
15:42:13.065 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BE 7F 00 ]
15:42:13.065 -> Set Simulation Grade! --> Grade: -0.2% Response: 1058
15:42:15.086 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:42:15.130 -> Set Simulation Grade! --> Grade: 0.0% Response: 921
15:42:17.127 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:42:17.162 -> Set Simulation Grade! --> Grade: 0.0% Response: 579
15:42:19.059 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:42:19.059 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 358
15:42:21.086 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:42:21.131 -> Set Simulation Grade! --> Grade: 0.0% Response: 417
15:42:23.104 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:42:23.104 -> Set Simulation Grade! --> Grade: -0.0% Response: 837
15:42:25.106 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:42:25.153 -> Set Simulation Grade! --> Grade: 0.0% Response: 598
15:42:27.158 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:42:27.158 -> Set Simulation Grade! --> Grade: 0.0% Response: 758
15:42:29.066 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:42:29.107 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 838
15:42:31.104 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E6 7F 00 ]
15:42:31.137 -> Set Simulation Grade! --> Grade: -0.1% Response: 999
15:42:33.085 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EC 7F 00 ]
15:42:33.126 -> Set Simulation Grade! --> Grade: -0.1% Response: 919
15:42:35.129 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 45 80 00 ]
15:42:35.129 -> Set Simulation Grade! --> Grade: 0.2% Response: 1878
15:42:37.165 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B6 81 00 ]
15:42:37.204 -> Set Simulation Grade! --> Grade: 1.3% Response: 537
15:42:39.085 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:42:39.129 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 918
15:42:41.125 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2B 82 00 ]
15:42:41.168 -> Set Simulation Grade! --> Grade: 1.7% Response: 579
15:42:43.187 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9C 80 00 ]
15:42:43.187 -> Set Simulation Grade! --> Grade: 0.5% Response: 838
15:42:45.209 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9D 7F 00 ]
15:42:45.209 -> Set Simulation Grade! --> Grade: -0.3% Response: 1198
15:42:47.185 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5A 7F 00 ]
15:42:47.218 -> Set Simulation Grade! --> Grade: -0.5% Response: 519
15:42:49.106 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:42:49.145 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 898
15:42:51.149 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 68 7F 00 ]
15:42:51.149 -> Set Simulation Grade! --> Grade: -0.5% Response: 160
15:42:53.225 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 28 80 00 ]
15:42:53.225 -> Set Simulation Grade! --> Grade: 0.1% Response: 920
15:42:55.227 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A7 80 00 ]
15:42:55.271 -> Set Simulation Grade! --> Grade: 0.5% Response: 478
15:42:57.266 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BA 7F 00 ]
15:42:57.303 -> Set Simulation Grade! --> Grade: -0.2% Response: 238
15:42:59.154 -> [ 1861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:42:59.154 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 279
15:43:01.165 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F7 7E 00 ]
15:43:01.204 -> Set Simulation Grade! --> Grade: -0.8% Response: 340
15:43:03.173 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7E 00 ]
15:43:03.173 -> Set Simulation Grade! --> Grade: -0.8% Response: 560
15:43:05.222 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3E 7F 00 ]
15:43:05.222 -> Set Simulation Grade! --> Grade: -0.6% Response: 819
15:43:07.224 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E9 7F 00 ]
15:43:07.259 -> Set Simulation Grade! --> Grade: -0.1% Response: 679
15:43:09.228 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:09.228 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 897
15:43:11.289 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5E 80 00 ]
15:43:11.289 -> Set Simulation Grade! --> Grade: 0.3% Response: 559
15:43:13.284 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:13.318 -> Set Simulation Grade! --> Grade: 0.0% Response: 718
15:43:15.323 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:15.369 -> Set Simulation Grade! --> Grade: 0.0% Response: 680
15:43:17.403 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:17.403 -> Set Simulation Grade! --> Grade: 0.0% Response: 140
15:43:19.200 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:19.200 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 239
15:43:21.245 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:21.246 -> Set Simulation Grade! --> Grade: 0.0% Response: 499
15:43:23.252 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:23.252 -> Set Simulation Grade! --> Grade: 0.0% Response: 160
15:43:25.349 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:25.393 -> Set Simulation Grade! --> Grade: 0.0% Response: 260
15:43:27.409 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:27.409 -> Set Simulation Grade! --> Grade: 0.0% Response: 920
15:43:29.220 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:29.220 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 418
15:43:31.328 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:43:31.328 -> Set Simulation Grade! --> Grade: -0.0% Response: 520
15:43:33.326 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:43:33.374 -> Set Simulation Grade! --> Grade: 0.0% Response: 380
15:43:35.334 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
15:43:35.334 -> Set Simulation Grade! --> Grade: 0.0% Response: 499
15:43:37.385 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A2 80 00 ]
15:43:37.385 -> Set Simulation Grade! --> Grade: 0.5% Response: 560
15:43:39.308 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:39.308 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 440
15:43:41.277 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
15:43:41.277 -> Set Simulation Grade! --> Grade: -0.0% Response: 659
15:43:43.324 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 90 7F 00 ]
15:43:43.324 -> Set Simulation Grade! --> Grade: -0.3% Response: 323
15:43:45.369 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D7 7E 00 ]
15:43:45.369 -> Set Simulation Grade! --> Grade: -0.9% Response: 478
15:43:47.373 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 99 7E 00 ]
15:43:47.373 -> Set Simulation Grade! --> Grade: -1.1% Response: 640
15:43:49.288 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:49.327 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 523
15:43:51.333 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BC 7E 00 ]
15:43:51.333 -> Set Simulation Grade! --> Grade: -1.0% Response: 681
15:43:53.365 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 05 7F 00 ]
15:43:53.411 -> Set Simulation Grade! --> Grade: -0.8% Response: 838
15:43:55.405 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 27 7F 00 ]
15:43:55.448 -> Set Simulation Grade! --> Grade: -0.7% Response: 602
15:43:57.485 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 41 7F 00 ]
15:43:57.485 -> Set Simulation Grade! --> Grade: -0.6% Response: 561
15:43:59.405 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:43:59.405 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 238
15:44:01.450 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: ED 7F 00 ]
15:44:01.450 -> Set Simulation Grade! --> Grade: -0.1% Response: 1199
15:44:03.386 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 77 80 00 ]
15:44:03.418 -> Set Simulation Grade! --> Grade: 0.4% Response: 221
15:44:05.425 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:05.468 -> Set Simulation Grade! --> Grade: -0.0% Response: 581
15:44:07.465 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:07.505 -> Set Simulation Grade! --> Grade: 0.0% Response: 141
15:44:09.384 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:09.429 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 621
15:44:11.387 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:11.387 -> Set Simulation Grade! --> Grade: 0.0% Response: 1040
15:44:13.418 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:13.418 -> Set Simulation Grade! --> Grade: -0.0% Response: 598
15:44:15.450 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
15:44:15.450 -> Set Simulation Grade! --> Grade: -0.0% Response: 461
15:44:17.433 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
15:44:17.433 -> Set Simulation Grade! --> Grade: -0.0% Response: 980
15:44:19.511 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:19.512 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 144
15:44:21.452 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7F 00 ]
15:44:21.452 -> Set Simulation Grade! --> Grade: -0.0% Response: 361
15:44:23.484 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
15:44:23.519 -> Set Simulation Grade! --> Grade: -0.0% Response: 921
15:44:25.464 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
15:44:25.503 -> Set Simulation Grade! --> Grade: -0.0% Response: 340
15:44:27.600 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
15:44:27.600 -> Set Simulation Grade! --> Grade: -0.0% Response: 240
15:44:29.435 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:29.435 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 381
15:44:31.500 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
15:44:31.500 -> Set Simulation Grade! --> Grade: -0.0% Response: 542
15:44:33.487 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:33.487 -> Set Simulation Grade! --> Grade: -0.0% Response: 262
15:44:35.486 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:35.522 -> Set Simulation Grade! --> Grade: 0.0% Response: 422
15:44:37.525 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:37.558 -> Set Simulation Grade! --> Grade: 0.0% Response: 582
15:44:39.444 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:39.485 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 662
15:44:41.484 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:41.520 -> Set Simulation Grade! --> Grade: 0.0% Response: 322
15:44:43.564 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:43.564 -> Set Simulation Grade! --> Grade: 0.0% Response: 580
15:44:45.566 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:45.614 -> Set Simulation Grade! --> Grade: -0.0% Response: 740
15:44:47.544 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:47.585 -> Set Simulation Grade! --> Grade: -0.0% Response: 462
15:44:49.554 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:49.554 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 981
15:44:51.446 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:51.479 -> Set Simulation Grade! --> Grade: 0.0% Response: 262
15:44:53.511 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:53.511 -> Set Simulation Grade! --> Grade: 0.0% Response: 222
15:44:55.499 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:44:55.499 -> Set Simulation Grade! --> Grade: -0.0% Response: 542
15:44:57.570 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:44:57.570 -> Set Simulation Grade! --> Grade: 0.0% Response: 443
15:44:59.524 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:44:59.524 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 122
15:45:01.525 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:45:01.559 -> Set Simulation Grade! --> Grade: 0.0% Response: 482
15:45:03.597 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:45:03.597 -> Set Simulation Grade! --> Grade: 0.0% Response: 541
15:45:05.551 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:45:05.551 -> Set Simulation Grade! --> Grade: 0.0% Response: 1162
15:45:07.646 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:45:07.693 -> Set Simulation Grade! --> Grade: 0.0% Response: 362
15:45:09.575 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:45:09.575 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 540
15:45:11.584 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:45:11.584 -> Set Simulation Grade! --> Grade: 0.0% Response: 463
15:45:13.615 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
15:45:13.615 -> Set Simulation Grade! --> Grade: 0.0% Response: 723
15:45:15.655 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EB 7F 00 ]
15:45:15.655 -> Set Simulation Grade! --> Grade: -0.1% Response: 483
15:45:17.669 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BB 80 00 ]
15:45:17.714 -> Set Simulation Grade! --> Grade: 0.6% Response: 443
15:45:19.532 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:45:19.532 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 283
15:45:21.565 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 7C 83 00 ]
15:45:21.607 -> Set Simulation Grade! --> Grade: 2.7% Response: 742
15:45:23.665 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 42 83 00 ]
15:45:23.706 -> Set Simulation Grade! --> Grade: 2.5% Response: 142
15:45:25.628 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 31 83 00 ]
15:45:25.628 -> Set Simulation Grade! --> Grade: 2.5% Response: 1721
15:45:27.624 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F0 82 00 ]
15:45:27.661 -> Set Simulation Grade! --> Grade: 2.3% Response: 583
15:45:29.710 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C0 82 00 ]
15:45:29.710 -> Set Simulation Grade! --> Grade: 2.1% Response: 1242
15:45:31.682 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B2 82 00 ]
15:45:31.682 -> Set Simulation Grade! --> Grade: 2.1% Response: 762
15:45:33.727 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BC 82 00 ]
15:45:33.727 -> Set Simulation Grade! --> Grade: 2.1% Response: 1124
15:45:35.726 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EB 82 00 ]
15:45:35.762 -> Set Simulation Grade! --> Grade: 2.3% Response: 2083
15:45:37.826 -> [ 2101]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8B 83 00 ]
15:45:37.871 -> Set Simulation Grade! --> Grade: 2.8% Response: 282
15:45:39.897 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A5 81 00 ]
15:45:39.897 -> Set Simulation Grade! --> Grade: 1.3%[ 181]
15:45:40.071 -> >>> Wahoo Trainer is unresponsive!
15:45:41.740 -> Response: 1661
15:45:42.007 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B7 80 00 ]
15:45:42.007 -> Set Simulation Grade! --> Grade: 0.6% Response: 543
15:45:43.979 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 58 80 00 ]
15:45:43.979 -> Set Simulation Grade! --> Grade: 0.3% Response: 864
15:45:46.014 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 45 80 00 ]
15:45:46.014 -> Set Simulation Grade! --> Grade: 0.2% Response: 523
15:45:48.033 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3F 80 00 ]
15:45:48.033 -> Set Simulation Grade! --> Grade: 0.2% Response: 583
15:45:49.886 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:45:49.925 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1022
15:45:51.959 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:45:51.959 -> Set Simulation Grade! --> Grade: -0.0% Response: 383
15:45:54.024 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 7F 00 ]
15:45:54.060 -> Set Simulation Grade! --> Grade: -0.0% Response: 583
15:45:56.091 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
15:45:56.091 -> Set Simulation Grade! --> Grade: -0.0% Response: 742
15:45:58.072 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
15:45:58.072 -> Set Simulation Grade! --> Grade: -0.0% Response: 963
15:45:59.969 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:46:00.011 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1142
15:46:02.100 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 80 00 ]
15:46:02.100 -> Set Simulation Grade! --> Grade: 0.0% Response: 443
15:46:03.986 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 07 80 00 ]
15:46:04.023 -> Set Simulation Grade! --> Grade: 0.0% Response: 722
15:46:06.027 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:46:06.066 -> Set Simulation Grade! --> Grade: -0.0% Response: 384
15:46:08.068 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EF 7F 00 ]
15:46:08.115 -> Set Simulation Grade! --> Grade: -0.1% Response: 843
15:46:09.963 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:46:09.963 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 683
15:46:11.993 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F2 7F 00 ]
15:46:11.993 -> Set Simulation Grade! --> Grade: -0.0% Response: 644
15:46:14.103 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 63 81 00 ]
15:46:14.103 -> Set Simulation Grade! --> Grade: 1.1% Response: 243
15:46:16.168 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D2 82 00 ]
15:46:16.203 -> Set Simulation Grade! --> Grade: 2.2% Response: 1343
15:46:18.148 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 82 00 ]
15:46:18.194 -> Set Simulation Grade! --> Grade: 2.3% Response: 663
15:46:20.185 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D7 82 00 ]
15:46:20.231 -> Set Simulation Grade! --> Grade: 2.2% Response: 324
15:46:22.264 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 68 82 00 ]
15:46:22.264 -> Set Simulation Grade! --> Grade: 1.9% Response: 584
15:46:24.310 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 44 81 00 ]
15:46:24.310 -> Set Simulation Grade! --> Grade: 1.0%[ 120]
15:46:24.389 -> >>> Wahoo Trainer is unresponsive!
15:46:24.529 -> Response: 124
15:46:26.467 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EE 7F 00 ]
15:46:26.467 -> Set Simulation Grade! --> Grade: -0.1% Response: 184
15:46:28.370 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BC 7F 00 ]
15:46:28.370 -> Set Simulation Grade! --> Grade: -0.2% Response: 566
15:46:30.355 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 29 80 00 ]
15:46:30.355 -> Set Simulation Grade! --> Grade: 0.1% Response: 584
15:46:32.402 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 56 80 00 ]
15:46:32.402 -> Set Simulation Grade! --> Grade: 0.3% Response: 444
15:46:34.374 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:46:34.374 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 664
15:46:36.390 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 10 80 00 ]
15:46:36.390 -> Set Simulation Grade! --> Grade: 0.1% Response: 923
15:46:38.454 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D0 7F 00 ]
15:46:38.454 -> Set Simulation Grade! --> Grade: -0.1% Response: 883
15:46:40.525 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 7F 00 ]
15:46:40.566 -> Set Simulation Grade! --> Grade: -0.8% Response: 384
15:46:42.572 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C1 7E 00 ]
15:46:42.572 -> Set Simulation Grade! --> Grade: -1.0% Response: 543
15:46:44.370 -> [ 1799]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:46:44.370 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 743
15:46:46.510 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CE 7F 00 ]
15:46:46.510 -> Set Simulation Grade! --> Grade: -0.2% Response: 1646
15:46:48.445 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4D 80 00 ]
15:46:48.478 -> Set Simulation Grade! --> Grade: 0.2% Response: 1365
15:46:50.532 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 65 80 00 ]
15:46:50.532 -> Set Simulation Grade! --> Grade: 0.3% Response: 1528
15:46:52.569 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:46:52.569 -> Set Simulation Grade! --> Grade: 0.0% Response: 984
15:46:54.446 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:46:54.492 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1064
15:46:56.486 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:46:56.525 -> Set Simulation Grade! --> Grade: 0.0% Response: 1325
15:46:58.527 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 04 80 00 ]
15:46:58.560 -> Set Simulation Grade! --> Grade: 0.0% Response: 984
15:47:00.597 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:00.597 -> Set Simulation Grade! --> Grade: -0.0% Response: 945
15:47:02.696 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 7F 00 ]
15:47:02.696 -> Set Simulation Grade! --> Grade: -0.0% Response: 1447
15:47:04.466 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:47:04.509 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2101]
15:47:06.593 -> >>> Wahoo Trainer is unresponsive!
15:47:06.624 -> Response: 45
15:47:08.594 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7F 00 ]
15:47:08.594 -> Set Simulation Grade! --> Grade: -0.0% Response: 1264
15:47:10.634 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F7 7F 00 ]
15:47:10.634 -> Set Simulation Grade! --> Grade: -0.0% Response: 225
15:47:12.670 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
15:47:12.670 -> Set Simulation Grade! --> Grade: -0.0%[ 1860]
15:47:14.517 -> >>> Wahoo Trainer is unresponsive!
15:47:14.723 -> Response: 224
15:47:16.467 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 14 80 00 ]
15:47:16.507 -> Set Simulation Grade! --> Grade: 0.1% Response: 1044
15:47:18.511 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 19 80 00 ]
15:47:18.511 -> Set Simulation Grade! --> Grade: 0.1% Response: 405
15:47:20.553 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1D 80 00 ]
15:47:20.553 -> Set Simulation Grade! --> Grade: 0.1% Response: 1165
15:47:22.589 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 26 80 00 ]
15:47:22.632 -> Set Simulation Grade! --> Grade: 0.1% Response: 828
15:47:24.516 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:47:24.516 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 605
15:47:26.548 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 80 00 ]
15:47:26.591 -> Set Simulation Grade! --> Grade: 0.0% Response: 865
15:47:28.571 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:28.571 -> Set Simulation Grade! --> Grade: -0.0% Response: 785
15:47:30.568 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
15:47:30.605 -> Set Simulation Grade! --> Grade: -0.0% Response: 946
15:47:32.607 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:32.654 -> Set Simulation Grade! --> Grade: -0.0% Response: 906
15:47:34.526 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:47:34.564 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1287
15:47:36.569 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:36.615 -> Set Simulation Grade! --> Grade: -0.0% Response: 448
15:47:38.607 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:38.648 -> Set Simulation Grade! --> Grade: -0.0% Response: 1506
15:47:40.609 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:40.609 -> Set Simulation Grade! --> Grade: -0.0% Response: 726
15:47:42.625 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
15:47:42.670 -> Set Simulation Grade! --> Grade: -0.0% Response: 1086
15:47:44.593 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:47:44.593 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 766
15:47:46.654 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:47:46.654 -> Set Simulation Grade! --> Grade: -0.0% Response: 766
15:47:48.625 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 80 00 ]
15:47:48.667 -> Set Simulation Grade! --> Grade: 0.0% Response: 887
15:47:50.706 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0B 80 00 ]
15:47:50.706 -> Set Simulation Grade! --> Grade: 0.0% Response: 544
15:47:52.651 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 12 80 00 ]
15:47:52.651 -> Set Simulation Grade! --> Grade: 0.1% Response: 1364
15:47:54.579 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:47:54.579 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 345
15:47:56.636 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2C 80 00 ]
15:47:56.636 -> Set Simulation Grade! --> Grade: 0.1% Response: 1605
15:47:58.668 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 48 80 00 ]
15:47:58.668 -> Set Simulation Grade! --> Grade: 0.2% Response: 565
15:48:00.731 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 64 80 00 ]
15:48:00.731 -> Set Simulation Grade! --> Grade: 0.3% Response: 228
15:48:02.706 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6E 80 00 ]
15:48:02.706 -> Set Simulation Grade! --> Grade: 0.3% Response: 746
15:48:04.588 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:04.630 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1225
15:48:06.632 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 63 80 00 ]
15:48:06.632 -> Set Simulation Grade! --> Grade: 0.3% Response: 887
15:48:08.608 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4F 80 00 ]
15:48:08.644 -> Set Simulation Grade! --> Grade: 0.2% Response: 407
15:48:10.707 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 25 80 00 ]
15:48:10.752 -> Set Simulation Grade! --> Grade: 0.1% Response: 1109
15:48:12.752 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:12.752 -> Set Simulation Grade! --> Grade: 0.0% Response: 1267
15:48:14.676 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:14.676 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 846
15:48:16.711 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
15:48:16.711 -> Set Simulation Grade! --> Grade: -0.0% Response: 1405
15:48:18.786 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:18.786 -> Set Simulation Grade! --> Grade: 0.0% Response: 1166
15:48:20.726 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:48:20.770 -> Set Simulation Grade! --> Grade: -0.0% Response: 1086
15:48:22.776 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:48:22.776 -> Set Simulation Grade! --> Grade: -0.0% Response: 1045
15:48:24.721 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:24.721 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 225
15:48:26.749 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:26.749 -> Set Simulation Grade! --> Grade: 0.0% Response: 1485
15:48:28.767 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:28.813 -> Set Simulation Grade! --> Grade: 0.0% Response: 646
15:48:30.849 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:30.849 -> Set Simulation Grade! --> Grade: 0.0% Response: 406
15:48:32.856 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:32.856 -> Set Simulation Grade! --> Grade: 0.0% Response: 666
15:48:34.767 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:34.802 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 746
15:48:36.830 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:48:36.830 -> Set Simulation Grade! --> Grade: 0.0% Response: 606
15:48:38.881 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:48:38.881 -> Set Simulation Grade! --> Grade: -0.0% Response: 466
15:48:40.848 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 27 80 00 ]
15:48:40.848 -> Set Simulation Grade! --> Grade: 0.1% Response: 1184
15:48:42.867 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3D 80 00 ]
15:48:42.910 -> Set Simulation Grade! --> Grade: 0.2% Response: 447
15:48:44.785 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:44.823 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1227
15:48:46.835 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
15:48:46.835 -> Set Simulation Grade! --> Grade: -0.0% Response: 887
15:48:48.910 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CD 7F 00 ]
15:48:48.910 -> Set Simulation Grade! --> Grade: -0.2% Response: 847
15:48:50.847 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6B 7F 00 ]
15:48:50.893 -> Set Simulation Grade! --> Grade: -0.5% Response: 867
15:48:52.828 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 7F 00 ]
15:48:52.868 -> Set Simulation Grade! --> Grade: -0.6% Response: 1387
15:48:54.834 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:48:54.834 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1805
15:48:56.851 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B9 7F 00 ]
15:48:56.851 -> Set Simulation Grade! --> Grade: -0.2% Response: 667
15:48:58.929 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3C 81 00 ]
15:48:58.929 -> Set Simulation Grade! --> Grade: 1.0% Response: 1026
15:49:00.928 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 37 82 00 ]
15:49:00.973 -> Set Simulation Grade! --> Grade: 1.7% Response: 387
15:49:02.942 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 32 82 00 ]
15:49:02.942 -> Set Simulation Grade! --> Grade: 1.7% Response: 1107
15:49:04.945 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3E 81 00 ]
15:49:04.987 -> Set Simulation Grade! --> Grade: 1.0%[ 180]
15:49:05.124 -> >>> Wahoo Trainer is unresponsive!
15:49:05.739 -> Response: 590
15:49:07.083 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 51 80 00 ]
15:49:07.083 -> Set Simulation Grade! --> Grade: 0.2%[ 2040]
15:49:09.102 -> >>> Wahoo Trainer is unresponsive!
15:49:09.509 -> Response: 427
15:49:11.162 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E9 7F 00 ]
15:49:11.162 -> Set Simulation Grade! --> Grade: -0.1% Response: 387
15:49:13.207 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EB 7F 00 ]
15:49:13.207 -> Set Simulation Grade! --> Grade: -0.1% Response: 1047
15:49:15.034 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:49:15.034 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 587
15:49:17.069 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:17.115 -> Set Simulation Grade! --> Grade: 0.0% Response: 550
15:49:19.108 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:49:19.153 -> Set Simulation Grade! --> Grade: -0.0% Response: 1007
15:49:21.187 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:21.187 -> Set Simulation Grade! --> Grade: 0.0% Response: 467
15:49:23.157 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:23.157 -> Set Simulation Grade! --> Grade: 0.0% Response: 388
15:49:25.107 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:49:25.155 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 708
15:49:27.118 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:27.118 -> Set Simulation Grade! --> Grade: 0.0% Response: 628
15:49:29.125 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:29.169 -> Set Simulation Grade! --> Grade: 0.0% Response: 987
15:49:31.197 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:31.197 -> Set Simulation Grade! --> Grade: 0.0% Response: 348
15:49:33.184 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:49:33.184 -> Set Simulation Grade! --> Grade: -0.0% Response: 667
15:49:35.155 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:49:35.155 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 587
15:49:37.201 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:49:37.201 -> Set Simulation Grade! --> Grade: 0.0% Response: 448
15:49:39.190 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: DC 7F 00 ]
15:49:39.190 -> Set Simulation Grade! --> Grade: -0.1% Response: 369
15:49:41.187 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E3 7F 00 ]
15:49:41.222 -> Set Simulation Grade! --> Grade: -0.1% Response: 428
15:49:43.168 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5E 83 00 ]
15:49:43.212 -> Set Simulation Grade! --> Grade: 2.6% Response: 348
15:49:45.214 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CD 83 00 ]
15:49:45.214 -> Set Simulation Grade! --> Grade: 3.0% Response: 508
15:49:47.249 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 66 83 00 ]
15:49:47.294 -> Set Simulation Grade! --> Grade: 2.7% Response: 1171
15:49:49.237 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CE 81 00 ]
15:49:49.237 -> Set Simulation Grade! --> Grade: 1.4%[ 120]
15:49:49.371 -> >>> Wahoo Trainer is unresponsive!
15:49:49.910 -> Response: 568
15:49:51.326 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: ED 7F 00 ]
15:49:51.368 -> Set Simulation Grade! --> Grade: -0.1% Response: 588
15:49:53.367 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BB 7F 00 ]
15:49:53.402 -> Set Simulation Grade! --> Grade: -0.2% Response: 248
15:49:55.411 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:49:55.411 -> Set Simulation Grade! --> Grade: -0.0% Response: 211
15:49:57.471 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:49:57.471 -> Set Simulation Grade! --> Grade: -0.0% Response: 667
15:49:59.381 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:49:59.381 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 448
15:50:01.407 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:50:01.450 -> Set Simulation Grade! --> Grade: 0.0% Response: 108
15:50:03.446 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:50:03.479 -> Set Simulation Grade! --> Grade: 0.0% Response: 268
15:50:05.528 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:50:05.529 -> Set Simulation Grade! --> Grade: 0.0% Response: 1226
15:50:07.499 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:50:07.499 -> Set Simulation Grade! --> Grade: -0.0% Response: 349
15:50:09.453 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:50:09.453 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 469
15:50:11.434 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
15:50:11.434 -> Set Simulation Grade! --> Grade: -0.0% Response: 491
15:50:13.471 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CB 80 00 ]
15:50:13.471 -> Set Simulation Grade! --> Grade: 0.6% Response: 449
15:50:15.531 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 90 82 00 ]
15:50:15.531 -> Set Simulation Grade! --> Grade: 2.0% Response: 111
15:50:17.553 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6D 82 00 ]
15:50:17.553 -> Set Simulation Grade! --> Grade: 1.9% Response: 769
15:50:19.573 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E4 80 00 ]
15:50:19.573 -> Set Simulation Grade! --> Grade: 0.7%[ 121]
15:50:19.649 -> >>> Wahoo Trainer is unresponsive!
15:50:20.342 -> Response: 667
15:50:21.687 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9D 7F 00 ]
15:50:21.734 -> Set Simulation Grade! --> Grade: -0.3% Response: 328
15:50:23.764 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 55 7F 00 ]
15:50:23.764 -> Set Simulation Grade! --> Grade: -0.5% Response: 788
15:50:25.808 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 45 7F 00 ]
15:50:25.808 -> Set Simulation Grade! --> Grade: -0.6% Response: 948
15:50:27.838 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 78 7F 00 ]
15:50:27.838 -> Set Simulation Grade! --> Grade: -0.4% Response: 408
15:50:29.678 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:50:29.678 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 448
15:50:31.749 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B0 80 00 ]
15:50:31.749 -> Set Simulation Grade! --> Grade: 0.5% Response: 409
15:50:33.781 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E1 7F 00 ]
15:50:33.781 -> Set Simulation Grade! --> Grade: -0.1% Response: 367
15:50:35.816 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 31 7F 00 ]
15:50:35.816 -> Set Simulation Grade! --> Grade: -0.6% Response: 530
15:50:37.851 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7E 00 ]
15:50:37.851 -> Set Simulation Grade! --> Grade: -0.8% Response: 490
15:50:39.688 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:50:39.727 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 530
15:50:41.728 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7E 00 ]
15:50:41.771 -> Set Simulation Grade! --> Grade: -0.8% Response: 489
15:50:45.691 -> [ 3960]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 77 7F 00 ]
15:50:45.691 -> Set Simulation Grade! --> Grade: -0.4% Response: 1029
15:50:47.727 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 77 7F 00 ]
15:50:47.760 -> Set Simulation Grade! --> Grade: -0.4% Response: 389
15:50:49.831 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:50:49.870 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 790
15:50:51.817 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 77 7F 00 ]
15:50:51.817 -> Set Simulation Grade! --> Grade: -0.4% Response: 809
15:51:03.876 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
15:51:03.876 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
15:51:03.876 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
15:51:03.935 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
15:51:03.935 -> --> ESP32 Server is advertising again!
15:51:13.548 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!
15:51:46.537 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
15:51:46.537 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!

9: Motor check faalde
15:52:22.925 ->
15:52:22.925 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:52:22.925 -> ------------------------ Version 01.4 --------------------------
15:52:22.925 -> SIM32
15:52:23.135 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:52:23.135 -> SSD1306 OLED display is running...
15:52:27.948 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
15:52:28.169 -> Configuring the default Generic Access Service
15:52:28.169 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:52:28.169 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:52:28.201 -> Configuring the Server Nordic Uart Service
15:52:28.201 -> Configuring the Server Device Information Service
15:52:28.201 -> Configuring the Server Cycle Power Service
15:52:28.201 -> Configuring the Server Cadence and Speed Service
15:52:28.201 -> Setting up the Server advertising payload(s)
15:52:28.201 -> Setting Appearance in Advertised data to [1152]
15:52:28.201 -> Setting DeviceName in Advertised data to [SIM32]
15:52:28.236 -> Server is advertising: CPS + Wahoo
15:52:28.236 -> Client Starts Scanning for Server Device with CPS + Wahoo!

10: Geen fix met Kickr
15:52:35.585 ->
15:52:35.585 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:52:35.585 -> ------------------------ Version 01.4 --------------------------
15:52:35.585 -> SIM32
15:52:35.800 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:52:35.800 -> SSD1306 OLED display is running...
15:52:42.316 -> Motor Control Task Created and Active!
15:52:42.316 -> Simcline Basic Motor Funtions are working!!
15:52:42.571 -> Configuring the default Generic Access Service
15:52:42.571 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:52:42.571 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:52:42.571 -> Configuring the Server Nordic Uart Service
15:52:42.571 -> Configuring the Server Device Information Service
15:52:42.603 -> Configuring the Server Cycle Power Service
15:52:42.603 -> Configuring the Server Cadence and Speed Service
15:52:42.603 -> Setting up the Server advertising payload(s)
15:52:42.603 -> Setting Appearance in Advertised data to [1152]
15:52:42.603 -> Setting DeviceName in Advertised data to [SIM32]
15:52:42.603 -> Server is advertising: CPS + Wahoo
15:52:42.603 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:53:11.105 -> Found advertising Peripheral with CPS enabled! See data:
15:53:11.105 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:53:11.168 -> Service Data:
15:53:11.168 -> UUID: 0x1826, Data: �
15:53:14.600 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

11: Geen fix met Kickr
15:53:45.508 ->
15:53:45.508 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:53:45.508 -> ------------------------ Version 01.4 --------------------------
15:53:45.508 -> SIM32
15:53:45.730 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:53:45.730 -> SSD1306 OLED display is running...
15:53:52.245 -> Motor Control Task Created and Active!
15:53:52.245 -> Simcline Basic Motor Funtions are working!!
15:53:52.511 -> Configuring the default Generic Access Service
15:53:52.511 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:53:52.511 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:53:52.511 -> Configuring the Server Nordic Uart Service
15:53:52.511 -> Configuring the Server Device Information Service
15:53:52.511 -> Configuring the Server Cycle Power Service
15:53:52.550 -> Configuring the Server Cadence and Speed Service
15:53:52.550 -> Setting up the Server advertising payload(s)
15:53:52.550 -> Setting Appearance in Advertised data to [1152]
15:53:52.550 -> Setting DeviceName in Advertised data to [SIM32]
15:53:52.550 -> Server is advertising: CPS + Wahoo
15:53:52.550 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:54:13.016 -> Found advertising Peripheral with CPS enabled! See data:
15:54:13.016 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:54:13.016 -> Service Data:
15:54:13.016 -> UUID: 0x1826, Data: �
15:54:14.984 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

12: Fix en wederom Volcano Circuit kunnen fietsen (2e maal)
15:54:53.485 ->
15:54:53.485 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:54:53.485 -> ------------------------ Version 01.4 --------------------------
15:54:53.485 -> SIM32
15:54:53.707 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:54:53.707 -> SSD1306 OLED display is running...
15:55:00.199 -> Motor Control Task Created and Active!
15:55:00.199 -> Simcline Basic Motor Funtions are working!!
15:55:00.471 -> Configuring the default Generic Access Service
15:55:00.471 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:55:00.502 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:55:00.502 -> Configuring the Server Nordic Uart Service
15:55:00.502 -> Configuring the Server Device Information Service
15:55:00.502 -> Configuring the Server Cycle Power Service
15:55:00.502 -> Configuring the Server Cadence and Speed Service
15:55:00.502 -> Setting up the Server advertising payload(s)
15:55:00.502 -> Setting Appearance in Advertised data to [1152]
15:55:00.502 -> Setting DeviceName in Advertised data to [SIM32]
15:55:00.554 -> Server is advertising: CPS + Wahoo
15:55:00.554 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:55:08.692 -> Found advertising Peripheral with CPS enabled! See data:
15:55:08.692 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:55:08.746 -> Service Data:
15:55:08.746 -> UUID: 0x1826, Data: �
15:55:09.655 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:55:09.655 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:55:09.695 -> Now checking all Client Services and Characteristics!
15:55:09.695 -> If Mandatory Services Fail --> the Client will disconnect!
15:55:10.669 -> Client Generic Access: Found!
15:55:12.689 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:55:15.015 -> -> Client Reads Appearance: [0]
15:55:15.464 -> Client Device Information Service: Found!
15:55:16.207 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:55:19.905 -> -> Client Reads Serial Number: [221001365]
15:55:21.071 -> Client_CyclingPower_Service: Found!
15:55:23.252 -> Client_Wahoo_ControlPoint_Chr: Found!
15:55:23.957 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:55:26.439 -> Client_CP_Measurement_Chr: Found!
15:55:30.470 -> Client_CP_Feature_Chr: Found!
15:55:30.669 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:55:32.970 -> Client_CP_Location_Chr: Found!
15:55:33.967 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:55:34.000 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 252
15:55:35.967 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
15:56:49.362 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
15:56:49.362 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
15:56:49.362 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
15:56:49.551 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
15:56:50.487 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
15:56:52.951 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
15:56:53.351 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
15:56:53.912 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
15:56:54.183 -> [ 0]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:56:54.183 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 194
15:56:56.214 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:56:56.214 -> Set Simulation Grade! --> Grade: 1.1% Response: 454
15:56:59.441 -> [ 3240]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:56:59.441 -> Set Simulation Grade! --> Grade: 1.1% Response: 814
15:57:01.469 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:01.503 -> Set Simulation Grade! --> Grade: 1.1% Response: 773
15:57:03.540 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:03.540 -> Set Simulation Grade! --> Grade: 1.1%[ 660]
15:57:04.170 -> >>> Wahoo Trainer is unresponsive!
15:57:04.262 -> Response: 73
15:57:12.095 -> [ 7920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:12.095 -> Set Simulation Grade! --> Grade: 1.1% Response: 353
15:57:14.173 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:14.173 -> Set Simulation Grade! --> Grade: 1.1%[ 120]
15:57:14.267 -> >>> Wahoo Trainer is unresponsive!
15:57:14.642 -> Response: 395
15:57:16.172 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:16.208 -> Set Simulation Grade! --> Grade: 1.1% Response: 1175
15:57:18.243 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:18.243 -> Set Simulation Grade! --> Grade: 1.1% Response: 1537
15:57:20.289 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:20.289 -> Set Simulation Grade! --> Grade: 1.1% Response: 195
15:57:22.324 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:22.324 -> Set Simulation Grade! --> Grade: 1.1% Response: 1057
15:57:24.246 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:57:24.246 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 936
15:57:26.193 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:26.235 -> Set Simulation Grade! --> Grade: 1.1% Response: 1252
15:57:28.238 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:28.238 -> Set Simulation Grade! --> Grade: 1.1% Response: 815
15:57:30.271 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 81 00 ]
15:57:30.307 -> Set Simulation Grade! --> Grade: 1.1% Response: 1174
15:57:55.591 -> [ 25321]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:57:55.746 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 555
15:57:57.725 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:57:57.725 -> Set Simulation Grade! --> Grade: 0.0% Response: 555
15:57:59.670 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:57:59.710 -> Set Simulation Grade! --> Grade: 0.0% Response: 576
15:58:01.745 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:01.745 -> Set Simulation Grade! --> Grade: -0.0% Response: 37
15:58:03.750 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:03.792 -> Set Simulation Grade! --> Grade: 0.0% Response: 496
15:58:05.610 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:05.650 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 636
15:58:07.664 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:07.664 -> Set Simulation Grade! --> Grade: 0.0% Response: 1194
15:58:09.758 -> [ 2101]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:09.787 -> Set Simulation Grade! --> Grade: 0.0%[ 1980]
15:58:11.776 -> >>> Wahoo Trainer is unresponsive!
15:58:12.167 -> Response: 414
15:58:13.808 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:13.808 -> Set Simulation Grade! --> Grade: 0.0% Response: 375
15:58:15.643 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:15.643 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 315
15:58:17.685 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:17.685 -> Set Simulation Grade! --> Grade: 0.0% Response: 1575
15:58:19.657 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:19.702 -> Set Simulation Grade! --> Grade: 0.0% Response: 293
15:58:21.735 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:21.735 -> Set Simulation Grade! --> Grade: 0.0% Response: 653
15:58:23.740 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:23.740 -> Set Simulation Grade! --> Grade: -0.0% Response: 712
15:58:25.742 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:25.742 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 434
15:58:27.776 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:27.776 -> Set Simulation Grade! --> Grade: 0.0% Response: 394
15:58:29.809 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:29.809 -> Set Simulation Grade! --> Grade: -0.0% Response: 756
15:58:31.772 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:31.811 -> Set Simulation Grade! --> Grade: 0.0% Response: 376
15:58:33.810 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:33.846 -> Set Simulation Grade! --> Grade: 0.0% Response: 235
15:58:35.677 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:35.712 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 276
15:58:37.771 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:37.811 -> Set Simulation Grade! --> Grade: -0.0% Response: 676
15:58:39.822 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:39.822 -> Set Simulation Grade! --> Grade: 0.0% Response: 235
15:58:41.796 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:41.796 -> Set Simulation Grade! --> Grade: -0.0% Response: 354
15:58:43.923 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:43.923 -> Set Simulation Grade! --> Grade: -0.0% Response: 354
15:58:45.699 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:45.699 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 156
15:58:47.793 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:47.838 -> Set Simulation Grade! --> Grade: 0.0% Response: 256
15:58:49.771 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:49.816 -> Set Simulation Grade! --> Grade: 0.0% Response: 576
15:58:51.811 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:51.857 -> Set Simulation Grade! --> Grade: -0.0% Response: 1036
15:58:53.859 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:53.859 -> Set Simulation Grade! --> Grade: 0.0% Response: 496
15:58:55.817 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:58:55.817 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1176
15:58:57.851 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:58:57.851 -> Set Simulation Grade! --> Grade: 0.0% Response: 336
15:58:59.898 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:58:59.898 -> Set Simulation Grade! --> Grade: -0.0% Response: 295
15:59:01.930 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 26 80 00 ]
15:59:01.930 -> Set Simulation Grade! --> Grade: 0.1% Response: 757
15:59:03.966 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3D 80 00 ]
15:59:03.966 -> Set Simulation Grade! --> Grade: 0.2% Response: 115
15:59:05.832 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:05.832 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 557
15:59:07.838 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 13 80 00 ]
15:59:07.838 -> Set Simulation Grade! --> Grade: 0.1% Response: 715
15:59:09.899 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F0 7F 00 ]
15:59:09.899 -> Set Simulation Grade! --> Grade: -0.0% Response: 577
15:59:11.910 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C9 7F 00 ]
15:59:11.944 -> Set Simulation Grade! --> Grade: -0.2% Response: 234
15:59:13.962 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 7F 00 ]
15:59:13.962 -> Set Simulation Grade! --> Grade: -0.4% Response: 696
15:59:15.854 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:15.854 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 336
15:59:17.793 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 39 7F 00 ]
15:59:17.827 -> Set Simulation Grade! --> Grade: -0.6%[ 2040]
15:59:19.843 -> >>> Wahoo Trainer is unresponsive!
15:59:19.843 -> Response: 17
15:59:21.899 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7F 00 ]
15:59:21.899 -> Set Simulation Grade! --> Grade: -0.0% Response: 877
15:59:23.920 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 74 81 00 ]
15:59:23.920 -> Set Simulation Grade! --> Grade: 1.1% Response: 1435
15:59:25.840 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:25.840 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 317
15:59:27.871 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 46 82 00 ]
15:59:27.904 -> Set Simulation Grade! --> Grade: 1.8% Response: 175
15:59:29.876 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B3 81 00 ]
15:59:29.876 -> Set Simulation Grade! --> Grade: 1.3% Response: 697
15:59:31.893 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B2 80 00 ]
15:59:31.939 -> Set Simulation Grade! --> Grade: 0.5% Response: 1157
15:59:33.931 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 34 80 00 ]
15:59:33.977 -> Set Simulation Grade! --> Grade: 0.2% Response: 715
15:59:35.914 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:35.950 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
15:59:37.950 -> >>> Wahoo Trainer is unresponsive!
15:59:39.676 -> Response: 1696
15:59:39.990 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E8 7F 00 ]
15:59:40.033 -> Set Simulation Grade! --> Grade: -0.1% Response: 858
15:59:42.031 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F7 7F 00 ]
15:59:42.065 -> Set Simulation Grade! --> Grade: -0.0% Response: 618
15:59:44.051 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:59:44.051 -> Set Simulation Grade! --> Grade: 0.0% Response: 638
15:59:45.959 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:45.959 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 317
15:59:47.997 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:59:47.997 -> Set Simulation Grade! --> Grade: 0.0% Response: 678
15:59:49.950 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:59:49.997 -> Set Simulation Grade! --> Grade: -0.0% Response: 398
15:59:52.000 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:59:52.000 -> Set Simulation Grade! --> Grade: 0.0% Response: 460
15:59:54.073 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
15:59:54.073 -> Set Simulation Grade! --> Grade: 0.0% Response: 115
15:59:55.998 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
15:59:55.998 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 997
15:59:57.993 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
15:59:58.029 -> Set Simulation Grade! --> Grade: -0.0% Response: 655
16:00:00.032 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:00.066 -> Set Simulation Grade! --> Grade: 0.0% Response: 615
16:00:02.036 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:02.036 -> Set Simulation Grade! --> Grade: 0.0% Response: 836
16:00:04.058 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:00:04.058 -> Set Simulation Grade! --> Grade: -0.0% Response: 197
16:00:06.014 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:00:06.014 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
16:00:08.046 -> >>> Wahoo Trainer is unresponsive!
16:00:08.092 -> Response: 39
16:00:10.051 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:00:10.096 -> Set Simulation Grade! --> Grade: -0.0% Response: 198
16:00:12.112 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:12.112 -> Set Simulation Grade! --> Grade: 0.0% Response: 857
16:00:14.133 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B1 7F 00 ]
16:00:14.174 -> Set Simulation Grade! --> Grade: -0.2% Response: 1219
16:00:16.095 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:00:16.095 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1497
16:00:18.136 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 91 83 00 ]
16:00:18.136 -> Set Simulation Grade! --> Grade: 2.8% Response: 656
16:00:20.131 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CF 83 00 ]
16:00:20.169 -> Set Simulation Grade! --> Grade: 3.0% Response: 716
16:00:22.174 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 97 83 00 ]
16:00:22.222 -> Set Simulation Grade! --> Grade: 2.8% Response: 278
16:00:24.158 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 82 00 ]
16:00:24.158 -> Set Simulation Grade! --> Grade: 2.3% Response: 698
16:00:26.222 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 86 81 00 ]
16:00:26.222 -> Set Simulation Grade! --> Grade: 1.2%[ 180]
16:00:26.392 -> >>> Wahoo Trainer is unresponsive!
16:00:27.374 -> Response: 978
16:00:28.328 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:00:28.328 -> Set Simulation Grade! --> Grade: -0.0% Response: 259
16:00:30.333 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B6 7F 00 ]
16:00:30.366 -> Set Simulation Grade! --> Grade: -0.2% Response: 1616
16:00:32.385 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EE 7F 00 ]
16:00:32.385 -> Set Simulation Grade! --> Grade: -0.1% Response: 1077
16:00:34.457 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:34.457 -> Set Simulation Grade! --> Grade: 0.0% Response: 1340
16:00:36.334 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:00:36.380 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 1979]
16:00:38.331 -> >>> Wahoo Trainer is unresponsive!
16:00:38.544 -> Response: 237
16:00:40.354 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:00:40.398 -> Set Simulation Grade! --> Grade: -0.0% Response: 998
16:00:42.391 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:42.427 -> Set Simulation Grade! --> Grade: 0.0% Response: 561
16:00:44.410 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:00:44.410 -> Set Simulation Grade! --> Grade: 0.0% Response: 281
16:00:46.353 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:00:46.396 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 398
16:00:48.402 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E8 7F 00 ]
16:00:48.402 -> Set Simulation Grade! --> Grade: -0.1% Response: 1256
16:00:50.469 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E9 7F 00 ]
16:00:50.469 -> Set Simulation Grade! --> Grade: -0.1% Response: 518
16:00:52.511 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 28 80 00 ]
16:00:52.511 -> Set Simulation Grade! --> Grade: 0.1% Response: 1179
16:00:54.452 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 41 81 00 ]
16:00:54.497 -> Set Simulation Grade! --> Grade: 1.0% Response: 801
16:00:56.431 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:00:56.467 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 519
16:00:58.502 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 76 82 00 ]
16:00:58.502 -> Set Simulation Grade! --> Grade: 1.9% Response: 1077
16:01:00.458 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 37 81 00 ]
16:01:00.501 -> Set Simulation Grade! --> Grade: 1.0% Response: 1398
16:01:02.538 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CA 7F 00 ]
16:01:02.538 -> Set Simulation Grade! --> Grade: -0.2% Response: 259
16:01:04.474 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6E 7F 00 ]
16:01:04.508 -> Set Simulation Grade! --> Grade: -0.4% Response: 1481
16:01:06.488 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:06.488 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 399
16:01:08.520 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4F 7F 00 ]
16:01:08.520 -> Set Simulation Grade! --> Grade: -0.5% Response: 859
16:01:10.555 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C3 7F 00 ]
16:01:10.555 -> Set Simulation Grade! --> Grade: -0.2% Response: 519
16:01:12.605 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A5 80 00 ]
16:01:12.605 -> Set Simulation Grade! --> Grade: 0.5% Response: 1579
16:01:14.552 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 41 80 00 ]
16:01:14.586 -> Set Simulation Grade! --> Grade: 0.2% Response: 1299
16:01:16.470 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:16.511 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 579
16:01:18.511 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 7F 00 ]
16:01:18.554 -> Set Simulation Grade! --> Grade: -0.8% Response: 1137
16:01:20.525 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F5 7E 00 ]
16:01:20.525 -> Set Simulation Grade! --> Grade: -0.8% Response: 1059
16:01:22.565 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7E 00 ]
16:01:22.565 -> Set Simulation Grade! --> Grade: -0.8% Response: 322
16:01:24.603 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5E 7F 00 ]
16:01:24.603 -> Set Simulation Grade! --> Grade: -0.5% Response: 477
16:01:26.491 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:26.530 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1858
16:01:28.564 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4E 80 00 ]
16:01:28.564 -> Set Simulation Grade! --> Grade: 0.2% Response: 1018
16:01:30.511 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5C 80 00 ]
16:01:30.550 -> Set Simulation Grade! --> Grade: 0.3% Response: 940
16:01:32.558 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:01:32.558 -> Set Simulation Grade! --> Grade: 0.0% Response: 1099
16:01:34.577 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:01:34.577 -> Set Simulation Grade! --> Grade: 0.0% Response: 818
16:01:36.545 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:36.545 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1040
16:01:38.592 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:01:38.592 -> Set Simulation Grade! --> Grade: 0.0% Response: 1599
16:01:40.560 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:01:40.560 -> Set Simulation Grade! --> Grade: 0.0% Response: 418
16:01:42.631 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:01:42.678 -> Set Simulation Grade! --> Grade: -0.0% Response: 820
16:01:44.671 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:01:44.708 -> Set Simulation Grade! --> Grade: -0.0% Response: 980
16:01:46.554 -> [ 1861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:46.554 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 118
16:01:48.558 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:01:48.558 -> Set Simulation Grade! --> Grade: 0.0% Response: 1041
16:01:50.574 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:01:50.574 -> Set Simulation Grade! --> Grade: -0.0% Response: 400
16:01:52.636 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:01:52.636 -> Set Simulation Grade! --> Grade: -0.0% Response: 658
16:01:54.571 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 20 80 00 ]
16:01:54.610 -> Set Simulation Grade! --> Grade: 0.1% Response: 478
16:01:56.580 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:01:56.580 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1700
16:01:58.579 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5A 80 00 ]
16:01:58.579 -> Set Simulation Grade! --> Grade: 0.3% Response: 418
16:02:00.581 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E0 7F 00 ]
16:02:00.581 -> Set Simulation Grade! --> Grade: -0.1% Response: 478
16:02:02.615 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4D 7F 00 ]
16:02:02.658 -> Set Simulation Grade! --> Grade: -0.5% Response: 838
16:02:04.692 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B5 7E 00 ]
16:02:04.692 -> Set Simulation Grade! --> Grade: -1.0%[ 1920]
16:02:06.570 -> >>> Wahoo Trainer is unresponsive!
16:02:06.853 -> Response: 279
16:02:08.571 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9D 7E 00 ]
16:02:08.571 -> Set Simulation Grade! --> Grade: -1.1% Response: 898
16:02:10.645 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EA 7E 00 ]
16:02:10.645 -> Set Simulation Grade! --> Grade: -0.8% Response: 1960
16:02:12.716 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 19 7F 00 ]
16:02:12.716 -> Set Simulation Grade! --> Grade: -0.7% Response: 861
16:02:14.677 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 37 7F 00 ]
16:02:14.677 -> Set Simulation Grade! --> Grade: -0.6%[ 1920]
16:02:16.609 -> >>> Wahoo Trainer is unresponsive!
16:02:17.672 -> Response: 1061
16:02:18.606 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9A 7F 00 ]
16:02:18.606 -> Set Simulation Grade! --> Grade: -0.3% Response: 1080
16:02:20.652 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: DC 80 00 ]
16:02:20.652 -> Set Simulation Grade! --> Grade: 0.7% Response: 1139
16:02:22.656 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:02:22.698 -> Set Simulation Grade! --> Grade: 0.0% Response: 1499
16:02:24.694 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:02:24.739 -> Set Simulation Grade! --> Grade: 0.0% Response: 959
16:02:26.653 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:02:26.653 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 739
16:02:28.685 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:02:28.685 -> Set Simulation Grade! --> Grade: 0.0% Response: 800
16:02:30.632 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:02:30.670 -> Set Simulation Grade! --> Grade: -0.0% Response: 1220
16:02:32.674 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:02:32.706 -> Set Simulation Grade! --> Grade: -0.0%[ 2040]
16:02:34.747 -> >>> Wahoo Trainer is unresponsive!
16:02:34.747 -> Response: 39
16:02:36.634 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:02:36.668 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 820
16:02:38.659 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7F 00 ]
16:02:38.659 -> Set Simulation Grade! --> Grade: -0.0% Response: 441
16:02:40.683 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:02:40.683 -> Set Simulation Grade! --> Grade: -0.0% Response: 1102
16:02:42.719 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
16:02:42.719 -> Set Simulation Grade! --> Grade: -0.0% Response: 361
16:02:44.710 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 7F 00 ]
16:02:44.710 -> Set Simulation Grade! --> Grade: -0.0% Response: 482
16:02:46.751 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:02:46.751 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1344
16:02:48.692 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:02:48.736 -> Set Simulation Grade! --> Grade: -0.0% Response: 562
16:02:50.739 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:02:50.784 -> Set Simulation Grade! --> Grade: -0.0% Response: 521
16:02:52.714 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:02:52.755 -> Set Simulation Grade! --> Grade: 0.0% Response: 1141
16:02:54.823 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:02:54.823 -> Set Simulation Grade! --> Grade: 0.0% Response: 1342
16:02:56.715 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:02:56.715 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1182
16:02:58.722 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:02:58.722 -> Set Simulation Grade! --> Grade: 0.0% Response: 840
16:03:00.692 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:03:00.730 -> Set Simulation Grade! --> Grade: -0.0% Response: 1262
16:03:02.771 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:03:02.771 -> Set Simulation Grade! --> Grade: -0.0% Response: 1621
16:03:04.773 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:03:04.807 -> Set Simulation Grade! --> Grade: -0.0% Response: 1681
16:03:06.728 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:03:06.728 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 662
16:03:08.777 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:03:08.777 -> Set Simulation Grade! --> Grade: -0.0% Response: 1121
16:03:10.750 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:03:10.750 -> Set Simulation Grade! --> Grade: -0.0% Response: 1241
16:03:12.843 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:12.843 -> Set Simulation Grade! --> Grade: 0.0% Response: 641
16:03:14.841 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:14.841 -> Set Simulation Grade! --> Grade: 0.0% Response: 361
16:03:16.713 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:03:16.747 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 542
16:03:18.693 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:18.734 -> Set Simulation Grade! --> Grade: 0.0% Response: 562
16:03:20.769 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:20.769 -> Set Simulation Grade! --> Grade: 0.0% Response: 722
16:03:22.773 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:22.813 -> Set Simulation Grade! --> Grade: 0.0% Response: 481
16:03:24.848 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:03:24.848 -> Set Simulation Grade! --> Grade: 0.0% Response: 142
16:03:26.770 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:03:26.770 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 322
16:03:28.780 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:03:28.780 -> Set Simulation Grade! --> Grade: 0.0% Response: 184
16:03:30.922 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EA 7F 00 ]
16:03:30.922 -> Set Simulation Grade! --> Grade: -0.1% Response: 381
16:03:32.951 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 41 80 00 ]
16:03:32.951 -> Set Simulation Grade! --> Grade: 0.2% Response: 442
16:03:34.833 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 88 81 00 ]
16:03:34.867 -> Set Simulation Grade! --> Grade: 1.2% Response: 1421
16:03:36.816 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:03:36.854 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 642
16:03:38.948 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 49 83 00 ]
16:03:38.948 -> Set Simulation Grade! --> Grade: 2.6% Response: 342
16:03:40.842 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 83 00 ]
16:03:40.842 -> Set Simulation Grade! --> Grade: 2.5% Response: 1022
16:03:42.899 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F5 82 00 ]
16:03:42.899 -> Set Simulation Grade! --> Grade: 2.3% Response: 1182
16:03:44.913 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BF 82 00 ]
16:03:44.952 -> Set Simulation Grade! --> Grade: 2.1% Response: 343
16:03:47.014 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B2 82 00 ]
16:03:47.060 -> Set Simulation Grade! --> Grade: 2.1% Response: 645
16:03:48.996 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BE 82 00 ]
16:03:49.049 -> Set Simulation Grade! --> Grade: 2.1% Response: 362
16:03:51.074 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F0 82 00 ]
16:03:51.074 -> Set Simulation Grade! --> Grade: 2.3% Response: 1123
16:03:53.143 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A1 83 00 ]
16:03:53.143 -> Set Simulation Grade! --> Grade: 2.8% Response: 1522
16:03:55.206 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 7F 81 00 ]
16:03:55.206 -> Set Simulation Grade! --> Grade: 1.2%[ 120]
16:03:55.293 -> >>> Wahoo Trainer is unresponsive!
16:03:55.972 -> Response: 662
16:03:57.213 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9F 80 00 ]
16:03:57.257 -> Set Simulation Grade! --> Grade: 0.5% Response: 741
16:03:59.312 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4B 80 00 ]
16:03:59.354 -> Set Simulation Grade! --> Grade: 0.2% Response: 242
16:04:01.293 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 51 80 00 ]
16:04:01.326 -> Set Simulation Grade! --> Grade: 0.2% Response: 762
16:04:03.311 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 24 80 00 ]
16:04:03.311 -> Set Simulation Grade! --> Grade: 0.1% Response: 183
16:04:05.321 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:04:05.321 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 544
16:04:07.325 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:04:07.325 -> Set Simulation Grade! --> Grade: -0.0% Response: 363
16:04:09.274 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
16:04:09.308 -> Set Simulation Grade! --> Grade: -0.0% Response: 483
16:04:11.355 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
16:04:11.355 -> Set Simulation Grade! --> Grade: -0.0% Response: 442
16:04:13.440 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:04:13.440 -> Set Simulation Grade! --> Grade: -0.0% Response: 942
16:04:15.283 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:04:15.284 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 586
16:04:17.313 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 07 80 00 ]
16:04:17.358 -> Set Simulation Grade! --> Grade: 0.0% Response: 442
16:04:19.412 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7F 00 ]
16:04:19.451 -> Set Simulation Grade! --> Grade: -0.0% Response: 644
16:04:21.418 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E6 7F 00 ]
16:04:21.418 -> Set Simulation Grade! --> Grade: -0.1% Response: 466
16:04:23.409 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E3 7F 00 ]
16:04:23.409 -> Set Simulation Grade! --> Grade: -0.1% Response: 383
16:04:25.293 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:04:25.333 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 263
16:04:27.373 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 87 82 00 ]
16:04:27.373 -> Set Simulation Grade! --> Grade: 2.0% Response: 722
16:04:29.407 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 82 00 ]
16:04:29.407 -> Set Simulation Grade! --> Grade: 2.3% Response: 1084
16:04:31.501 -> [ 2101]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E2 82 00 ]
16:04:31.501 -> Set Simulation Grade! --> Grade: 2.3% Response: 681
16:04:33.515 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6F 82 00 ]
16:04:33.549 -> Set Simulation Grade! --> Grade: 1.9% Response: 1043
16:04:35.434 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 15 81 00 ]
16:04:35.474 -> Set Simulation Grade! --> Grade: 0.8%[ 181]
16:04:35.614 -> >>> Wahoo Trainer is unresponsive!
16:04:36.275 -> Response: 645
16:04:37.573 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CC 7F 00 ]
16:04:37.573 -> Set Simulation Grade! --> Grade: -0.2% Response: 623
16:04:39.620 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E1 7F 00 ]
16:04:39.620 -> Set Simulation Grade! --> Grade: -0.1% Response: 684
16:04:41.657 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4F 80 00 ]
16:04:41.657 -> Set Simulation Grade! --> Grade: 0.2% Response: 343
16:04:43.594 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4F 80 00 ]
16:04:43.641 -> Set Simulation Grade! --> Grade: 0.2% Response: 764
16:04:45.558 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:04:45.558 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 143
16:04:47.700 -> [ 2159]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D0 7F 00 ]
16:04:47.700 -> Set Simulation Grade! --> Grade: -0.1% Response: 783
16:04:49.755 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E9 7E 00 ]
16:04:49.755 -> Set Simulation Grade! --> Grade: -0.8% Response: 344
16:04:51.671 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BF 7E 00 ]
16:04:51.671 -> Set Simulation Grade! --> Grade: -1.0% Response: 525
16:04:53.718 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 09 7F 00 ]
16:04:53.718 -> Set Simulation Grade! --> Grade: -0.8% Response: 983
16:04:55.596 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:04:55.643 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 663
16:04:57.677 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6A 80 00 ]
16:04:57.677 -> Set Simulation Grade! --> Grade: 0.3% Response: 623
16:04:59.614 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 80 00 ]
16:04:59.650 -> Set Simulation Grade! --> Grade: 0.1% Response: 343
16:05:01.722 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:05:01.722 -> Set Simulation Grade! --> Grade: 0.0% Response: 244
16:05:03.720 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:05:03.720 -> Set Simulation Grade! --> Grade: 0.0% Response: 362
16:05:05.656 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:05.656 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 644
16:05:07.749 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:05:07.749 -> Set Simulation Grade! --> Grade: 0.0% Response: 444
16:05:09.692 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:05:09.726 -> Set Simulation Grade! --> Grade: -0.0% Response: 165
16:05:11.757 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F5 7F 00 ]
16:05:11.757 -> Set Simulation Grade! --> Grade: -0.0% Response: 225
16:05:13.794 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F3 7F 00 ]
16:05:13.794 -> Set Simulation Grade! --> Grade: -0.0% Response: 484
16:05:15.677 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:15.677 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 224
16:05:17.711 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:05:17.711 -> Set Simulation Grade! --> Grade: -0.0% Response: 284
16:05:19.714 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 7F 00 ]
16:05:19.747 -> Set Simulation Grade! --> Grade: -0.0% Response: 443
16:05:21.695 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0E 80 00 ]
16:05:21.742 -> Set Simulation Grade! --> Grade: 0.0% Response: 564
16:05:23.774 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 17 80 00 ]
16:05:23.774 -> Set Simulation Grade! --> Grade: 0.1% Response: 624
16:05:25.757 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:25.757 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 644
16:05:27.701 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 25 80 00 ]
16:05:27.743 -> Set Simulation Grade! --> Grade: 0.1% Response: 763
16:05:29.784 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 80 00 ]
16:05:29.784 -> Set Simulation Grade! --> Grade: 0.1% Response: 224
16:05:31.715 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 80 00 ]
16:05:31.770 -> Set Simulation Grade! --> Grade: 0.0% Response: 244
16:05:33.844 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:33.844 -> Set Simulation Grade! --> Grade: -0.0% Response: 643
16:05:35.680 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:35.680 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 384
16:05:37.757 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:37.757 -> Set Simulation Grade! --> Grade: -0.0% Response: 345
16:05:39.854 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:39.854 -> Set Simulation Grade! --> Grade: -0.0% Response: 445
16:05:41.826 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:41.826 -> Set Simulation Grade! --> Grade: -0.0% Response: 865
16:05:43.857 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:43.857 -> Set Simulation Grade! --> Grade: -0.0% Response: 625
16:05:45.702 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:45.702 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 265
16:05:47.778 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:05:47.778 -> Set Simulation Grade! --> Grade: -0.0% Response: 225
16:05:49.775 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:05:49.807 -> Set Simulation Grade! --> Grade: -0.0% Response: 285
16:05:51.823 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 02 80 00 ]
16:05:51.823 -> Set Simulation Grade! --> Grade: 0.0% Response: 245
16:05:53.878 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0A 80 00 ]
16:05:53.878 -> Set Simulation Grade! --> Grade: 0.0% Response: 405
16:05:55.816 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:05:55.816 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 285
16:05:57.758 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1A 80 00 ]
16:05:57.758 -> Set Simulation Grade! --> Grade: 0.1% Response: 904
16:05:59.821 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2D 80 00 ]
16:05:59.821 -> Set Simulation Grade! --> Grade: 0.1% Response: 265
16:06:01.877 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4A 80 00 ]
16:06:01.877 -> Set Simulation Grade! --> Grade: 0.2% Response: 725
16:06:03.917 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 67 80 00 ]
16:06:03.917 -> Set Simulation Grade! --> Grade: 0.3% Response: 685
16:06:05.837 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:05.837 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1165
16:06:07.827 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6B 80 00 ]
16:06:07.828 -> Set Simulation Grade! --> Grade: 0.3% Response: 1285
16:06:09.815 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5D 80 00 ]
16:06:09.851 -> Set Simulation Grade! --> Grade: 0.3% Response: 345
16:06:11.883 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3E 80 00 ]
16:06:11.883 -> Set Simulation Grade! --> Grade: 0.2% Response: 805
16:06:13.847 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0F 80 00 ]
16:06:13.847 -> Set Simulation Grade! --> Grade: 0.0% Response: 626
16:06:15.848 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:15.848 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 544
16:06:17.853 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:06:17.892 -> Set Simulation Grade! --> Grade: -0.0% Response: 706
16:06:19.894 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:19.940 -> Set Simulation Grade! --> Grade: 0.0% Response: 666
16:06:21.919 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:21.919 -> Set Simulation Grade! --> Grade: 0.0% Response: 1088
16:06:23.916 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:06:23.950 -> Set Simulation Grade! --> Grade: -0.0% Response: 346
16:06:25.861 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:25.861 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 126
16:06:27.875 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:27.912 -> Set Simulation Grade! --> Grade: 0.0% Response: 486
16:06:29.959 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:06:29.959 -> Set Simulation Grade! --> Grade: -0.0% Response: 446
16:06:31.925 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:31.925 -> Set Simulation Grade! --> Grade: 0.0% Response: 565
16:06:33.939 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:33.986 -> Set Simulation Grade! --> Grade: 0.0% Response: 525
16:06:35.881 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:35.881 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 606
16:06:37.893 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:37.931 -> Set Simulation Grade! --> Grade: 0.0% Response: 665
16:06:39.933 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:39.969 -> Set Simulation Grade! --> Grade: 0.0% Response: 325
16:06:42.017 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:06:42.017 -> Set Simulation Grade! --> Grade: 0.0% Response: 385
16:06:43.955 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3B 80 00 ]
16:06:43.999 -> Set Simulation Grade! --> Grade: 0.2% Response: 606
16:06:45.904 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:45.904 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 486
16:06:47.916 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 11 80 00 ]
16:06:47.953 -> Set Simulation Grade! --> Grade: 0.1% Response: 546
16:06:49.959 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EA 7F 00 ]
16:06:49.959 -> Set Simulation Grade! --> Grade: -0.1% Response: 107
16:06:51.998 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AF 7F 00 ]
16:06:52.048 -> Set Simulation Grade! --> Grade: -0.2% Response: 567
16:06:54.079 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 51 7F 00 ]
16:06:54.079 -> Set Simulation Grade! --> Grade: -0.5% Response: 227
16:06:55.930 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:06:55.930 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 367
16:06:57.935 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5A 7F 00 ]
16:06:57.982 -> Set Simulation Grade! --> Grade: -0.5% Response: 826
16:06:59.939 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D3 7F 00 ]
16:06:59.939 -> Set Simulation Grade! --> Grade: -0.1% Response: 146
16:07:01.977 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 49 81 00 ]
16:07:01.977 -> Set Simulation Grade! --> Grade: 1.0% Response: 908
16:07:03.995 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 82 00 ]
16:07:04.028 -> Set Simulation Grade! --> Grade: 1.7% Response: 266
16:07:06.058 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 42 82 00 ]
16:07:06.058 -> Set Simulation Grade! --> Grade: 1.8% Response: 627
16:07:08.060 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:07:08.060 -> Set Simulation Grade! --> Grade: 1.2%[ 121]
16:07:08.152 -> >>> Wahoo Trainer is unresponsive!
16:07:09.499 -> Response: 1326
16:07:10.198 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8C 80 00 ]
16:07:10.198 -> Set Simulation Grade! --> Grade: 0.4% Response: 1290
16:07:12.158 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 16 80 00 ]
16:07:12.158 -> Set Simulation Grade! --> Grade: 0.1% Response: 706
16:07:14.219 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F0 7F 00 ]
16:07:14.219 -> Set Simulation Grade! --> Grade: -0.0% Response: 967
16:07:16.177 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E7 7F 00 ]
16:07:16.219 -> Set Simulation Grade! --> Grade: -0.1% Response: 1087
16:07:18.131 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:07:18.131 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 768
16:07:20.075 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:07:20.114 -> Set Simulation Grade! --> Grade: -0.0% Response: 787
16:07:22.114 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:07:22.147 -> Set Simulation Grade! --> Grade: -0.0% Response: 646
16:07:24.179 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:07:24.179 -> Set Simulation Grade! --> Grade: -0.0% Response: 1006
16:07:26.194 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:26.241 -> Set Simulation Grade! --> Grade: 0.0% Response: 469
16:07:28.113 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:07:28.162 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 945
16:07:30.153 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:30.191 -> Set Simulation Grade! --> Grade: 0.0% Response: 1105
16:07:32.193 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:32.242 -> Set Simulation Grade! --> Grade: 0.0% Response: 269
16:07:34.261 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:34.261 -> Set Simulation Grade! --> Grade: 0.0% Response: 1427
16:07:36.314 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:36.314 -> Set Simulation Grade! --> Grade: 0.0% Response: 1486
16:07:38.144 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:07:38.144 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 227
16:07:40.243 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:40.243 -> Set Simulation Grade! --> Grade: 0.0% Response: 428
16:07:42.214 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:42.249 -> Set Simulation Grade! --> Grade: 0.0% Response: 448
16:07:44.255 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:07:44.301 -> Set Simulation Grade! --> Grade: 0.0% Response: 710
16:07:46.318 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D2 7F 00 ]
16:07:46.318 -> Set Simulation Grade! --> Grade: -0.1% Response: 1067
16:07:48.163 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:07:48.163 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 507
16:07:50.206 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F3 82 00 ]
16:07:50.206 -> Set Simulation Grade! --> Grade: 2.3% Response: 468
16:07:52.204 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D0 83 00 ]
16:07:52.204 -> Set Simulation Grade! --> Grade: 3.0% Response: 787
16:07:54.216 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A6 83 00 ]
16:07:54.251 -> Set Simulation Grade! --> Grade: 2.9% Response: 1246
16:07:56.284 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F3 82 00 ]
16:07:56.284 -> Set Simulation Grade! --> Grade: 2.3% Response: 1208
16:07:58.257 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3B 81 00 ]
16:07:58.257 -> Set Simulation Grade! --> Grade: 1.0%[ 120]
16:07:58.398 -> >>> Wahoo Trainer is unresponsive!
16:08:00.355 -> [ 1980]
16:08:00.355 -> >>> Wahoo Trainer is unresponsive!
16:08:00.355 -> Response: 26
16:08:02.374 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BD 7F 00 ]
16:08:02.410 -> Set Simulation Grade! --> Grade: -0.2% Response: 887
16:08:04.445 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:04.445 -> Set Simulation Grade! --> Grade: 0.0% Response: 1046
16:08:06.461 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:06.461 -> Set Simulation Grade! --> Grade: 0.0% Response: 1408
16:08:08.347 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:08:08.347 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1348
16:08:10.381 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:10.381 -> Set Simulation Grade! --> Grade: 0.0% Response: 313
16:08:12.419 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:12.419 -> Set Simulation Grade! --> Grade: 0.0% Response: 470
16:08:14.471 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:14.471 -> Set Simulation Grade! --> Grade: 0.0% Response: 1227
16:08:16.515 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:08:16.515 -> Set Simulation Grade! --> Grade: 0.0% Response: 889
16:08:18.412 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:08:18.412 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 968
16:08:20.411 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E8 7F 00 ]
16:08:20.411 -> Set Simulation Grade! --> Grade: -0.1% Response: 488
16:08:22.444 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2D 80 00 ]
16:08:22.444 -> Set Simulation Grade! --> Grade: 0.1% Response: 1048
16:08:24.492 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 83 81 00 ]
16:08:24.492 -> Set Simulation Grade! --> Grade: 1.2% Response: 1207
16:08:26.493 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B6 82 00 ]
16:08:26.538 -> Set Simulation Grade! --> Grade: 2.1% Response: 368
16:08:28.536 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 82 00 ]
16:08:28.574 -> Set Simulation Grade! --> Grade: 1.7% Response: 128
16:08:30.559 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A5 80 00 ]
16:08:30.560 -> Set Simulation Grade! --> Grade: 0.5%[ 120]
16:08:30.653 -> >>> Wahoo Trainer is unresponsive!
16:08:30.959 -> Response: 328
16:08:32.616 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9B 7F 00 ]
16:08:32.654 -> Set Simulation Grade! --> Grade: -0.3% Response: 648
16:08:34.654 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5A 7F 00 ]
16:08:34.699 -> Set Simulation Grade! --> Grade: -0.5% Response: 308
16:08:36.733 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 45 7F 00 ]
16:08:36.733 -> Set Simulation Grade! --> Grade: -0.6% Response: 768
16:08:38.770 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5D 7F 00 ]
16:08:38.770 -> Set Simulation Grade! --> Grade: -0.5% Response: 728
16:08:40.606 -> [ 1859]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:08:40.606 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1068
16:08:42.693 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A2 80 00 ]
16:08:42.734 -> Set Simulation Grade! --> Grade: 0.5% Response: 669
16:08:44.674 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 76 80 00 ]
16:08:44.711 -> Set Simulation Grade! --> Grade: 0.4% Response: 687
16:08:46.767 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B5 7F 00 ]
16:08:46.767 -> Set Simulation Grade! --> Grade: -0.2%[ 2040]
16:08:48.792 -> >>> Wahoo Trainer is unresponsive!
16:08:49.061 -> Response: 308
16:08:50.684 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:08:50.684 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 389
16:08:52.701 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F5 7E 00 ]
16:08:52.701 -> Set Simulation Grade! --> Grade: -0.8% Response: 909
16:08:54.696 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FB 7E 00 ]
16:08:54.732 -> Set Simulation Grade! --> Grade: -0.8% Response: 469
16:08:56.763 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 27 7F 00 ]
16:08:56.763 -> Set Simulation Grade! --> Grade: -0.7% Response: 829
16:08:58.783 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C1 7F 00 ]
16:08:58.783 -> Set Simulation Grade! --> Grade: -0.2% Response: 889
16:09:00.728 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:09:00.728 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 269
16:09:02.766 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 56 80 00 ]
16:09:02.766 -> Set Simulation Grade! --> Grade: 0.3% Response: 229
16:09:04.747 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 60 80 00 ]
16:09:04.747 -> Set Simulation Grade! --> Grade: 0.3% Response: 649
16:09:06.757 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 09 80 00 ]
16:09:06.794 -> Set Simulation Grade! --> Grade: 0.0% Response: 808
16:09:08.803 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:09:08.803 -> Set Simulation Grade! --> Grade: 0.0% Response: 1069
16:09:13.699 -> [ 4860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:09:13.699 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 709
16:09:15.698 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4A 7F 00 ]
16:09:15.744 -> Set Simulation Grade! --> Grade: -0.6% Response: 869
16:09:17.769 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4A 7F 00 ]
16:09:17.769 -> Set Simulation Grade! --> Grade: -0.6% Response: 528
16:09:28.137 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
16:09:28.137 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:09:28.137 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
16:09:28.137 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
16:09:28.197 -> --> ESP32 Server is advertising again!
16:09:29.693 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!
16:10:07.795 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:10:07.877 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!

13: geen fix met Kickr
16:10:41.311 ->
16:10:41.311 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:10:41.311 -> ------------------------ Version 01.4 --------------------------
16:10:41.311 -> SIM32
16:10:41.523 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:10:41.523 -> SSD1306 OLED display is running...
16:10:48.047 -> Motor Control Task Created and Active!
16:10:48.047 -> Simcline Basic Motor Funtions are working!!
16:10:48.306 -> Configuring the default Generic Access Service
16:10:48.306 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:10:48.352 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:10:48.352 -> Configuring the Server Nordic Uart Service
16:10:48.352 -> Configuring the Server Device Information Service
16:10:48.352 -> Configuring the Server Cycle Power Service
16:10:48.352 -> Configuring the Server Cadence and Speed Service
16:10:48.352 -> Setting up the Server advertising payload(s)
16:10:48.352 -> Setting Appearance in Advertised data to [1152]
16:10:48.352 -> Setting DeviceName in Advertised data to [SIM32]
16:10:48.352 -> Server is advertising: CPS + Wahoo
16:10:48.352 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:11:19.569 -> Found advertising Peripheral with CPS enabled! See data:
16:11:19.569 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:11:19.569 -> Service Data:
16:11:19.569 -> UUID: 0x1826, Data: �
16:11:19.898 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

14: Fix met Kickr gelukt en Volcano Circuit uit gefietst(3e maal). Let op: nu met 2 volledige stops erin!
16:12:02.641 ->
16:12:02.641 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:12:02.641 -> ------------------------ Version 01.4 --------------------------
16:12:02.641 -> SIM32
16:12:02.849 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:12:02.885 -> SSD1306 OLED display is running...
16:12:09.390 -> Motor Control Task Created and Active!
16:12:09.390 -> Simcline Basic Motor Funtions are working!!
16:12:09.647 -> Configuring the default Generic Access Service
16:12:09.647 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:12:09.678 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:12:09.678 -> Configuring the Server Nordic Uart Service
16:12:09.678 -> Configuring the Server Device Information Service
16:12:09.678 -> Configuring the Server Cycle Power Service
16:12:09.678 -> Configuring the Server Cadence and Speed Service
16:12:09.678 -> Setting up the Server advertising payload(s)
16:12:09.678 -> Setting Appearance in Advertised data to [1152]
16:12:09.678 -> Setting DeviceName in Advertised data to [SIM32]
16:12:09.714 -> Server is advertising: CPS + Wahoo
16:12:09.714 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:12:43.499 -> Found advertising Peripheral with CPS enabled! See data:
16:12:43.499 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:12:43.563 -> Service Data:
16:12:43.563 -> UUID: 0x1826, Data: �
16:12:43.878 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:12:43.878 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:12:43.878 -> Now checking all Client Services and Characteristics!
16:12:43.912 -> If Mandatory Services Fail --> the Client will disconnect!
16:12:44.636 -> Client Generic Access: Found!
16:12:45.838 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:12:46.342 -> -> Client Reads Appearance: [0]
16:12:46.910 -> Client Device Information Service: Found!
16:12:47.893 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:12:50.311 -> -> Client Reads Serial Number: [221001365]
16:12:50.926 -> Client_CyclingPower_Service: Found!
16:12:51.859 -> Client_Wahoo_ControlPoint_Chr: Found!
16:12:52.279 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
16:12:52.992 -> Client_CP_Measurement_Chr: Found!
16:12:54.225 -> Client_CP_Feature_Chr: Found!
16:12:54.828 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:12:56.236 -> Client_CP_Location_Chr: Found!
16:12:56.712 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:12:56.778 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 451
16:12:58.455 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:14:16.611 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:14:16.716 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:14:17.804 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
16:14:17.804 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
16:14:17.804 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
16:14:17.943 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
16:14:20.728 -> Found advertising Peripheral with CPS enabled! See data:
16:14:20.728 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:14:20.882 -> Service Data:
16:14:20.882 -> UUID: 0x1826, Data: �
16:14:21.342 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
16:14:21.698 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:14:22.181 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
16:14:22.451 -> [ 0]
16:14:22.451 -> >>> Wahoo Trainer is unresponsive!
16:14:23.131 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:14:23.132 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:14:23.132 -> Now checking all Client Services and Characteristics!
16:14:23.171 -> If Mandatory Services Fail --> the Client will disconnect!
16:14:23.171 -> Client Generic Access: Found!
16:14:23.692 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:14:24.014 -> -> Client Reads Appearance: [0]
16:14:24.014 -> Client Device Information Service: Found!
16:14:24.460 -> [ 2040]
16:14:24.460 -> >>> Wahoo Trainer is unresponsive!
16:14:24.736 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:14:26.520 -> [ 2040] -> Client Reads Serial Number: [221001365]
16:14:27.323 -> Client_CyclingPower_Service: Found!
16:14:27.323 -> Client_Wahoo_ControlPoint_Chr: Found!
16:14:27.323 -> Client_CP_Measurement_Chr: Found!
16:14:27.323 -> Client_CP_Feature_Chr: Found!
16:14:28.115 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:14:28.115 -> Client_CP_Location_Chr: Found!
16:14:28.244 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:14:28.292 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key [ 1980] Response: 738
16:14:30.389 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:14:30.562 -> [ 2040]All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:14:32.560 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 24 82 00 ]
16:14:32.596 -> Set Simulation Grade! --> Grade: 1.7%[ 2040]
16:14:34.632 -> >>> Wahoo Trainer is unresponsive!
16:14:42.756 -> [ 8160]
16:14:42.756 -> >>> Wahoo Trainer is unresponsive!
16:14:44.828 -> [ 2040][ 2040][ 1980][ 2040][ 2040]All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:15:02.731 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:15:02.814 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:15:07.163 -> Found advertising Peripheral with CPS enabled! See data:
16:15:07.163 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:15:07.163 -> Service Data:
16:15:07.163 -> UUID: 0x1826, Data: �
16:15:09.007 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:15:09.007 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:15:09.007 -> Now checking all Client Services and Characteristics!
16:15:09.007 -> If Mandatory Services Fail --> the Client will disconnect!
16:15:09.007 -> Client Generic Access: Found!
16:15:09.289 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:15:09.429 -> -> Client Reads Appearance: [0]
16:15:09.429 -> Client Device Information Service: Found!
16:15:09.562 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:15:11.114 -> -> Client Reads Serial Number: [221001365]
16:15:11.114 -> Client_CyclingPower_Service: Found!
16:15:11.156 -> Client_Wahoo_ControlPoint_Chr: Found!
16:15:11.156 -> Client_CP_Measurement_Chr: Found!
16:15:11.156 -> Client_CP_Feature_Chr: Found!
16:15:11.423 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:15:11.423 -> Client_CP_Location_Chr: Found!
16:15:11.562 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:15:11.641 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 203
16:15:12.487 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:15:12.712 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:15:17.782 -> [ 24840]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 76 81 00 ]
16:15:17.782 -> Set Simulation Grade! --> Grade: 1.1%[ 120]
16:15:17.900 -> >>> Wahoo Trainer is unresponsive!
16:15:18.138 -> Response: 259
16:15:19.907 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:19.939 -> Set Simulation Grade! --> Grade: 0.0% Response: 368
16:15:21.999 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:22.041 -> Set Simulation Grade! --> Grade: 0.0% Response: 168
16:15:23.978 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:24.026 -> Set Simulation Grade! --> Grade: 0.0% Response: 787
16:15:26.019 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:26.053 -> Set Simulation Grade! --> Grade: 0.0% Response: 648
16:15:27.954 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:15:27.954 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 428
16:15:30.023 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:30.023 -> Set Simulation Grade! --> Grade: 0.0% Response: 389
16:15:32.060 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:32.060 -> Set Simulation Grade! --> Grade: 0.0% Response: 547
16:15:34.065 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:34.109 -> Set Simulation Grade! --> Grade: 0.0% Response: 409
16:15:36.123 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:36.123 -> Set Simulation Grade! --> Grade: 0.0% Response: 369
16:15:37.958 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:15:37.998 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 509
16:15:40.039 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:40.039 -> Set Simulation Grade! --> Grade: 0.0% Response: 968
16:15:42.072 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:42.072 -> Set Simulation Grade! --> Grade: 0.0% Response: 529
16:15:44.119 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:44.119 -> Set Simulation Grade! --> Grade: 0.0% Response: 1588
16:15:46.185 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:46.185 -> Set Simulation Grade! --> Grade: 0.0% Response: 1448
16:15:48.053 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:15:48.053 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1329
16:15:50.023 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:50.061 -> Set Simulation Grade! --> Grade: 0.0% Response: 1551
16:15:52.096 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:52.096 -> Set Simulation Grade! --> Grade: 0.0% Response: 308
16:15:54.128 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:54.129 -> Set Simulation Grade! --> Grade: 0.0% Response: 867
16:15:56.146 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:15:56.146 -> Set Simulation Grade! --> Grade: 0.0% Response: 928
16:15:58.034 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:15:58.034 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1668
16:16:00.131 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:00.131 -> Set Simulation Grade! --> Grade: 0.0% Response: 668
16:16:02.140 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:02.185 -> Set Simulation Grade! --> Grade: 0.0% Response: 532
16:16:04.162 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:16:04.162 -> Set Simulation Grade! --> Grade: -0.0% Response: 949
16:16:06.258 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:06.258 -> Set Simulation Grade! --> Grade: 0.0%[ 1860]
16:16:08.079 -> >>> Wahoo Trainer is unresponsive!
16:16:08.175 -> Response: 93
16:16:10.118 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:16:10.155 -> Set Simulation Grade! --> Grade: -0.0% Response: 448
16:16:12.102 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:12.144 -> Set Simulation Grade! --> Grade: 0.0% Response: 770
16:16:14.202 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:14.242 -> Set Simulation Grade! --> Grade: 0.0% Response: 370
16:16:16.185 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2F 80 00 ]
16:16:16.227 -> Set Simulation Grade! --> Grade: 0.1% Response: 689
16:16:18.137 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:16:18.137 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 371
16:16:20.142 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2D 80 00 ]
16:16:20.185 -> Set Simulation Grade! --> Grade: 0.1% Response: 1029
16:16:22.118 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 03 80 00 ]
16:16:22.170 -> Set Simulation Grade! --> Grade: 0.0% Response: 1848
16:16:24.182 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E4 7F 00 ]
16:16:24.182 -> Set Simulation Grade! --> Grade: -0.1% Response: 809
16:16:26.193 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AD 7F 00 ]
16:16:26.193 -> Set Simulation Grade! --> Grade: -0.3% Response: 1829
16:16:28.130 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:16:28.130 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 249
16:16:30.196 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 36 7F 00 ]
16:16:30.196 -> Set Simulation Grade! --> Grade: -0.6% Response: 509
16:16:32.233 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 50 7F 00 ]
16:16:32.233 -> Set Simulation Grade! --> Grade: -0.5%[ 2040]
16:16:34.269 -> >>> Wahoo Trainer is unresponsive!
16:16:34.269 -> Response: 31
16:16:36.325 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 08 81 00 ]
16:16:36.325 -> Set Simulation Grade! --> Grade: 0.8% Response: 1690
16:16:38.201 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:16:38.246 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1170
16:16:40.204 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 53 82 00 ]
16:16:40.204 -> Set Simulation Grade! --> Grade: 1.8% Response: 890
16:16:42.256 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E4 81 00 ]
16:16:42.256 -> Set Simulation Grade! --> Grade: 1.5% Response: 550
16:16:44.294 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D0 80 00 ]
16:16:44.294 -> Set Simulation Grade! --> Grade: 0.6% Response: 310
16:16:46.304 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3C 80 00 ]
16:16:46.304 -> Set Simulation Grade! --> Grade: 0.2% Response: 970
16:16:48.256 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:16:48.256 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 350
16:16:50.233 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EB 7F 00 ]
16:16:50.233 -> Set Simulation Grade! --> Grade: -0.1% Response: 570
16:16:52.244 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E8 7F 00 ]
16:16:52.275 -> Set Simulation Grade! --> Grade: -0.1% Response: 630
16:16:54.279 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7F 00 ]
16:16:54.322 -> Set Simulation Grade! --> Grade: -0.0% Response: 590
16:16:56.368 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:16:56.368 -> Set Simulation Grade! --> Grade: 0.0% Response: 849
16:16:58.280 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:16:58.280 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 630
16:17:00.280 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:00.327 -> Set Simulation Grade! --> Grade: 0.0% Response: 389
16:17:02.299 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:17:02.299 -> Set Simulation Grade! --> Grade: -0.0% Response: 510
16:17:04.302 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:04.348 -> Set Simulation Grade! --> Grade: 0.0% Response: 369
16:17:06.382 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:06.382 -> Set Simulation Grade! --> Grade: 0.0% Response: 430
16:17:08.353 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:17:08.353 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 349
16:17:10.325 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:10.325 -> Set Simulation Grade! --> Grade: 0.0% Response: 470
16:17:12.346 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:12.346 -> Set Simulation Grade! --> Grade: 0.0% Response: 730
16:17:14.322 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:14.359 -> Set Simulation Grade! --> Grade: 0.0% Response: 451
16:17:16.361 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:16.407 -> Set Simulation Grade! --> Grade: 0.0% Response: 311
16:17:18.374 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:17:18.374 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 431
16:17:20.407 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:20.407 -> Set Simulation Grade! --> Grade: 0.0% Response: 792
16:17:22.394 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:17:22.394 -> Set Simulation Grade! --> Grade: -0.0% Response: 411
16:17:24.442 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:17:24.442 -> Set Simulation Grade! --> Grade: -0.0% Response: 770
16:17:26.440 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B0 7F 00 ]
16:17:26.476 -> Set Simulation Grade! --> Grade: -0.2% Response: 731
16:17:28.390 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:17:28.390 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1610
16:17:30.345 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9C 83 00 ]
16:17:30.345 -> Set Simulation Grade! --> Grade: 2.8% Response: 631
16:17:32.411 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CF 83 00 ]
16:17:32.411 -> Set Simulation Grade! --> Grade: 3.0% Response: 792
16:17:34.449 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 83 00 ]
16:17:34.449 -> Set Simulation Grade! --> Grade: 2.8% Response: 851
16:17:36.398 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: ED 82 00 ]
16:17:36.432 -> Set Simulation Grade! --> Grade: 2.3% Response: 171
16:17:38.455 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 71 81 00 ]
16:17:38.455 -> Set Simulation Grade! --> Grade: 1.1%[ 121]
16:17:38.587 -> >>> Wahoo Trainer is unresponsive!
16:17:39.194 -> Response: 609
16:17:40.525 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:17:40.525 -> Set Simulation Grade! --> Grade: -0.0% Response: 1091
16:17:42.557 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B6 7F 00 ]
16:17:42.558 -> Set Simulation Grade! --> Grade: -0.2% Response: 751
16:17:44.601 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E8 7F 00 ]
16:17:44.601 -> Set Simulation Grade! --> Grade: -0.1% Response: 411
16:17:46.633 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:17:46.633 -> Set Simulation Grade! --> Grade: -0.0% Response: 471
16:17:48.520 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:17:48.554 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 450
16:17:50.588 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:50.588 -> Set Simulation Grade! --> Grade: 0.0% Response: 511
16:17:52.539 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:17:52.572 -> Set Simulation Grade! --> Grade: -0.0% Response: 132
16:17:54.611 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:54.611 -> Set Simulation Grade! --> Grade: 0.0% Response: 492
16:17:56.559 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:17:56.597 -> Set Simulation Grade! --> Grade: 0.0% Response: 212
16:17:58.541 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:17:58.586 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 532
16:18:00.617 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E7 7F 00 ]
16:18:00.617 -> Set Simulation Grade! --> Grade: -0.1% Response: 592
16:18:02.620 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EC 7F 00 ]
16:18:02.667 -> Set Simulation Grade! --> Grade: -0.1% Response: 852
16:18:04.599 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 46 80 00 ]
16:18:04.641 -> Set Simulation Grade! --> Grade: 0.2% Response: 272
16:18:06.652 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AE 81 00 ]
16:18:06.652 -> Set Simulation Grade! --> Grade: 1.3% Response: 632
16:18:08.560 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:08.600 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 212
16:18:10.619 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6F 82 00 ]
16:18:10.619 -> Set Simulation Grade! --> Grade: 1.9% Response: 471
16:18:12.683 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3A 81 00 ]
16:18:12.683 -> Set Simulation Grade! --> Grade: 1.0% Response: 933
16:18:14.704 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CD 7F 00 ]
16:18:14.704 -> Set Simulation Grade! --> Grade: -0.2% Response: 492
16:18:16.690 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 7F 00 ]
16:18:16.690 -> Set Simulation Grade! --> Grade: -0.4% Response: 312
16:18:18.624 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:18.624 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 692
16:18:20.628 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4A 7F 00 ]
16:18:20.628 -> Set Simulation Grade! --> Grade: -0.6% Response: 452
16:18:22.603 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A6 7F 00 ]
16:18:22.645 -> Set Simulation Grade! --> Grade: -0.3% Response: 771
16:18:24.742 -> [ 2101]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A0 80 00 ]
16:18:24.742 -> Set Simulation Grade! --> Grade: 0.5% Response: 970
16:18:26.779 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 80 00 ]
16:18:26.779 -> Set Simulation Grade! --> Grade: 0.2% Response: 331
16:18:28.601 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:28.650 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 471
16:18:30.645 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7E 00 ]
16:18:30.645 -> Set Simulation Grade! --> Grade: -0.8% Response: 133
16:18:32.722 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F5 7E 00 ]
16:18:32.722 -> Set Simulation Grade! --> Grade: -0.8% Response: 493
16:18:34.720 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0A 7F 00 ]
16:18:34.757 -> Set Simulation Grade! --> Grade: -0.7% Response: 453
16:18:36.760 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A8 7F 00 ]
16:18:36.806 -> Set Simulation Grade! --> Grade: -0.3% Response: 411
16:18:38.654 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:38.654 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 351
16:18:40.608 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5F 80 00 ]
16:18:40.608 -> Set Simulation Grade! --> Grade: 0.3% Response: 1072
16:18:42.654 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 36 80 00 ]
16:18:42.654 -> Set Simulation Grade! --> Grade: 0.2% Response: 531
16:18:44.681 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:44.722 -> Set Simulation Grade! --> Grade: 0.0% Response: 291
16:18:46.763 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:46.763 -> Set Simulation Grade! --> Grade: 0.0% Response: 252
16:18:48.642 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:48.683 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 230
16:18:50.688 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:50.688 -> Set Simulation Grade! --> Grade: 0.0% Response: 290
16:18:52.804 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:52.804 -> Set Simulation Grade! --> Grade: 0.0% Response: 291
16:18:54.794 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:54.794 -> Set Simulation Grade! --> Grade: 0.0% Response: 212
16:18:56.802 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:18:56.839 -> Set Simulation Grade! --> Grade: 0.0% Response: 572
16:18:58.764 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:18:58.764 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 751
16:19:00.798 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:19:00.798 -> Set Simulation Grade! --> Grade: 0.0% Response: 613
16:19:02.742 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:19:02.785 -> Set Simulation Grade! --> Grade: 0.0% Response: 1033
16:19:04.788 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:19:04.788 -> Set Simulation Grade! --> Grade: 0.0% Response: 194
16:19:06.786 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:19:06.786 -> Set Simulation Grade! --> Grade: -0.0% Response: 412
16:19:08.743 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:08.775 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 732
16:19:10.826 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 80 00 ]
16:19:10.826 -> Set Simulation Grade! --> Grade: 0.4% Response: 695
16:19:12.826 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0A 80 00 ]
16:19:12.826 -> Set Simulation Grade! --> Grade: 0.0% Response: 255
16:19:14.912 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 98 7F 00 ]
16:19:14.912 -> Set Simulation Grade! --> Grade: -0.3% Response: 912
16:19:16.943 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D1 7E 00 ]
16:19:16.943 -> Set Simulation Grade! --> Grade: -0.9% Response: 673
16:19:18.793 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:18.793 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1113
16:19:20.824 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 97 7E 00 ]
16:19:20.824 -> Set Simulation Grade! --> Grade: -1.1% Response: 375
16:19:22.795 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D6 7E 00 ]
16:19:22.795 -> Set Simulation Grade! --> Grade: -0.9% Response: 1591
16:19:24.833 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 15 7F 00 ]
16:19:24.833 -> Set Simulation Grade! --> Grade: -0.7% Response: 253
16:19:26.802 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 34 7F 00 ]
16:19:26.843 -> Set Simulation Grade! --> Grade: -0.6% Response: 470
16:19:28.884 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:28.884 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 531
16:19:30.880 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B4 7F 00 ]
16:19:30.928 -> Set Simulation Grade! --> Grade: -0.2% Response: 193
16:19:32.944 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B4 80 00 ]
16:19:32.944 -> Set Simulation Grade! --> Grade: 0.6% Response: 351
16:19:34.966 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:19:34.966 -> Set Simulation Grade! --> Grade: 0.0% Response: 313
16:19:37.001 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:19:37.043 -> Set Simulation Grade! --> Grade: -0.0% Response: 372
16:19:38.892 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:38.892 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 711
16:19:40.927 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:19:40.927 -> Set Simulation Grade! --> Grade: 0.0% Response: 572
16:19:42.887 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:19:42.887 -> Set Simulation Grade! --> Grade: -0.0% Response: 892
16:19:44.921 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:19:44.963 -> Set Simulation Grade! --> Grade: -0.0% Response: 554
16:19:46.965 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7F 00 ]
16:19:46.965 -> Set Simulation Grade! --> Grade: -0.0% Response: 214
16:19:48.881 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:48.922 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 591
16:19:50.995 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:19:50.995 -> Set Simulation Grade! --> Grade: -0.0% Response: 194
16:19:53.020 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
16:19:53.062 -> Set Simulation Grade! --> Grade: -0.0% Response: 154
16:19:55.098 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:19:55.098 -> Set Simulation Grade! --> Grade: -0.0% Response: 214
16:19:57.102 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:19:57.136 -> Set Simulation Grade! --> Grade: -0.0% Response: 772
16:19:58.906 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:19:58.906 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 376
16:20:00.966 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:00.966 -> Set Simulation Grade! --> Grade: 0.0% Response: 334
16:20:02.985 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:02.985 -> Set Simulation Grade! --> Grade: 0.0% Response: 893
16:20:05.113 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:20:05.113 -> Set Simulation Grade! --> Grade: 0.0% Response: 292
16:20:07.083 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:07.083 -> Set Simulation Grade! --> Grade: 0.0% Response: 217
16:20:08.964 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:20:08.964 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 352
16:20:10.997 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:20:10.997 -> Set Simulation Grade! --> Grade: -0.0% Response: 412
16:20:13.006 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:20:13.006 -> Set Simulation Grade! --> Grade: -0.0% Response: 374
16:20:14.992 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:14.992 -> Set Simulation Grade! --> Grade: 0.0% Response: 394
16:20:17.061 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:17.061 -> Set Simulation Grade! --> Grade: 0.0% Response: 155
16:20:18.982 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:20:18.982 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 633
16:20:20.985 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:20.985 -> Set Simulation Grade! --> Grade: 0.0% Response: 795
16:20:23.059 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:23.059 -> Set Simulation Grade! --> Grade: 0.0% Response: 753
16:20:25.106 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:25.106 -> Set Simulation Grade! --> Grade: 0.0% Response: 713
16:20:27.139 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:27.139 -> Set Simulation Grade! --> Grade: 0.0% Response: 1373
16:20:29.032 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:20:29.032 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 255
16:20:31.063 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:31.107 -> Set Simulation Grade! --> Grade: 0.0% Response: 815
16:20:33.141 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:33.141 -> Set Simulation Grade! --> Grade: 0.0% Response: 473
16:20:35.148 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:20:35.195 -> Set Simulation Grade! --> Grade: 0.0% Response: 335
16:20:37.122 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:20:37.169 -> Set Simulation Grade! --> Grade: 0.0% Response: 953
16:20:39.040 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:20:39.073 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 635
16:20:41.128 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0E 81 00 ]
16:20:41.128 -> Set Simulation Grade! --> Grade: 0.8% Response: 495
16:20:43.121 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 84 00 ]
16:20:43.155 -> Set Simulation Grade! --> Grade: 3.3% Response: 353
16:20:45.102 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 55 83 00 ]
16:20:45.139 -> Set Simulation Grade! --> Grade: 2.6% Response: 375
16:20:47.227 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 34 83 00 ]
16:20:47.227 -> Set Simulation Grade! --> Grade: 2.5% Response: 575
16:20:49.249 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 82 00 ]
16:20:49.249 -> Set Simulation Grade! --> Grade: 2.3% Response: 533
16:20:51.372 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BF 82 00 ]
16:20:51.372 -> Set Simulation Grade! --> Grade: 2.1% Response: 1434
16:20:53.335 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B2 82 00 ]
16:20:53.378 -> Set Simulation Grade! --> Grade: 2.1% Response: 1057
16:20:55.385 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C1 82 00 ]
16:20:55.385 -> Set Simulation Grade! --> Grade: 2.2% Response: 413
16:20:57.400 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 05 83 00 ]
16:20:57.433 -> Set Simulation Grade! --> Grade: 2.4% Response: 173
16:20:59.468 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 59 83 00 ]
16:20:59.468 -> Set Simulation Grade! --> Grade: 2.6% Response: 335
16:21:01.528 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 17 81 00 ]
16:21:01.528 -> Set Simulation Grade! --> Grade: 0.9%[ 120]
16:21:01.602 -> >>> Wahoo Trainer is unresponsive!
16:21:02.617 -> Response: 977
16:21:03.641 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 73 80 00 ]
16:21:03.683 -> Set Simulation Grade! --> Grade: 0.4% Response: 234
16:21:05.627 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 44 80 00 ]
16:21:05.627 -> Set Simulation Grade! --> Grade: 0.2% Response: 856
16:21:07.660 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5B 80 00 ]
16:21:07.706 -> Set Simulation Grade! --> Grade: 0.3% Response: 515
16:21:09.727 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 20 80 00 ]
16:21:09.727 -> Set Simulation Grade! --> Grade: 0.1% Response: 475
16:21:11.622 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:21:11.665 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 256
16:21:13.664 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FC 7F 00 ]
16:21:13.697 -> Set Simulation Grade! --> Grade: -0.0% Response: 415
16:21:15.684 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
16:21:15.684 -> Set Simulation Grade! --> Grade: -0.0% Response: 1036
16:21:17.765 -> [ 2101]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
16:21:17.765 -> Set Simulation Grade! --> Grade: -0.0% Response: 234
16:21:19.785 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FA 7F 00 ]
16:21:19.819 -> Set Simulation Grade! --> Grade: -0.0% Response: 695
16:21:21.648 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:21:21.648 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 635
16:21:23.713 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 07 80 00 ]
16:21:23.713 -> Set Simulation Grade! --> Grade: 0.0% Response: 1595
16:21:25.765 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 05 80 00 ]
16:21:25.765 -> Set Simulation Grade! --> Grade: 0.0% Response: 355
16:21:27.778 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:21:27.778 -> Set Simulation Grade! --> Grade: -0.0% Response: 413
16:21:29.801 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E2 7F 00 ]
16:21:29.835 -> Set Simulation Grade! --> Grade: -0.1% Response: 674
16:21:31.697 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:21:31.697 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1515
16:21:33.805 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 97 7F 00 ]
16:21:33.805 -> Set Simulation Grade! --> Grade: -0.3% Response: 1315
16:21:35.801 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 68 82 00 ]
16:21:35.843 -> Set Simulation Grade! --> Grade: 1.9% Response: 579
16:21:37.783 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F3 82 00 ]
16:21:37.830 -> Set Simulation Grade! --> Grade: 2.3% Response: 197
16:21:39.913 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F1 82 00 ]
16:21:39.913 -> Set Simulation Grade! --> Grade: 2.3% Response: 799
16:21:41.947 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A8 82 00 ]
16:21:41.947 -> Set Simulation Grade! --> Grade: 2.1% Response: 256
16:21:44.056 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BF 81 00 ]
16:21:44.056 -> Set Simulation Grade! --> Grade: 1.4%[ 120]
16:21:44.139 -> >>> Wahoo Trainer is unresponsive!
16:21:44.401 -> Response: 234
16:21:46.136 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0F 80 00 ]
16:21:46.136 -> Set Simulation Grade! --> Grade: 0.0% Response: 1055
16:21:48.162 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BA 7F 00 ]
16:21:48.202 -> Set Simulation Grade! --> Grade: -0.2% Response: 1015
16:21:50.207 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2F 80 00 ]
16:21:50.207 -> Set Simulation Grade! --> Grade: 0.1% Response: 474
16:21:52.283 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 56 80 00 ]
16:21:52.283 -> Set Simulation Grade! --> Grade: 0.3% Response: 636
16:21:54.129 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:21:54.129 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 773
16:21:56.127 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:21:56.127 -> Set Simulation Grade! --> Grade: -0.0% Response: 594
16:21:58.157 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AB 7F 00 ]
16:21:58.157 -> Set Simulation Grade! --> Grade: -0.3% Response: 556
16:22:00.202 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D3 7E 00 ]
16:22:00.202 -> Set Simulation Grade! --> Grade: -0.9% Response: 616
16:22:02.235 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BE 7E 00 ]
16:22:02.235 -> Set Simulation Grade! --> Grade: -1.0% Response: 774
16:22:04.163 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:04.163 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 954
16:22:06.202 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 15 80 00 ]
16:22:06.202 -> Set Simulation Grade! --> Grade: 0.1% Response: 1015
16:22:08.188 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6C 80 00 ]
16:22:08.188 -> Set Simulation Grade! --> Grade: 0.3% Response: 637
16:22:10.207 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:22:10.207 -> Set Simulation Grade! --> Grade: 0.0%[ 1980]
16:22:12.191 -> >>> Wahoo Trainer is unresponsive!
16:22:12.191 -> Response: 16
16:22:14.179 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:14.179 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 637
16:22:16.232 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 04 80 00 ]
16:22:16.232 -> Set Simulation Grade! --> Grade: 0.0% Response: 595
16:22:18.251 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:22:18.251 -> Set Simulation Grade! --> Grade: -0.0% Response: 956
16:22:20.277 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
16:22:20.277 -> Set Simulation Grade! --> Grade: -0.0% Response: 317
16:22:22.397 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F4 7F 00 ]
16:22:22.397 -> Set Simulation Grade! --> Grade: -0.0% Response: 1117
16:22:24.191 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:24.191 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 517
16:22:26.241 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7F 00 ]
16:22:26.241 -> Set Simulation Grade! --> Grade: -0.0% Response: 577
16:22:28.183 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:22:28.229 -> Set Simulation Grade! --> Grade: -0.0% Response: 696
16:22:30.252 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FD 7F 00 ]
16:22:30.252 -> Set Simulation Grade! --> Grade: -0.0% Response: 655
16:22:32.295 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 10 80 00 ]
16:22:32.295 -> Set Simulation Grade! --> Grade: 0.1% Response: 1315
16:22:34.247 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:34.292 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 337
16:22:36.220 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 80 00 ]
16:22:36.255 -> Set Simulation Grade! --> Grade: 0.1% Response: 957
16:22:38.268 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 25 80 00 ]
16:22:38.268 -> Set Simulation Grade! --> Grade: 0.1% Response: 1416
16:22:40.257 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1D 80 00 ]
16:22:40.257 -> Set Simulation Grade! --> Grade: 0.1% Response: 437
16:22:42.282 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 04 80 00 ]
16:22:42.328 -> Set Simulation Grade! --> Grade: 0.0% Response: 397
16:22:44.235 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:44.235 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1177
16:22:46.241 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:22:46.288 -> Set Simulation Grade! --> Grade: -0.0% Response: 236
16:22:48.281 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:22:48.316 -> Set Simulation Grade! --> Grade: -0.0% Response: 798
16:22:50.365 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:22:50.365 -> Set Simulation Grade! --> Grade: -0.0% Response: 158
16:22:52.349 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:22:52.349 -> Set Simulation Grade! --> Grade: -0.0% Response: 476
16:22:54.316 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:22:54.316 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 198
16:22:56.350 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:22:56.350 -> Set Simulation Grade! --> Grade: -0.0% Response: 258
16:22:58.362 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:22:58.401 -> Set Simulation Grade! --> Grade: -0.0% Response: 415
16:23:00.405 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:23:00.450 -> Set Simulation Grade! --> Grade: -0.0% Response: 476
16:23:02.473 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 01 80 00 ]
16:23:02.473 -> Set Simulation Grade! --> Grade: 0.0% Response: 438
16:23:04.331 -> [ 1861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:04.331 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 277
16:23:06.370 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 12 80 00 ]
16:23:06.370 -> Set Simulation Grade! --> Grade: 0.1% Response: 234
16:23:08.384 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 80 00 ]
16:23:08.420 -> Set Simulation Grade! --> Grade: 0.1% Response: 498
16:23:10.482 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 30 80 00 ]
16:23:10.516 -> Set Simulation Grade! --> Grade: 0.1% Response: 597
16:23:12.522 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4E 80 00 ]
16:23:12.574 -> Set Simulation Grade! --> Grade: 0.2% Response: 758
16:23:14.412 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:14.412 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 597
16:23:16.463 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6F 80 00 ]
16:23:16.463 -> Set Simulation Grade! --> Grade: 0.3% Response: 558
16:23:18.464 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6B 80 00 ]
16:23:18.497 -> Set Simulation Grade! --> Grade: 0.3% Response: 518
16:23:20.505 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 61 80 00 ]
16:23:20.545 -> Set Simulation Grade! --> Grade: 0.3% Response: 177
16:23:22.542 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4E 80 00 ]
16:23:22.583 -> Set Simulation Grade! --> Grade: 0.2% Response: 536
16:23:24.352 -> [ 1800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:24.352 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 537
16:23:26.443 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 11 80 00 ]
16:23:26.476 -> Set Simulation Grade! --> Grade: 0.1% Response: 439
16:23:28.481 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FE 7F 00 ]
16:23:28.523 -> Set Simulation Grade! --> Grade: -0.0% Response: 398
16:23:30.523 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7F 00 ]
16:23:30.570 -> Set Simulation Grade! --> Grade: -0.0% Response: 756
16:23:32.503 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F8 7F 00 ]
16:23:32.541 -> Set Simulation Grade! --> Grade: -0.0% Response: 278
16:23:34.451 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:34.451 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 458
16:23:36.491 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:36.491 -> Set Simulation Grade! --> Grade: 0.0% Response: 415
16:23:38.503 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:38.541 -> Set Simulation Grade! --> Grade: 0.0% Response: 777
16:23:40.566 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:40.566 -> Set Simulation Grade! --> Grade: 0.0% Response: 837
16:23:42.585 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:23:42.630 -> Set Simulation Grade! --> Grade: -0.0% Response: 700
16:23:44.505 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:44.540 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 578
16:23:46.542 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:46.589 -> Set Simulation Grade! --> Grade: 0.0% Response: 439
16:23:48.540 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:48.540 -> Set Simulation Grade! --> Grade: 0.0% Response: 1159
16:23:50.563 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:50.602 -> Set Simulation Grade! --> Grade: 0.0% Response: 417
16:23:52.606 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:52.653 -> Set Simulation Grade! --> Grade: 0.0% Response: 1076
16:23:54.465 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:23:54.499 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 218
16:23:56.562 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:23:56.599 -> Set Simulation Grade! --> Grade: 0.0% Response: 218
16:23:58.582 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:23:58.582 -> Set Simulation Grade! --> Grade: -0.0% Response: 237
16:24:00.564 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:00.564 -> Set Simulation Grade! --> Grade: 0.0% Response: 861
16:24:02.648 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:02.648 -> Set Simulation Grade! --> Grade: 0.0% Response: 559
16:24:04.526 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:24:04.526 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1299
16:24:06.523 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:06.557 -> Set Simulation Grade! --> Grade: 0.0% Response: 1258
16:24:08.503 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:08.543 -> Set Simulation Grade! --> Grade: 0.0% Response: 377
16:24:10.628 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:10.628 -> Set Simulation Grade! --> Grade: 0.0% Response: 1579
16:24:12.588 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:12.588 -> Set Simulation Grade! --> Grade: 0.0% Response: 597
16:24:14.603 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:24:14.603 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
16:24:16.602 -> >>> Wahoo Trainer is unresponsive!
16:24:18.672 -> [ 2040]
16:24:18.672 -> >>> Wahoo Trainer is unresponsive!
16:24:20.621 -> [ 1980][ 2100][ 1860] Response: 1797
16:24:26.657 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:26.657 -> Set Simulation Grade! --> Grade: 0.0%[ 2040]
16:24:28.662 -> >>> Wahoo Trainer is unresponsive!
16:24:30.738 -> [ 2040]
16:24:30.738 -> >>> Wahoo Trainer is unresponsive!
16:24:32.679 -> [ 1980]>>> Error: Failed to write characteristic -> Return Code = 0x06
16:24:34.382 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:24:34.514 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:24:37.662 -> Found advertising Peripheral with CPS enabled! See data:
16:24:37.662 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:24:37.662 -> Service Data:
16:24:37.662 -> UUID: 0x1826, Data: �
16:24:42.355 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:24:42.355 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:24:42.355 -> Now checking all Client Services and Characteristics!
16:24:42.355 -> If Mandatory Services Fail --> the Client will disconnect!
16:24:42.355 -> Client Generic Access: Found!
16:24:43.529 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:24:43.811 -> -> Client Reads Appearance: [0]
16:24:43.811 -> Client Device Information Service: Found!
16:24:44.128 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:24:47.860 -> -> Client Reads Serial Number: [221001365]
16:24:47.860 -> Client_CyclingPower_Service: Found!
16:24:47.860 -> Client_Wahoo_ControlPoint_Chr: Found!
16:24:47.860 -> Client_CP_Measurement_Chr: Found!
16:24:47.860 -> Client_CP_Feature_Chr: Found!
16:24:48.563 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:24:48.563 -> Client_CP_Location_Chr: Found!
16:24:49.096 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:24:49.134 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 203
16:24:49.358 -> [ 16680]client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:24:51.221 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:24:51.441 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:51.441 -> Set Simulation Grade! --> Grade: 0.0% Response: 280
16:24:53.384 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:53.428 -> Set Simulation Grade! --> Grade: 0.0% Response: 1198
16:24:55.449 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:24:55.449 -> Set Simulation Grade! --> Grade: 0.0% Response: 460
16:24:57.490 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:24:57.490 -> Set Simulation Grade! --> Grade: -0.0% Response: 819
16:24:59.424 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:24:59.424 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 400
16:25:01.365 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:25:01.410 -> Set Simulation Grade! --> Grade: -0.0% Response: 1119
16:25:03.441 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:25:03.441 -> Set Simulation Grade! --> Grade: 0.0% Response: 1077
16:25:05.444 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:25:05.492 -> Set Simulation Grade! --> Grade: 0.0% Response: 743
16:25:07.483 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 80 00 ]
16:25:07.529 -> Set Simulation Grade! --> Grade: 0.1% Response: 703
16:25:09.403 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:09.441 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 1980]
16:25:11.428 -> >>> Wahoo Trainer is unresponsive!
16:25:12.279 -> Response: 899
16:25:13.466 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1D 80 00 ]
16:25:13.466 -> Set Simulation Grade! --> Grade: 0.1% Response: 1059
16:25:15.498 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7F 00 ]
16:25:15.498 -> Set Simulation Grade! --> Grade: -0.0% Response: 520
16:25:17.503 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: D1 7F 00 ]
16:25:17.549 -> Set Simulation Grade! --> Grade: -0.1% Response: 679
16:25:19.425 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:19.458 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 658
16:25:21.463 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 40 7F 00 ]
16:25:21.506 -> Set Simulation Grade! --> Grade: -0.6% Response: 119
16:25:23.537 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3B 7F 00 ]
16:25:23.537 -> Set Simulation Grade! --> Grade: -0.6%[ 2099]
16:25:25.641 -> >>> Wahoo Trainer is unresponsive!
16:25:27.603 -> [ 1980]
16:25:27.603 -> >>> Wahoo Trainer is unresponsive!
16:25:27.901 -> Response: 299
16:25:29.503 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:29.543 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
16:25:31.577 -> >>> Wahoo Trainer is unresponsive!
16:25:32.411 -> Response: 839
16:25:33.550 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 34 82 00 ]
16:25:33.550 -> Set Simulation Grade! --> Grade: 1.7% Response: 958
16:25:35.587 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 7A 81 00 ]
16:25:35.587 -> Set Simulation Grade! --> Grade: 1.2% Response: 1319
16:25:37.627 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8F 80 00 ]
16:25:37.627 -> Set Simulation Grade! --> Grade: 0.4% Response: 1079
16:25:39.503 -> [ 1861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:39.503 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
16:25:41.538 -> >>> Wahoo Trainer is unresponsive!
16:25:41.919 -> Response: 379
16:25:43.531 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EA 7F 00 ]
16:25:43.531 -> Set Simulation Grade! --> Grade: -0.1% Response: 2000
16:25:45.525 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E7 7F 00 ]
16:25:45.572 -> Set Simulation Grade! --> Grade: -0.1% Response: 1360
16:25:47.503 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: EF 7F 00 ]
16:25:47.542 -> Set Simulation Grade! --> Grade: -0.1% Response: 1378
16:25:49.512 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:49.512 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 598
16:25:51.563 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:25:51.563 -> Set Simulation Grade! --> Grade: 0.0% Response: 561
16:25:53.599 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:25:53.599 -> Set Simulation Grade! --> Grade: 0.0%[ 2040]
16:25:55.630 -> >>> Wahoo Trainer is unresponsive!
16:25:56.208 -> Response: 579
16:25:57.678 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:25:57.678 -> Set Simulation Grade! --> Grade: 0.0% Response: 641
16:25:59.537 -> [ 1859]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:25:59.537 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2041]
16:26:01.574 -> >>> Wahoo Trainer is unresponsive!
16:26:02.480 -> Response: 940
16:26:03.646 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:03.691 -> Set Simulation Grade! --> Grade: 0.0% Response: 441
16:26:05.649 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:26:05.649 -> Set Simulation Grade! --> Grade: -0.0% Response: 459
16:26:07.705 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:07.705 -> Set Simulation Grade! --> Grade: 0.0% Response: 621
16:26:09.649 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:26:09.650 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1841
16:26:11.668 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:11.668 -> Set Simulation Grade! --> Grade: 0.0% Response: 1361
16:26:13.682 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:13.682 -> Set Simulation Grade! --> Grade: 0.0% Response: 1620
16:26:15.732 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:15.732 -> Set Simulation Grade! --> Grade: 0.0% Response: 580
16:26:17.744 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:26:17.779 -> Set Simulation Grade! --> Grade: -0.0% Response: 841
16:26:19.645 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:26:19.645 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1579
16:26:21.646 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:21.679 -> Set Simulation Grade! --> Grade: 0.0% Response: 941
16:26:23.743 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:26:23.777 -> Set Simulation Grade! --> Grade: 0.0%[ 1980]
16:26:25.750 -> >>> Wahoo Trainer is unresponsive!
16:26:27.705 -> [ 1980]
16:26:27.705 -> >>> Wahoo Trainer is unresponsive!
16:26:29.623 -> [ 1920][ 2040]>>> Error: Failed to write characteristic -> Return Code = 0x06
16:26:34.417 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:26:34.578 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:27:39.666 -> Found advertising Peripheral with CPS enabled! See data:
16:27:39.666 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:27:39.666 -> Service Data:
16:27:39.666 -> UUID: 0x1826, Data: �
16:27:49.542 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:27:49.542 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:27:49.642 -> Now checking all Client Services and Characteristics!
16:27:49.642 -> If Mandatory Services Fail --> the Client will disconnect!
16:27:49.642 -> Client Generic Access: Found!
16:27:50.147 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:27:50.962 -> -> Client Reads Appearance: [0]
16:27:50.963 -> Client Device Information Service: Found!
16:27:51.748 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:27:53.531 -> -> Client Reads Serial Number: [221001365]
16:27:53.531 -> Client_CyclingPower_Service: Found!
16:27:53.531 -> Client_Wahoo_ControlPoint_Chr: Found!
16:27:53.531 -> Client_CP_Measurement_Chr: Found!
16:27:53.531 -> Client_CP_Feature_Chr: Found!
16:27:53.656 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:27:53.656 -> Client_CP_Location_Chr: Found!
16:27:54.535 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:27:54.630 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key [ 83161] Response: 162
16:27:55.960 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:27:56.818 -> [ 1980]All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:27:58.885 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: CF 83 00 ]
16:27:58.885 -> Set Simulation Grade! --> Grade: 3.0% Response: 392
16:28:00.947 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C5 83 00 ]
16:28:00.981 -> Set Simulation Grade! --> Grade: 2.9% Response: 1041
16:28:02.950 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AE 83 00 ]
16:28:02.950 -> Set Simulation Grade! --> Grade: 2.9% Response: 661
16:28:04.969 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 7D 83 00 ]
16:28:04.969 -> Set Simulation Grade! --> Grade: 2.7% Response: 222
16:28:07.006 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 22 83 00 ]
16:28:07.052 -> Set Simulation Grade! --> Grade: 2.4% Response: 184
16:28:09.147 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 17 82 00 ]
16:28:09.147 -> Set Simulation Grade! --> Grade: 1.6% Response: 582
16:28:11.060 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5A 80 00 ]
16:28:11.060 -> Set Simulation Grade! --> Grade: 0.3% Response: 162
16:28:11.250 -> [ 180]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:11.250 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 482
16:28:13.278 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B6 7F 00 ]
16:28:13.278 -> Set Simulation Grade! --> Grade: -0.2% Response: 1343
16:28:15.168 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:28:15.200 -> Set Simulation Grade! --> Grade: 0.0% Response: 921
16:28:17.264 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:28:17.309 -> Set Simulation Grade! --> Grade: 0.0% Response: 222
16:28:19.252 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:28:19.252 -> Set Simulation Grade! --> Grade: 0.0% Response: 441
16:28:21.203 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:21.204 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 422
16:28:23.204 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:28:23.237 -> Set Simulation Grade! --> Grade: 0.0% Response: 1082
16:28:25.336 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:28:25.336 -> Set Simulation Grade! --> Grade: 0.0% Response: 1982
16:28:27.351 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F0 7F 00 ]
16:28:27.351 -> Set Simulation Grade! --> Grade: -0.0% Response: 340
16:28:29.359 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E7 7F 00 ]
16:28:29.359 -> Set Simulation Grade! --> Grade: -0.1% Response: 1763
16:28:31.245 -> [ 1921]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:31.283 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 540
16:28:33.225 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C0 81 00 ]
16:28:33.268 -> Set Simulation Grade! --> Grade: 1.4% Response: 163
16:28:35.207 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B8 82 00 ]
16:28:35.259 -> Set Simulation Grade! --> Grade: 2.1% Response: 882
16:28:37.289 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: B4 81 00 ]
16:28:37.289 -> Set Simulation Grade! --> Grade: 1.3% Response: 740
16:28:39.369 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: DC 7F 00 ]
16:28:39.369 -> Set Simulation Grade! --> Grade: -0.1% Response: 1043
16:28:41.230 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:41.230 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 683
16:28:43.245 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 48 7F 00 ]
16:28:43.286 -> Set Simulation Grade! --> Grade: -0.6% Response: 1544
16:28:45.373 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 50 7F 00 ]
16:28:45.373 -> Set Simulation Grade! --> Grade: -0.5% Response: 1145
16:28:47.273 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: C0 7F 00 ]
16:28:47.273 -> Set Simulation Grade! --> Grade: -0.2% Response: 1623
16:28:49.346 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9C 80 00 ]
16:28:49.346 -> Set Simulation Grade! --> Grade: 0.5%[ 2040]
16:28:51.376 -> >>> Wahoo Trainer is unresponsive!
16:28:52.505 -> Response: 1142
16:28:53.293 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: A6 7F 00 ]
16:28:53.293 -> Set Simulation Grade! --> Grade: -0.3%[ 2040]
16:28:55.324 -> >>> Wahoo Trainer is unresponsive!
16:28:56.623 -> Response: 1286
16:28:57.351 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F9 7E 00 ]
16:28:57.351 -> Set Simulation Grade! --> Grade: -0.8% Response: 643
16:28:59.366 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F6 7E 00 ]
16:28:59.366 -> Set Simulation Grade! --> Grade: -0.8% Response: 964
16:29:01.305 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:01.342 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2039]
16:29:03.373 -> >>> Wahoo Trainer is unresponsive!
16:29:04.408 -> Response: 1043
16:29:05.326 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: F2 7F 00 ]
16:29:05.363 -> Set Simulation Grade! --> Grade: -0.0% Response: 566
16:29:07.396 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 46 80 00 ]
16:29:07.396 -> Set Simulation Grade! --> Grade: 0.2%[ 2041]
16:29:09.431 -> >>> Wahoo Trainer is unresponsive!
16:29:10.221 -> Response: 781
16:29:11.323 -> [ 1919]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:11.359 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 364
16:29:13.365 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:13.409 -> Set Simulation Grade! --> Grade: 0.0% Response: 1024
16:29:15.412 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:15.412 -> Set Simulation Grade! --> Grade: 0.0% Response: 1084
16:29:17.475 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:17.475 -> Set Simulation Grade! --> Grade: 0.0%[ 2100]
16:29:19.546 -> >>> Wahoo Trainer is unresponsive!
16:29:20.102 -> Response: 542
16:29:21.432 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:21.432 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2041]
16:29:23.466 -> >>> Wahoo Trainer is unresponsive!
16:29:23.607 -> Response: 145
16:29:25.578 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:25.578 -> Set Simulation Grade! --> Grade: 0.0% Response: 645
16:29:27.554 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:29:27.554 -> Set Simulation Grade! --> Grade: -0.0% Response: 364
16:29:29.572 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:29.572 -> Set Simulation Grade! --> Grade: 0.0% Response: 224
16:29:31.379 -> [ 1801]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:31.379 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1825
16:29:33.461 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 00 80 00 ]
16:29:33.461 -> Set Simulation Grade! --> Grade: 0.0%[ 2040]
16:29:35.444 -> >>> Wahoo Trainer is unresponsive!
16:29:36.184 -> Response: 743
16:29:37.549 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:29:37.595 -> Set Simulation Grade! --> Grade: -0.0%[ 1980]
16:29:39.548 -> >>> Wahoo Trainer is unresponsive!
16:29:42.187 -> >>> Error: Failed to write characteristic -> Return Code = 0x06
16:29:42.187 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:29:42.373 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:30:09.415 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
16:30:09.415 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:30:09.415 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
16:30:09.486 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
16:30:09.486 -> --> ESP32 Server is advertising again!

15: Geen fix met Kickr
16:30:40.789 ->
16:30:40.789 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:30:40.789 -> ------------------------ Version 01.4 --------------------------
16:30:40.789 -> SIM32
16:30:41.021 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:30:41.021 -> SSD1306 OLED display is running...
16:30:47.545 -> Motor Control Task Created and Active!
16:30:47.545 -> Simcline Basic Motor Funtions are working!!
16:30:47.790 -> Configuring the default Generic Access Service
16:30:47.790 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:30:47.790 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:30:47.790 -> Configuring the Server Nordic Uart Service
16:30:47.790 -> Configuring the Server Device Information Service
16:30:47.819 -> Configuring the Server Cycle Power Service
16:30:47.819 -> Configuring the Server Cadence and Speed Service
16:30:47.819 -> Setting up the Server advertising payload(s)
16:30:47.819 -> Setting Appearance in Advertised data to [1152]
16:30:47.819 -> Setting DeviceName in Advertised data to [SIM32]
16:30:47.819 -> Server is advertising: CPS + Wahoo
16:30:47.819 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:53:27.764 -> Found advertising Peripheral with CPS enabled! See data:
16:53:27.764 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:53:27.818 -> Service Data:
16:53:27.818 -> UUID: 0x1826, Data: �
16:53:30.596 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

16: Geen fix met Kickr
16:54:13.708 ->
16:54:13.708 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:54:13.708 -> ------------------------ Version 01.4 --------------------------
16:54:13.708 -> SIM32
16:54:13.895 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:54:13.939 -> SSD1306 OLED display is running...
16:54:20.457 -> Motor Control Task Created and Active!
16:54:20.457 -> Simcline Basic Motor Funtions are working!!
16:54:20.711 -> Configuring the default Generic Access Service
16:54:20.711 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:54:20.711 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:54:20.711 -> Configuring the Server Nordic Uart Service
16:54:20.711 -> Configuring the Server Device Information Service
16:54:20.711 -> Configuring the Server Cycle Power Service
16:54:20.749 -> Configuring the Server Cadence and Speed Service
16:54:20.749 -> Setting up the Server advertising payload(s)
16:54:20.749 -> Setting Appearance in Advertised data to [1152]
16:54:20.749 -> Setting DeviceName in Advertised data to [SIM32]
16:54:20.749 -> Server is advertising: CPS + Wahoo
16:54:20.749 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:54:29.112 -> Found advertising Peripheral with CPS enabled! See data:
16:54:29.112 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:54:29.184 -> Service Data:
16:54:29.184 -> UUID: 0x1826, Data: �
16:54:29.504 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

17: Motor check faalt
16:55:43.826 ->
16:55:43.826 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:55:43.826 -> ------------------------ Version 01.4 --------------------------
16:55:43.826 -> SIM32
16:55:44.040 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:55:44.040 -> SSD1306 OLED display is running...
16:55:48.839 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
16:55:49.068 -> Configuring the default Generic Access Service
16:55:49.068 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:55:49.101 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:55:49.101 -> Configuring the Server Nordic Uart Service
16:55:49.101 -> Configuring the Server Device Information Service
16:55:49.101 -> Configuring the Server Cycle Power Service
16:55:49.101 -> Configuring the Server Cadence and Speed Service
16:55:49.101 -> Setting up the Server advertising payload(s)
16:55:49.101 -> Setting Appearance in Advertised data to [1152]
16:55:49.134 -> Setting DeviceName in Advertised data to [SIM32]
16:55:49.134 -> Server is advertising: CPS + Wahoo
16:55:49.134 -> Client Starts Scanning for Server Device with CPS + Wahoo!

18: Geen fix met Kickr
16:56:12.214 ->
16:56:12.214 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:56:12.214 -> ------------------------ Version 01.4 --------------------------
16:56:12.214 -> SIM32
16:56:12.399 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:56:12.436 -> SSD1306 OLED display is running...
16:56:18.945 -> Motor Control Task Created and Active!
16:56:18.945 -> Simcline Basic Motor Funtions are working!!
16:56:19.220 -> Configuring the default Generic Access Service
16:56:19.220 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:56:19.220 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:56:19.220 -> Configuring the Server Nordic Uart Service
16:56:19.220 -> Configuring the Server Device Information Service
16:56:19.220 -> Configuring the Server Cycle Power Service
16:56:19.267 -> Configuring the Server Cadence and Speed Service
16:56:19.267 -> Setting up the Server advertising payload(s)
16:56:19.267 -> Setting Appearance in Advertised data to [1152]
16:56:19.267 -> Setting DeviceName in Advertised data to [SIM32]
16:56:19.267 -> Server is advertising: CPS + Wahoo
16:56:19.267 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:56:35.676 -> Found advertising Peripheral with CPS enabled! See data:
16:56:35.676 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:56:35.676 -> Service Data:
16:56:35.676 -> UUID: 0x1826, Data: �
16:56:37.641 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:56:37.641 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:56:37.641 -> Now checking all Client Services and Characteristics!
16:56:37.641 -> If Mandatory Services Fail --> the Client will disconnect!
16:56:38.082 -> Client Generic Access: Found!
16:56:38.950 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:56:39.692 -> -> Client Reads Appearance: [0]
16:56:43.893 -> Device Information Service: NOT Found!
16:56:43.893 -> Mandatory Cycling Power Service: Not Found!
16:56:43.893 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:56:43.893 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

19: Geen fix met Kickr
16:57:33.219 ->
16:57:33.219 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:57:33.219 -> ------------------------ Version 01.4 --------------------------
16:57:33.219 -> SIM32
16:57:33.431 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:57:33.477 -> SSD1306 OLED display is running...
16:57:39.978 -> Motor Control Task Created and Active!
16:57:39.978 -> Simcline Basic Motor Funtions are working!!
16:57:40.244 -> Configuring the default Generic Access Service
16:57:40.244 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:57:40.244 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:57:40.244 -> Configuring the Server Nordic Uart Service
16:57:40.244 -> Configuring the Server Device Information Service
16:57:40.244 -> Configuring the Server Cycle Power Service
16:57:40.279 -> Configuring the Server Cadence and Speed Service
16:57:40.279 -> Setting up the Server advertising payload(s)
16:57:40.279 -> Setting Appearance in Advertised data to [1152]
16:57:40.279 -> Setting DeviceName in Advertised data to [SIM32]
16:57:40.279 -> Server is advertising: CPS + Wahoo
16:57:40.279 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:57:55.442 -> Found advertising Peripheral with CPS enabled! See data:
16:57:55.442 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:57:55.442 -> Service Data:
16:57:55.442 -> UUID: 0x1826, Data: �
16:57:56.177 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:57:56.177 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:57:56.177 -> Now checking all Client Services and Characteristics!
16:57:56.177 -> If Mandatory Services Fail --> the Client will disconnect!
16:57:56.876 -> Client Generic Access: Found!
16:58:03.309 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:58:05.858 -> Device Information Service: NOT Found!
16:58:05.858 -> Mandatory Cycling Power Service: Not Found!
16:58:05.894 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:58:05.894 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

20: Geen fix mnet Kickr
16:59:05.707 ->
16:59:05.707 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:59:05.742 -> ------------------------ Version 01.4 --------------------------
16:59:05.742 -> SIM32
16:59:05.953 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:59:05.953 -> SSD1306 OLED display is running...
16:59:12.485 -> Motor Control Task Created and Active!
16:59:12.485 -> Simcline Basic Motor Funtions are working!!
16:59:12.754 -> Configuring the default Generic Access Service
16:59:12.754 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:59:12.754 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:59:12.754 -> Configuring the Server Nordic Uart Service
16:59:12.754 -> Configuring the Server Device Information Service
16:59:12.754 -> Configuring the Server Cycle Power Service
16:59:12.754 -> Configuring the Server Cadence and Speed Service
16:59:12.786 -> Setting up the Server advertising payload(s)
16:59:12.786 -> Setting Appearance in Advertised data to [1152]
16:59:12.786 -> Setting DeviceName in Advertised data to [SIM32]
16:59:12.786 -> Server is advertising: CPS + Wahoo
16:59:12.786 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:59:21.104 -> Found advertising Peripheral with CPS enabled! See data:
16:59:21.104 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:59:21.104 -> Service Data:
16:59:21.104 -> UUID: 0x1826, Data: �
16:59:22.010 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:59:22.039 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:59:22.039 -> Now checking all Client Services and Characteristics!
16:59:22.039 -> If Mandatory Services Fail --> the Client will disconnect!
16:59:23.261 -> Client Generic Access: Found!
16:59:24.675 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:59:27.028 -> -> Client Reads Appearance: [0]
16:59:30.698 -> Client Device Information Service: Found!
16:59:45.689 -> Mandatory Cycling Power Service: Not Found!
16:59:45.689 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:59:45.689 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

@Berg0162
Copy link
Owner

Berg0162 commented Dec 7, 2024

Beste Jan-Willem,
Het is duidelijk dat de eerste Simcline BLE connect (Client-Wahoo) nog steeds een probleem vormt....
Laten we even een stapje terug doen. Ooit heb je getest of het ESP32 board en de Wahoo trainer met elkaar over weg konden, daartoe heb je esp32_Wahoo_Client_v010.ino gebruikt. Ik nodig je uit dat opnieuw te doen. Het is heel belangrijk dat Zwift niet actief is, het liefst blijft de PC/Laptop met Zwift bij de volgende test helemaal uit!
Volg de instructies van esp32_Wahoo_Client_v010:

 *  Requirements: Wahoo trainer and an ESP32 board
 *  1) Upload and Run this code on ESP32 board
 *  2) Start the Serial Monitor to catch verbose debugging and data info
 *  3) Power ON/Wake UP trainer -> do NOT connect with other devices
 *  4) Trainer and ESP32 board should successfully pair or disconnect...
 *  5) Keep the Serial Monitor visible on top of all windows 

NB Er hoeft niet gefietst te worden, we zijn alleen geinteresseerd in connect'ie wel of connect'ie niet.

Zet de trainer uit (Power OFF), reset de Simcline (ESP32 board) en daarna zet je de trainer weer aan (Power ON)...
Connect'ie wel of connect'ie niet?
Je kunt dit een paar keer herhalen om te zien of het resultaat verandert, maar wel steeds in dezelfde volgorde!
Ik ben heel benieuwd!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 7, 2024

Hoi Jörgen,

Een middagje testwerk achter de rug. Een hoop data om de verbinding van Sim Client 010 code te te analyseren. Uiteindelijk kreeg ik met eerst KickR aanzetten en dan pas Sim een betrouwbare methode voor succes. Dat gaf aanleiding voor het laden van V14 code en kijken of die methode daarin ook werkte (Eerst Kickr aan en wachten op een fix om daarna de laptop te starten en te controleren of de fix in Zwift ook zou gaan lukken. Daarom in het volgende comment een uitdraai van die pogingen.

Succes met de analyse.

Vg JW

1e connect poging met trappen en weerstand testen (gelukt)
14:53:13.253 ->
14:53:13.253 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
14:53:13.253 -> ------------------------ Version 01.0 ------------------------
14:53:13.253 -> SIM32
14:53:13.695 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
14:53:13.868 -> BLE Advertised Device found: Name: , Address: 07:fe:ec:45:3b:76, manufacturer data: 060001092022dc137c628e9b9a4444e2752e49441c04c3fecac5781e48
14:53:14.131 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
14:53:14.131 -> Service Data:
14:53:14.131 -> UUID: 0x1826, Data: �
14:53:17.167 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
14:53:17.203 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
14:53:17.203 -> Now checking all Client Services and Characteristics!
14:53:17.203 -> If Mandatory Services Fail --> the Client will disconnect!
14:53:17.514 -> Client Generic Access: Found!
14:53:18.198 -> -> Client Reads Device Name: [KICKR CORE 287D]
14:53:18.564 -> -> Client Reads Appearance: [0]
14:53:18.838 -> Client Device Information Service: Found!
14:53:19.365 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
14:53:20.736 -> -> Client Reads Serial Number: [221001365]
14:53:20.964 -> Client_CyclingPower_Service: Found!
14:53:21.533 -> Client_Wahoo_ControlPoint_Chr: Found!
14:53:22.152 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
14:53:22.152 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
14:53:22.371 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
14:53:22.371 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
14:53:22.528 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
14:53:23.014 -> Client_CP_Measurement_Chr: Found!
14:53:24.034 -> Client_CP_Feature_Chr: Found!
14:53:24.153 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
14:53:24.888 -> Client_CP_Location_Chr: Found!
14:53:25.003 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
14:53:25.069 -> Cycling Power Measurement: Notify Enabled!
14:53:25.295 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
14:53:28.301 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
14:53:28.647 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
14:53:31.632 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
14:53:32.950 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
14:53:35.936 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
14:53:36.817 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
14:53:39.246 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
14:53:39.635 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
14:53:42.633 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
14:53:43.352 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
14:53:46.317 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
14:53:46.551 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
14:53:49.517 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
14:53:50.716 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
14:53:53.433 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
14:53:54.148 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
14:53:57.134 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
14:53:57.317 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]
14:54:00.317 -> Client sends to Wahoo Control Point: [ 46 CC 8C ] --> set Grade: 10.00%
14:54:00.763 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
14:54:00.763 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 CC 8C ]
14:54:01.018 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
14:54:03.818 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
14:54:04.263 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
14:54:07.249 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
14:54:07.518 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
14:54:10.530 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
14:54:11.518 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
14:54:14.554 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
14:54:15.546 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
14:54:18.217 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
14:54:19.034 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
14:54:22.051 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
14:54:22.349 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
14:54:25.318 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
14:54:25.752 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
14:54:28.747 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
14:54:30.818 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
14:54:32.046 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
14:54:35.418 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]
14:54:38.438 -> Client sends to Wahoo Control Point: [ 46 CC 8C ] --> set Grade: 10.00%
14:54:38.738 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
14:54:38.738 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 CC 8C ]

2e poging - alles uit, Sim starten en daarna Kickr. Trappen en weerstand test (gelukt)
14:59:51.576 ->
14:59:51.576 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
14:59:51.576 -> ------------------------ Version 01.0 ------------------------
14:59:51.576 -> SIM32
14:59:52.060 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
14:59:52.251 -> BLE Advertised Device found: Name: , Address: 04:6a:cf:4a:57:fc, manufacturer data: 060001092022f09b390546f70c46f3b1b9555d04dd2beb60c3505768d3
15:00:00.140 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:00:00.141 -> Service Data:
15:00:00.141 -> UUID: 0x1826, Data: �
15:00:00.442 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:00:00.442 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:00:00.476 -> Now checking all Client Services and Characteristics!
15:00:00.476 -> If Mandatory Services Fail --> the Client will disconnect!
15:00:00.808 -> Client Generic Access: Found!
15:00:01.263 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:00:01.779 -> -> Client Reads Appearance: [0]
15:00:02.064 -> Client Device Information Service: Found!
15:00:03.007 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:00:04.294 -> -> Client Reads Serial Number: [221001365]
15:00:04.629 -> Client_CyclingPower_Service: Found!
15:00:05.409 -> Client_Wahoo_ControlPoint_Chr: Found!
15:00:05.943 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:00:05.943 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:00:06.052 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:00:06.132 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:00:06.242 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:00:06.691 -> Client_CP_Measurement_Chr: Found!
15:00:07.709 -> Client_CP_Feature_Chr: Found!
15:00:07.824 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:00:08.712 -> Client_CP_Location_Chr: Found!
15:00:08.781 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:00:09.011 -> Cycling Power Measurement: Notify Enabled!
15:00:09.246 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:00:12.259 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:00:13.462 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:00:16.444 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:00:17.651 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:00:20.645 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:00:21.259 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:00:24.159 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:00:24.976 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:00:27.961 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:00:28.263 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
15:00:31.245 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
15:00:32.432 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
15:00:35.462 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
15:00:35.945 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
15:00:38.947 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
15:00:39.166 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
15:00:42.132 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
15:00:44.243 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]
15:00:47.275 -> Client sends to Wahoo Control Point: [ 46 CC 8C ] --> set Grade: 10.00%
15:00:47.774 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:00:47.774 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 CC 8C ]
15:00:53.362 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:00:54.061 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]

3e poging, alles uit eerst Sim starten en daarna Kickr. Trappen en weerstand getest (OK).
15:03:27.079 ->
15:03:27.079 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:03:27.079 -> ------------------------ Version 01.0 ------------------------
15:03:27.079 -> SIM32
15:03:27.558 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:03:27.630 -> BLE Advertised Device found: Name: , Address: 04:6a:cf:4a:57:fc, manufacturer data: 060001092022f09b390546f70c46f3b1b9555d04dd2beb60c3505768d3
15:03:32.960 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:03:32.960 -> Service Data:
15:03:32.960 -> UUID: 0x1826, Data: �
15:03:36.176 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:03:36.176 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:03:36.176 -> Now checking all Client Services and Characteristics!
15:03:36.176 -> If Mandatory Services Fail --> the Client will disconnect!
15:03:36.391 -> Client Generic Access: Found!
15:03:36.943 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:03:37.432 -> -> Client Reads Appearance: [0]
15:03:37.758 -> Client Device Information Service: Found!
15:03:38.563 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:03:39.461 -> -> Client Reads Serial Number: [221001365]
15:03:39.873 -> Client_CyclingPower_Service: Found!
15:03:40.997 -> Client_Wahoo_ControlPoint_Chr: Found!
15:03:41.540 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:03:41.540 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:03:41.761 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:03:41.862 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:03:41.961 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:03:42.859 -> Client_CP_Measurement_Chr: Found!
15:03:44.732 -> Client_CP_Feature_Chr: Found!
15:03:44.936 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:03:45.873 -> Client_CP_Location_Chr: Found!
15:03:46.512 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:03:47.307 -> Cycling Power Measurement: Notify Enabled!
15:03:48.310 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:03:51.323 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:03:52.109 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:03:54.692 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:03:55.294 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:03:58.289 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:03:58.727 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:04:01.708 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:04:01.907 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:04:04.911 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:04:05.105 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
15:04:08.087 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
15:04:08.426 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
15:04:11.394 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
15:04:11.796 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
15:04:14.792 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
15:04:15.310 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
15:04:17.984 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
15:04:18.526 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]
15:04:21.204 -> Client sends to Wahoo Control Point: [ 46 CC 8C ] --> set Grade: 10.00%
15:04:21.784 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:04:21.823 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 CC 8C ]
15:04:22.015 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:04:24.907 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:04:25.094 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:04:28.085 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:04:28.506 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]

4e poging: Alles uit, eerst Sim starten en daarna Kickr. GEEN fix
15:07:25.702 ->
15:07:25.702 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:07:25.702 -> ------------------------ Version 01.0 ------------------------
15:07:25.702 -> SIM32
15:07:26.145 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:07:26.341 -> BLE Advertised Device found: Name: , Address: 06:bd:8f:fe:a6:41, manufacturer data: 06000109202273f8070d3e4207cf835ab2475486a86a63356d0fd804fa
15:08:08.060 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:08:08.101 -> Service Data:
15:08:08.101 -> UUID: 0x1826, Data: �
15:08:08.471 -> Now checking all Client Services and Characteristics!
15:08:08.471 -> If Mandatory Services Fail --> the Client will disconnect!
15:08:08.471 -> Client Generic Access: NOT Found!
15:08:08.471 -> Device Information Service: NOT Found!
15:08:08.471 -> Mandatory Cycling Power Service: Not Found!

**5e poging: Alles uit, eerst Sim starten en daarna Kickr.
15:12:03.816 ->
15:12:03.816 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:12:03.817 -> ------------------------ Version 01.0 ------------------------
15:12:03.817 -> SIM32
15:12:04.293 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:12:12.866 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:12:12.866 -> Service Data:
15:12:12.866 -> UUID: 0x1826, Data: �
15:12:13.221 -> Now checking all Client Services and Characteristics!
15:12:13.221 -> If Mandatory Services Fail --> the Client will disconnect!
15:12:13.221 -> Client Generic Access: NOT Found!
15:12:13.221 -> Device Information Service: NOT Found!
15:12:13.221 -> Mandatory Cycling Power Service: Not Found!

Geen fix, aleen Kickr reset maar dat gaf geen resultaat, daarna alleen Sim reset en toen een fix
15:12:03.816 ->
15:12:03.816 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:12:03.817 -> ------------------------ Version 01.0 ------------------------
15:12:03.817 -> SIM32
15:12:04.293 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:12:12.866 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:12:12.866 -> Service Data:
15:12:12.866 -> UUID: 0x1826, Data: �
15:12:13.221 -> Now checking all Client Services and Characteristics!
15:12:13.221 -> If Mandatory Services Fail --> the Client will disconnect!
15:12:13.221 -> Client Generic Access: NOT Found!
15:12:13.221 -> Device Information Service: NOT Found!
15:12:13.221 -> Mandatory Cycling Power Service: Not Found!
15:15:10.705 ->
15:15:10.705 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:15:10.737 -> ------------------------ Version 01.0 ------------------------
15:15:10.737 -> SIM32
15:15:11.194 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:15:12.622 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:15:12.622 -> Service Data:
15:15:12.622 -> UUID: 0x1826, Data: �
15:15:20.765 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:15:20.765 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:15:20.765 -> Now checking all Client Services and Characteristics!
15:15:20.765 -> If Mandatory Services Fail --> the Client will disconnect!
15:15:21.029 -> Client Generic Access: Found!
15:15:21.395 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:15:21.733 -> -> Client Reads Appearance: [0]
15:15:21.998 -> Client Device Information Service: Found!
15:15:22.316 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:15:23.547 -> -> Client Reads Serial Number: [221001365]
15:15:23.746 -> Client_CyclingPower_Service: Found!
15:15:24.169 -> Client_Wahoo_ControlPoint_Chr: Found!
15:15:25.918 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:15:25.918 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:15:26.231 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:15:26.378 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:15:26.749 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:15:28.846 -> Client_CP_Measurement_Chr: Found!
15:15:30.697 -> Client_CP_Feature_Chr: Found!
15:15:31.350 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:15:34.049 -> Client_CP_Location_Chr: Found!
15:15:34.785 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:15:34.978 -> Cycling Power Measurement: Notify Enabled!
15:15:35.865 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:15:38.848 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:15:39.396 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:15:42.379 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:15:42.679 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:15:45.668 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:15:45.859 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:15:48.896 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:15:49.284 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:15:52.279 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:15:52.550 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
15:15:55.549 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
15:15:55.768 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
15:15:58.779 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
15:15:59.479 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
15:16:02.481 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
15:16:02.677 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
15:16:05.648 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
15:16:06.181 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]

6e poging, Kickr aan laten staan, Alleen Sim reset en meteen een fix
15:18:21.915 ->
15:18:21.915 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:18:21.915 -> ------------------------ Version 01.0 ------------------------
15:18:21.915 -> SIM32
15:18:22.356 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:18:22.664 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:18:22.664 -> Service Data:
15:18:22.664 -> UUID: 0x1826, Data: �
15:18:26.614 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:18:26.614 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:18:26.614 -> Now checking all Client Services and Characteristics!
15:18:26.614 -> If Mandatory Services Fail --> the Client will disconnect!
15:18:26.843 -> Client Generic Access: Found!
15:18:27.293 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:18:28.276 -> -> Client Reads Appearance: [0]
15:18:28.595 -> Client Device Information Service: Found!
15:18:28.895 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:18:30.164 -> -> Client Reads Serial Number: [221001365]
15:18:30.400 -> Client_CyclingPower_Service: Found!
15:18:30.948 -> Client_Wahoo_ControlPoint_Chr: Found!
15:18:31.561 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:18:31.561 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:18:31.659 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:18:31.732 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:18:31.858 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:18:32.450 -> Client_CP_Measurement_Chr: Found!
15:18:33.410 -> Client_CP_Feature_Chr: Found!
15:18:33.493 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:18:34.193 -> Client_CP_Location_Chr: Found!
15:18:34.309 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:18:34.426 -> Cycling Power Measurement: Notify Enabled!
15:18:34.710 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:18:37.700 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:18:38.011 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:18:41.009 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:18:41.479 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:18:44.391 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:18:44.626 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]

7e poging, Alles uit, eerst Kickr aan en daarna Sim. Succes
15:21:19.462 ->
15:21:19.462 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:21:19.495 -> ------------------------ Version 01.0 ------------------------
15:21:19.495 -> SIM32
15:21:19.975 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:21:20.123 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:21:20.156 -> Service Data:
15:21:20.156 -> UUID: 0x1826, Data: �
15:21:20.857 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:21:20.857 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:21:20.891 -> Now checking all Client Services and Characteristics!
15:21:20.891 -> If Mandatory Services Fail --> the Client will disconnect!
15:21:21.526 -> Client Generic Access: Found!
15:21:22.257 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:21:23.126 -> -> Client Reads Appearance: [0]
15:21:23.365 -> Client Device Information Service: Found!
15:21:24.051 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:21:26.034 -> -> Client Reads Serial Number: [221001365]
15:21:26.262 -> Client_CyclingPower_Service: Found!
15:21:27.208 -> Client_Wahoo_ControlPoint_Chr: Found!
15:21:27.842 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:21:27.842 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:21:28.088 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:21:28.088 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:21:28.391 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:21:28.849 -> Client_CP_Measurement_Chr: Found!
15:21:29.777 -> Client_CP_Feature_Chr: Found!
15:21:29.861 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:21:30.263 -> Client_CP_Location_Chr: Found!
15:21:30.521 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:21:30.777 -> Cycling Power Measurement: Notify Enabled!
15:21:31.360 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:21:34.393 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:21:34.789 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:21:37.769 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:21:38.194 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:21:41.162 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:21:41.553 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:21:44.590 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:21:45.290 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:21:48.053 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:21:48.393 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
15:21:51.359 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
15:21:52.288 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]
15:21:54.861 -> Client sends to Wahoo Control Point: [ 46 F5 88 ] --> set Grade: 7.00%
15:21:55.277 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 F5 88 ]
15:21:58.254 -> Client sends to Wahoo Control Point: [ 46 3C 8A ] --> set Grade: 8.00%
15:21:58.559 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 3C 8A ]
15:22:01.596 -> Client sends to Wahoo Control Point: [ 46 84 8B ] --> set Grade: 9.00%
15:22:02.580 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 84 8B ]

8e poging. Alles uit, eerst Kickr aan en daarna Sim.Weer succes!
15:24:52.024 ->
15:24:52.024 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:24:52.024 -> ------------------------ Version 01.0 ------------------------
15:24:52.024 -> SIM32
15:24:52.504 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:24:52.643 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:24:52.643 -> Service Data:
15:24:52.643 -> UUID: 0x1826, Data: �
15:25:04.260 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:25:04.260 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:25:04.303 -> Now checking all Client Services and Characteristics!
15:25:04.303 -> If Mandatory Services Fail --> the Client will disconnect!
15:25:04.573 -> Client Generic Access: Found!
15:25:05.021 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:25:05.599 -> -> Client Reads Appearance: [0]
15:25:06.139 -> Client Device Information Service: Found!
15:25:06.579 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:25:07.760 -> -> Client Reads Serial Number: [221001365]
15:25:08.058 -> Client_CyclingPower_Service: Found!
15:25:08.811 -> Client_Wahoo_ControlPoint_Chr: Found!
15:25:09.310 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:25:09.310 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:25:09.437 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:25:09.521 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:25:09.776 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:25:10.679 -> Client_CP_Measurement_Chr: Found!
15:25:11.758 -> Client_CP_Feature_Chr: Found!
15:25:12.211 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:25:12.998 -> Client_CP_Location_Chr: Found!
15:25:13.109 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:25:13.441 -> Cycling Power Measurement: Notify Enabled!
15:25:13.751 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:25:16.764 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:25:17.451 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:25:20.257 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:25:20.952 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:25:23.951 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:25:24.489 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:25:27.475 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:25:27.791 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:25:30.791 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:25:31.189 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]
15:25:34.156 -> Client sends to Wahoo Control Point: [ 46 AD 87 ] --> set Grade: 6.00%
15:25:34.691 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 AD 87 ]

9e poging. Eerst Kickr aan en daarna Sim. Weer Succes!
15:28:20.340 ->
15:28:20.340 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:28:20.340 -> ------------------------ Version 01.0 ------------------------
15:28:20.340 -> SIM32
15:28:20.806 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:28:22.597 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:28:22.635 -> Service Data:
15:28:22.635 -> UUID: 0x1826, Data: �
15:28:23.021 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:28:23.021 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:28:23.059 -> Now checking all Client Services and Characteristics!
15:28:23.059 -> If Mandatory Services Fail --> the Client will disconnect!
15:28:23.464 -> Client Generic Access: Found!
15:28:24.287 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:28:25.123 -> -> Client Reads Appearance: [0]
15:28:25.414 -> Client Device Information Service: Found!
15:28:26.115 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:28:27.988 -> -> Client Reads Serial Number: [221001365]
15:28:28.513 -> Client_CyclingPower_Service: Found!
15:28:29.572 -> Client_Wahoo_ControlPoint_Chr: Found!
15:28:30.405 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:28:30.405 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:28:30.639 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:28:30.716 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:28:31.167 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:28:32.232 -> Client_CP_Measurement_Chr: Found!
15:28:35.063 -> Client_CP_Feature_Chr: Found!
15:28:36.105 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:28:38.787 -> Client_CP_Location_Chr: Found!
15:28:39.300 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:28:39.772 -> Cycling Power Measurement: Notify Enabled!
15:28:41.604 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:28:44.588 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:28:45.367 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:28:48.368 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:28:48.686 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:28:51.689 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:28:52.368 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:28:55.388 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:28:56.088 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]

**10e poging. Eerst Kickr aan en daarna Sim. **
15:31:01.965 ->
15:31:01.965 -> ESP32 BLE Wahoo Client/Central: CPS + Wahoo and CSC (optional)
15:31:01.965 -> ------------------------ Version 01.0 ------------------------
15:31:01.965 -> SIM32
15:31:02.435 -> Client Starts Scanning for Server Device (Wahoo) with CPS!
15:31:02.548 -> BLE Advertised Device found: Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:31:02.548 -> Service Data:
15:31:02.548 -> UUID: 0x1826, Data: �
15:31:03.242 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:31:03.242 -> ESP32 Client connected to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] MTU: [72]
15:31:03.277 -> Now checking all Client Services and Characteristics!
15:31:03.277 -> If Mandatory Services Fail --> the Client will disconnect!
15:31:03.532 -> Client Generic Access: Found!
15:31:04.320 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:31:05.035 -> -> Client Reads Appearance: [0]
15:31:05.354 -> Client Device Information Service: Found!
15:31:06.007 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:31:07.868 -> -> Client Reads Serial Number: [221001365]
15:31:08.151 -> Client_CyclingPower_Service: Found!
15:31:09.054 -> Client_Wahoo_ControlPoint_Chr: Found!
15:31:09.715 -> Client_Wahoo_ControlPoint_Chr: Indicate Enabled!
15:31:09.715 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key
15:31:10.002 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 20 02 ]
15:31:10.116 -> Client sends to Wahoo Control Point: [ 43 20 1C 04 00 70 01 ] --> set Weight: 72.0 RRC: 0.004000 WRC: 0.368000
15:31:10.667 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 43 01 00 ]
15:31:11.254 -> Client_CP_Measurement_Chr: Found!
15:31:12.496 -> Client_CP_Feature_Chr: Found!
15:31:12.645 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:31:13.249 -> Client_CP_Location_Chr: Found!
15:31:14.090 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:31:14.403 -> Cycling Power Measurement: Notify Enabled!
15:31:15.319 -> Client_CyclingSpeedCadence_Service: Not Found -> Not Mandatory!
15:31:18.280 -> Client sends to Wahoo Control Point: [ 46 47 81 ] --> set Grade: 1.00%
15:31:18.780 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 47 81 ]
15:31:21.780 -> Client sends to Wahoo Control Point: [ 46 8E 82 ] --> set Grade: 2.00%
15:31:22.185 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 8E 82 ]
15:31:25.087 -> Client sends to Wahoo Control Point: [ 46 D6 83 ] --> set Grade: 3.00%
15:31:25.401 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 D6 83 ]
15:31:28.407 -> Client sends to Wahoo Control Point: [ 46 1E 85 ] --> set Grade: 4.00%
15:31:29.085 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 1E 85 ]
15:31:32.089 -> Client sends to Wahoo Control Point: [ 46 65 86 ] --> set Grade: 5.00%
15:31:32.680 -> -> Client Rec'd Raw Wahoo Control Point Response Data: [ 01 46 01 00 65 86 ]

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 7, 2024

Hierbij het vervolg waarbij ik aanteken dat de resultaten nog steeds wisselend zijn. Succes met de analyse.
Vg JW

1e poging na reset laden van V14 - Eerst Kickr aan en daarna SIM - geen fix
15:39:50.212 ->
15:39:50.212 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:39:50.212 -> ------------------------ Version 01.4 --------------------------
15:39:50.212 -> SIM32
15:39:50.400 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:39:50.443 -> SSD1306 OLED display is running...
15:39:56.946 -> Motor Control Task Created and Active!
15:39:56.946 -> Simcline Basic Motor Funtions are working!!
15:39:57.208 -> Configuring the default Generic Access Service
15:39:57.208 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:39:57.208 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:39:57.208 -> Configuring the Server Nordic Uart Service
15:39:57.208 -> Configuring the Server Device Information Service
15:39:57.208 -> Configuring the Server Cycle Power Service
15:39:57.208 -> Configuring the Server Cadence and Speed Service
15:39:57.247 -> Setting up the Server advertising payload(s)
15:39:57.247 -> Setting Appearance in Advertised data to [1152]
15:39:57.247 -> Setting DeviceName in Advertised data to [SIM32]
15:39:57.247 -> Server is advertising: CPS + Wahoo
15:39:57.247 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:39:57.510 -> Found advertising Peripheral with CPS enabled! See data:
15:39:57.510 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:39:57.510 -> Service Data:
15:39:57.510 -> UUID: 0x1826, Data: �
15:39:57.862 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

2e poging. Eerst Kickr aan en daarna Sim. Uiteindelijk een fix (geduld!)
15:44:01.666 ->
15:44:01.666 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:44:01.701 -> ------------------------ Version 01.4 --------------------------
15:44:01.701 -> SIM32
15:44:01.890 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:44:01.930 -> SSD1306 OLED display is running...
15:44:08.422 -> Motor Control Task Created and Active!
15:44:08.422 -> Simcline Basic Motor Funtions are working!!
15:44:08.678 -> Configuring the default Generic Access Service
15:44:08.678 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:44:08.678 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:44:08.717 -> Configuring the Server Nordic Uart Service
15:44:08.717 -> Configuring the Server Device Information Service
15:44:08.717 -> Configuring the Server Cycle Power Service
15:44:08.717 -> Configuring the Server Cadence and Speed Service
15:44:08.717 -> Setting up the Server advertising payload(s)
15:44:08.717 -> Setting Appearance in Advertised data to [1152]
15:44:08.717 -> Setting DeviceName in Advertised data to [SIM32]
15:44:08.755 -> Server is advertising: CPS + Wahoo
15:44:08.755 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:45:06.743 -> Found advertising Peripheral with CPS enabled! See data:

15:45:06.743 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:45:06.784 -> Service Data:
15:45:06.784 -> UUID: 0x1826, Data: �
15:45:07.406 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:45:07.406 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:45:07.443 -> Now checking all Client Services and Characteristics!
15:45:07.443 -> If Mandatory Services Fail --> the Client will disconnect!
15:45:07.690 -> Client Generic Access: Found!
15:45:08.425 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:45:08.972 -> -> Client Reads Appearance: [0]
15:45:09.162 -> Client Device Information Service: Found!
15:45:09.570 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:45:10.741 -> -> Client Reads Serial Number: [221001365]
15:45:11.022 -> Client_CyclingPower_Service: Found!
15:45:11.566 -> Client_Wahoo_ControlPoint_Chr: Found!
15:45:12.276 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:45:12.754 -> Client_CP_Measurement_Chr: Found!
15:45:13.640 -> Client_CP_Feature_Chr: Found!
15:45:13.822 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:45:14.540 -> Client_CP_Location_Chr: Found!
15:45:14.654 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:45:14.730 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 151
15:45:15.276 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

3e poging. Eerst Kickr en daarna Sim. Vrijwel meteen een fix
15:48:57.038 ->
15:48:57.038 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:48:57.038 -> ------------------------ Version 01.4 --------------------------
15:48:57.038 -> SIM32
15:48:57.251 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:48:57.251 -> SSD1306 OLED display is running...
15:49:03.743 -> Motor Control Task Created and Active!
15:49:03.743 -> Simcline Basic Motor Funtions are working!!
15:49:04.040 -> Configuring the default Generic Access Service
15:49:04.040 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:49:04.040 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:49:04.040 -> Configuring the Server Nordic Uart Service
15:49:04.040 -> Configuring the Server Device Information Service
15:49:04.040 -> Configuring the Server Cycle Power Service
15:49:04.040 -> Configuring the Server Cadence and Speed Service
15:49:04.040 -> Setting up the Server advertising payload(s)
15:49:04.040 -> Setting Appearance in Advertised data to [1152]
15:49:04.075 -> Setting DeviceName in Advertised data to [SIM32]
15:49:04.075 -> Server is advertising: CPS + Wahoo
15:49:04.075 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:49:04.351 -> Found advertising Peripheral with CPS enabled! See data:
15:49:04.351 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:49:04.351 -> Service Data:
15:49:04.351 -> UUID: 0x1826, Data: �
15:49:05.042 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:49:05.042 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:49:05.078 -> Now checking all Client Services and Characteristics!
15:49:05.078 -> If Mandatory Services Fail --> the Client will disconnect!
15:49:05.437 -> Client Generic Access: Found!
15:49:05.981 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:49:07.704 -> -> Client Reads Appearance: [0]
15:49:08.188 -> Client Device Information Service: Found!
15:49:08.950 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:49:10.750 -> -> Client Reads Serial Number: [221001365]
15:49:11.282 -> Client_CyclingPower_Service: Found!
15:49:12.449 -> Client_Wahoo_ControlPoint_Chr: Found!
15:49:13.454 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:49:14.480 -> Client_CP_Measurement_Chr: Found!
15:49:17.748 -> Client_CP_Feature_Chr: Found!
15:49:18.047 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:49:19.931 -> Client_CP_Location_Chr: Found!
15:49:20.266 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:49:20.301 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 151
15:49:21.032 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

4e poging. Eerst Kickr en daarna Sim. Vrijwel meteen een fix
15:52:17.474 ->
15:52:17.474 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:52:17.474 -> ------------------------ Version 01.4 --------------------------
15:52:17.474 -> SIM32
15:52:17.687 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:52:17.687 -> SSD1306 OLED display is running...
15:52:24.215 -> Motor Control Task Created and Active!
15:52:24.215 -> Simcline Basic Motor Funtions are working!!
15:52:24.484 -> Configuring the default Generic Access Service
15:52:24.484 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:52:24.484 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:52:24.484 -> Configuring the Server Nordic Uart Service
15:52:24.484 -> Configuring the Server Device Information Service
15:52:24.484 -> Configuring the Server Cycle Power Service
15:52:24.484 -> Configuring the Server Cadence and Speed Service
15:52:24.484 -> Setting up the Server advertising payload(s)
15:52:24.484 -> Setting Appearance in Advertised data to [1152]
15:52:24.516 -> Setting DeviceName in Advertised data to [SIM32]
15:52:24.516 -> Server is advertising: CPS + Wahoo
15:52:24.516 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:52:24.820 -> Found advertising Peripheral with CPS enabled! See data:
15:52:24.820 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:52:24.865 -> Service Data:
15:52:24.865 -> UUID: 0x1826, Data: �
15:52:25.083 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:52:25.122 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:52:25.122 -> Now checking all Client Services and Characteristics!
15:52:25.122 -> If Mandatory Services Fail --> the Client will disconnect!
15:52:25.314 -> Client Generic Access: Found!
15:52:25.799 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:52:26.356 -> -> Client Reads Appearance: [0]
15:52:26.577 -> Client Device Information Service: Found!
15:52:27.048 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:52:27.989 -> -> Client Reads Serial Number: [221001365]
15:52:28.184 -> Client_CyclingPower_Service: Found!
15:52:28.753 -> Client_Wahoo_ControlPoint_Chr: Found!
15:52:29.050 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:52:29.687 -> Client_CP_Measurement_Chr: Found!
15:52:30.727 -> Client_CP_Feature_Chr: Found!
15:52:30.837 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:52:31.437 -> Client_CP_Location_Chr: Found!
15:52:31.553 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:52:31.589 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 101
15:52:32.069 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

5e poging. Eerst Kickr en daarna Sim. En weer succes!
15:54:36.847 ->
15:54:36.847 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:54:36.847 -> ------------------------ Version 01.4 --------------------------
15:54:36.881 -> SIM32
15:54:37.061 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:54:37.093 -> SSD1306 OLED display is running...
15:54:43.569 -> Motor Control Task Created and Active!
15:54:43.569 -> Simcline Basic Motor Funtions are working!!
15:54:43.835 -> Configuring the default Generic Access Service
15:54:43.835 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:54:43.867 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:54:43.867 -> Configuring the Server Nordic Uart Service
15:54:43.867 -> Configuring the Server Device Information Service
15:54:43.867 -> Configuring the Server Cycle Power Service
15:54:43.867 -> Configuring the Server Cadence and Speed Service
15:54:43.867 -> Setting up the Server advertising payload(s)
15:54:43.867 -> Setting Appearance in Advertised data to [1152]
15:54:43.901 -> Setting DeviceName in Advertised data to [SIM32]
15:54:43.901 -> Server is advertising: CPS + Wahoo
15:54:43.901 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:54:44.091 -> Found advertising Peripheral with CPS enabled! See data:
15:54:44.091 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:54:44.130 -> Service Data:
15:54:44.130 -> UUID: 0x1826, Data: �
15:54:44.715 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:54:44.715 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:54:44.748 -> Now checking all Client Services and Characteristics!
15:54:44.748 -> If Mandatory Services Fail --> the Client will disconnect!
15:54:45.007 -> Client Generic Access: Found!
15:54:45.584 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:54:46.158 -> -> Client Reads Appearance: [0]
15:54:46.765 -> Client Device Information Service: Found!
15:54:47.410 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:54:48.908 -> -> Client Reads Serial Number: [221001365]
15:54:49.257 -> Client_CyclingPower_Service: Found!
15:54:50.134 -> Client_Wahoo_ControlPoint_Chr: Found!
15:54:50.528 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:54:51.335 -> Client_CP_Measurement_Chr: Found!
15:54:52.646 -> Client_CP_Feature_Chr: Found!
15:54:52.716 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:54:53.213 -> Client_CP_Location_Chr: Found!
15:54:53.360 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:54:53.445 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 300
15:54:54.183 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

6e poging en nu met dezelfde volgorde naar Zwift. Helaas, geen fix met Kickr
15:57:08.127 ->
15:57:08.127 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:57:08.127 -> ------------------------ Version 01.4 --------------------------
15:57:08.127 -> SIM32
15:57:08.316 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:57:08.316 -> SSD1306 OLED display is running...
15:57:14.822 -> Motor Control Task Created and Active!
15:57:14.822 -> Simcline Basic Motor Funtions are working!!
15:57:15.116 -> Configuring the default Generic Access Service
15:57:15.116 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:57:15.116 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:57:15.116 -> Configuring the Server Nordic Uart Service
15:57:15.116 -> Configuring the Server Device Information Service
15:57:15.116 -> Configuring the Server Cycle Power Service
15:57:15.149 -> Configuring the Server Cadence and Speed Service
15:57:15.149 -> Setting up the Server advertising payload(s)
15:57:15.149 -> Setting Appearance in Advertised data to [1152]
15:57:15.149 -> Setting DeviceName in Advertised data to [SIM32]
15:57:15.149 -> Server is advertising: CPS + Wahoo
15:57:15.149 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:57:15.347 -> Found advertising Peripheral with CPS enabled! See data:
15:57:15.347 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:57:15.347 -> Service Data:
15:57:15.347 -> UUID: 0x1826, Data: �
15:57:15.729 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

7e poging: Kickr aan laten staan en Sim reset: Nu wel een fix met Kickr
15:59:22.011 ->
15:59:22.011 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
15:59:22.046 -> ------------------------ Version 01.4 --------------------------
15:59:22.046 -> SIM32
15:59:22.229 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
15:59:22.277 -> SSD1306 OLED display is running...
15:59:28.761 -> Motor Control Task Created and Active!
15:59:28.761 -> Simcline Basic Motor Funtions are working!!
15:59:29.090 -> Configuring the default Generic Access Service
15:59:29.090 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
15:59:29.090 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
15:59:29.090 -> Configuring the Server Nordic Uart Service
15:59:29.090 -> Configuring the Server Device Information Service
15:59:29.090 -> Configuring the Server Cycle Power Service
15:59:29.090 -> Configuring the Server Cadence and Speed Service
15:59:29.090 -> Setting up the Server advertising payload(s)
15:59:29.090 -> Setting Appearance in Advertised data to [1152]
15:59:29.130 -> Setting DeviceName in Advertised data to [SIM32]
15:59:29.130 -> Server is advertising: CPS + Wahoo
15:59:29.130 -> Client Starts Scanning for Server Device with CPS + Wahoo!
15:59:36.216 -> Found advertising Peripheral with CPS enabled! See data:
15:59:36.216 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
15:59:36.254 -> Service Data:
15:59:36.254 -> UUID: 0x1826, Data: �
15:59:40.197 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
15:59:40.197 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
15:59:40.197 -> Now checking all Client Services and Characteristics!
15:59:40.239 -> If Mandatory Services Fail --> the Client will disconnect!
15:59:40.760 -> Client Generic Access: Found!
15:59:41.198 -> -> Client Reads Device Name: [KICKR CORE 287D]
15:59:41.530 -> -> Client Reads Appearance: [0]
15:59:41.760 -> Client Device Information Service: Found!
15:59:42.127 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
15:59:43.359 -> -> Client Reads Serial Number: [221001365]
15:59:43.595 -> Client_CyclingPower_Service: Found!
15:59:44.031 -> Client_Wahoo_ControlPoint_Chr: Found!
15:59:44.259 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
15:59:44.830 -> Client_CP_Measurement_Chr: Found!
15:59:45.660 -> Client_CP_Feature_Chr: Found!
15:59:45.762 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
15:59:46.358 -> Client_CP_Location_Chr: Found!
15:59:46.501 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
15:59:46.545 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 151
15:59:47.008 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

** 8e poging. Alles uit en eerst Kickr aan en daarna Sim. Vrijwel meteen een fix.**
16:02:47.981 ->
16:02:47.981 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:02:48.018 -> ------------------------ Version 01.4 --------------------------
16:02:48.018 -> SIM32
16:02:48.225 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:02:48.225 -> SSD1306 OLED display is running...
16:02:54.724 -> Motor Control Task Created and Active!
16:02:54.724 -> Simcline Basic Motor Funtions are working!!
16:02:54.972 -> Configuring the default Generic Access Service
16:02:54.972 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:02:55.007 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:02:55.007 -> Configuring the Server Nordic Uart Service
16:02:55.007 -> Configuring the Server Device Information Service
16:02:55.007 -> Configuring the Server Cycle Power Service
16:02:55.007 -> Configuring the Server Cadence and Speed Service
16:02:55.007 -> Setting up the Server advertising payload(s)
16:02:55.007 -> Setting Appearance in Advertised data to [1152]
16:02:55.007 -> Setting DeviceName in Advertised data to [SIM32]
16:02:55.046 -> Server is advertising: CPS + Wahoo
16:02:55.046 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:02:55.046 -> Found advertising Peripheral with CPS enabled! See data:
16:02:55.046 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:02:55.080 -> Service Data:
16:02:55.080 -> UUID: 0x1826, Data: �
16:02:55.410 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:02:55.411 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:02:55.455 -> Now checking all Client Services and Characteristics!
16:02:55.455 -> If Mandatory Services Fail --> the Client will disconnect!
16:02:55.806 -> Client Generic Access: Found!
16:02:56.344 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:02:56.774 -> -> Client Reads Appearance: [0]
16:02:57.003 -> Client Device Information Service: Found!
16:02:57.636 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:02:59.021 -> -> Client Reads Serial Number: [221001365]
16:02:59.194 -> Client_CyclingPower_Service: Found!
16:03:00.373 -> Client_Wahoo_ControlPoint_Chr: Found!
16:03:00.859 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
16:03:01.454 -> Client_CP_Measurement_Chr: Found!
16:03:02.722 -> Client_CP_Feature_Chr: Found!
16:03:02.795 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:03:03.543 -> Client_CP_Location_Chr: Found!
16:03:03.824 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:03:03.864 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 450
16:03:04.875 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory

poging 9, wanneer fix laptop aan zetten en door naar Zwift. Eerst Kickr aangezet en daarna Sim. Een fix dus door naar
Zwift. Laptop aangezet, Zwift gestart. Sim werd vanzelf gevonden, moest alleen weerstand op sim zetten. Daarna ging de voorkant omhoog en ging ik trappen om te kijken of er weerstand was. De getallen in wattage en cadans kwamen in beeld waarna ik een route ging starten. Toen deze was geladen ging ik trappen en kreeg ik een connection failure in beeld. Toen alles weer afgesloten en een nieuwe poging gestart

16:05:51.501 ->
16:05:51.501 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:05:51.538 -> ------------------------ Version 01.4 --------------------------
16:05:51.538 -> SIM32
16:05:51.757 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:05:51.757 -> SSD1306 OLED display is running...
16:05:58.256 -> Motor Control Task Created and Active!
16:05:58.256 -> Simcline Basic Motor Funtions are working!!
16:05:58.504 -> Configuring the default Generic Access Service
16:05:58.504 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:05:58.504 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:05:58.504 -> Configuring the Server Nordic Uart Service
16:05:58.504 -> Configuring the Server Device Information Service
16:05:58.539 -> Configuring the Server Cycle Power Service
16:05:58.539 -> Configuring the Server Cadence and Speed Service
16:05:58.539 -> Setting up the Server advertising payload(s)
16:05:58.539 -> Setting Appearance in Advertised data to [1152]
16:05:58.539 -> Setting DeviceName in Advertised data to [SIM32]
16:05:58.539 -> Server is advertising: CPS + Wahoo
16:05:58.539 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:05:58.722 -> Found advertising Peripheral with CPS enabled! See data:
16:05:58.722 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:05:58.757 -> Service Data:
16:05:58.757 -> UUID: 0x1826, Data: �
16:06:01.575 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:06:01.575 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:06:01.619 -> Now checking all Client Services and Characteristics!
16:06:01.619 -> If Mandatory Services Fail --> the Client will disconnect!
16:06:02.187 -> Client Generic Access: Found!
16:06:02.723 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:06:03.440 -> -> Client Reads Appearance: [0]
16:06:04.003 -> Client Device Information Service: Found!
16:06:04.585 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:06:06.614 -> -> Client Reads Serial Number: [221001365]
16:06:06.958 -> Client_CyclingPower_Service: Found!
16:06:08.589 -> Client_Wahoo_ControlPoint_Chr: Found!
16:06:09.968 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
16:06:12.535 -> Client_CP_Measurement_Chr: Found!
16:06:15.821 -> Client_CP_Feature_Chr: Found!
16:06:16.121 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ] 16:06:17.421 -> Client_CP_Location_Chr: Found!
16:06:17.421 -> Client_CP_Location_Chr: Found!
16:06:17.752 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:06:17.786 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 351
16:06:18.937 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:09:14.325 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
16:09:14.364 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
16:09:14.364 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
16:09:14.968 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
16:09:15.839 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:09:20.485 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
16:09:20.970 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:09:21.868 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
16:09:22.172 -> [ 0]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:09:22.172 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
16:09:24.235 -> >>> Wahoo Trainer is unresponsive!
16:09:24.718 -> Response: 522
16:09:26.270 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:26.270 -> Set Simulation Grade! --> Grade: 2.5% Response: 1383
16:09:28.356 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:28.356 -> Set Simulation Grade! --> Grade: 2.5% Response: 484
16:09:30.405 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:30.405 -> Set Simulation Grade! --> Grade: 2.5% Response: 1543
16:09:32.380 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:32.380 -> Set Simulation Grade! --> Grade: 2.5% Response: 1964
16:09:34.367 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:34.367 -> Set Simulation Grade! --> Grade: 2.5% Response: 685
16:09:36.401 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:36.401 -> Set Simulation Grade! --> Grade: 2.5% Response: 243
16:09:38.389 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:38.389 -> Set Simulation Grade! --> Grade: 2.5%[ 2040]
16:09:40.420 -> >>> Wahoo Trainer is unresponsive!
16:09:40.638 -> Response: 222
16:09:42.469 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:42.469 -> Set Simulation Grade! --> Grade: 2.5% Response: 784
16:09:44.518 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:44.518 -> Set Simulation Grade! --> Grade: 2.5% Response: 342
16:09:46.574 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:46.622 -> Set Simulation Grade! --> Grade: 2.5% Response: 646
16:09:48.504 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:48.504 -> Set Simulation Grade! --> Grade: 2.5% Response: 1324
16:09:50.494 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:50.494 -> Set Simulation Grade! --> Grade: 2.5% Response: 446
16:09:52.579 -> [ 2099]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:09:52.579 -> Set Simulation Grade! --> Grade: 2.5% Response: 347
16:10:02.015 -> [ 9421]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:02.015 -> Set Simulation Grade! --> Grade: 2.5% Response: 523
16:10:04.006 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:04.006 -> Set Simulation Grade! --> Grade: 2.5% Response: 1343
16:10:06.090 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:06.090 -> Set Simulation Grade! --> Grade: 2.5% Response: 1544
16:10:07.993 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:08.030 -> Set Simulation Grade! --> Grade: 2.5% Response: 325
16:10:10.033 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:10.074 -> Set Simulation Grade! --> Grade: 2.5% Response: 1486
16:10:12.100 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:12.100 -> Set Simulation Grade! --> Grade: 2.5% Response: 1843
16:10:14.081 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:14.081 -> Set Simulation Grade! --> Grade: 2.5% Response: 763
16:10:16.057 -> [ 1979]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:16.057 -> Set Simulation Grade! --> Grade: 2.5% Response: 886
16:10:18.287 -> [ 2220]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:18.287 -> Set Simulation Grade! --> Grade: 2.5%[ 1920]
16:10:20.188 -> >>> Wahoo Trainer is unresponsive!
16:10:21.434 -> Response: 1244
16:10:22.158 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:22.158 -> Set Simulation Grade! --> Grade: 2.5% Response: 464
16:10:24.234 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:24.234 -> Set Simulation Grade! --> Grade: 2.5% Response: 1323
16:10:26.320 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:26.320 -> Set Simulation Grade! --> Grade: 2.5%[ 1980]
16:10:28.301 -> >>> Wahoo Trainer is unresponsive!
16:10:28.422 -> Response: 144
16:10:30.253 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 83 00 ]
16:10:30.287 -> Set Simulation Grade! --> Grade: 2.5%[ 2220]
16:10:32.487 -> >>> Wahoo Trainer is unresponsive!
16:10:34.249 -> Response: 1742
16:11:02.735 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:11:02.849 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:11:23.291 -> [ 50820]
16:11:23.291 -> >>> Wahoo Trainer is unresponsive!
16:11:25.302 -> [ 1980][ 120]Found advertising Peripheral with CPS enabled! See data:
16:11:26.009 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:11:26.041 -> Service Data:
16:11:26.041 -> UUID: 0x1826, Data: �
16:11:27.333 -> [ 1920]>>> Failed to reconnect Wahoo Trainer!
16:12:57.552 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
16:12:57.596 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:12:57.596 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
16:12:57.596 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
16:12:57.596 -> --> ESP32 Server is advertising again!

Poging 10. Kickr aangezet, Sim aangezet, met vertraging was de fix gelukt, laptop aangezet, Zwift gestart,
met pairen verscheen Sim vanzelf echter de weerstand stond op Kickr. Deze op Sim gezet, voorkant ging omhoog,
een route gestart met een paar trap bewegingen tussendoor en toen de route geladen was vanuit stilstand weggefietst.
Geen connection failure meer gezien dus route afgebroken, alles weer uitgezet voor een laatste poging

16:23:06.351 ->
16:23:06.351 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:23:06.384 -> ------------------------ Version 01.4 --------------------------
16:23:06.384 -> SIM32
16:23:06.594 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:23:06.594 -> SSD1306 OLED display is running...
16:23:13.063 -> Motor Control Task Created and Active!
16:23:13.064 -> Simcline Basic Motor Funtions are working!!
16:23:13.329 -> Configuring the default Generic Access Service
16:23:13.329 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:23:13.362 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:23:13.362 -> Configuring the Server Nordic Uart Service
16:23:13.362 -> Configuring the Server Device Information Service
16:23:13.362 -> Configuring the Server Cycle Power Service
16:23:13.362 -> Configuring the Server Cadence and Speed Service
16:23:13.362 -> Setting up the Server advertising payload(s)
16:23:13.362 -> Setting Appearance in Advertised data to [1152]
16:23:13.362 -> Setting DeviceName in Advertised data to [SIM32]
16:23:13.407 -> Server is advertising: CPS + Wahoo
16:23:13.407 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:23:23.110 -> Found advertising Peripheral with CPS enabled! See data:
16:23:23.110 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:23:23.110 -> Service Data:
16:23:23.110 -> UUID: 0x1826, Data: �
16:23:24.072 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:23:24.072 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:23:24.072 -> Now checking all Client Services and Characteristics!
16:23:24.072 -> If Mandatory Services Fail --> the Client will disconnect!
16:23:24.257 -> Client Generic Access: Found!
16:23:24.806 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:23:25.098 -> -> Client Reads Appearance: [0]
16:23:25.472 -> Client Device Information Service: Found!
16:23:25.873 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:23:26.762 -> -> Client Reads Serial Number: [221001365]
16:23:27.074 -> Client_CyclingPower_Service: Found!
16:23:27.755 -> Client_Wahoo_ControlPoint_Chr: Found!
16:23:27.988 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
16:23:28.587 -> Client_CP_Measurement_Chr: Found!
16:23:29.362 -> Client_CP_Feature_Chr: Found!
16:23:29.587 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:23:30.047 -> Client_CP_Location_Chr: Found!
16:23:30.149 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:23:30.225 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 101
16:23:30.724 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:26:55.181 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
16:26:55.181 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
16:26:55.181 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
16:26:55.614 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
16:26:55.856 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:26:59.837 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
16:27:00.179 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:27:00.883 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
16:27:05.368 -> [ 0]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:27:05.368 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 827
16:27:07.363 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:07.405 -> Set Simulation Grade! --> Grade: 1.2% Response: 887
16:27:09.319 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:09.319 -> Set Simulation Grade! --> Grade: 1.2% Response: 269
16:27:11.337 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:11.337 -> Set Simulation Grade! --> Grade: 1.2% Response: 327
16:27:13.362 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:13.396 -> Set Simulation Grade! --> Grade: 1.2%[ 1980]
16:27:15.368 -> >>> Wahoo Trainer is unresponsive!
16:27:15.368 -> Response: 5
16:27:17.365 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:17.365 -> Set Simulation Grade! --> Grade: 1.2% Response: 327
16:27:19.399 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:19.399 -> Set Simulation Grade! --> Grade: 1.2% Response: 687
16:27:21.402 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:21.438 -> Set Simulation Grade! --> Grade: 1.2% Response: 147
16:27:23.470 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:23.470 -> Set Simulation Grade! --> Grade: 1.2% Response: 608
16:27:25.317 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:27:25.317 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 148
16:27:27.347 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:27.347 -> Set Simulation Grade! --> Grade: 1.2% Response: 508
16:27:29.417 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:29.417 -> Set Simulation Grade! --> Grade: 1.2% Response: 966
16:27:40.884 -> [ 11460]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:27:40.884 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 2006
16:27:42.920 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:42.920 -> Set Simulation Grade! --> Grade: 1.2% Response: 367
16:27:45.450 -> [ 2519]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:45.450 -> Set Simulation Grade! --> Grade: 1.2% Response: 1147
16:27:47.472 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:47.472 -> Set Simulation Grade! --> Grade: 1.2% Response: 308
16:27:49.482 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 93 81 00 ]
16:27:49.516 -> Set Simulation Grade! --> Grade: 1.2% Response: 268
16:27:50.868 -> [ 1381]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:27:50.868 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 287
16:28:40.574 -> [ 49680]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:40.574 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1507
16:28:42.589 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2F 81 00 ]
16:28:42.589 -> Set Simulation Grade! --> Grade: 0.9% Response: 469
16:28:44.590 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 2F 81 00 ]
16:28:44.590 -> Set Simulation Grade! --> Grade: 0.9% Response: 689
16:28:46.603 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 81 00 ]
16:28:46.642 -> Set Simulation Grade! --> Grade: 0.9% Response: 1348
16:28:48.584 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 16 81 00 ]
16:28:48.616 -> Set Simulation Grade! --> Grade: 0.8% Response: 570
16:28:50.653 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:28:50.653 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 429
16:28:52.603 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 6B 80 00 ]
16:28:52.649 -> Set Simulation Grade! --> Grade: 0.3% Response: 751
16:28:54.681 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 0C 80 00 ]
16:28:54.681 -> Set Simulation Grade! --> Grade: 0.0% Response: 210
16:28:56.685 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: E0 7F 00 ]
16:28:56.719 -> Set Simulation Grade! --> Grade: -0.1% Response: 369
16:28:58.691 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: BD 7F 00 ]
16:28:58.691 -> Set Simulation Grade! --> Grade: -0.2% Response: 488
16:29:00.642 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:00.683 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 409
16:29:02.700 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 85 7F 00 ]
16:29:02.700 -> Set Simulation Grade! --> Grade: -0.4% Response: 269
16:29:04.748 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 70 7F 00 ]
16:29:04.748 -> Set Simulation Grade! --> Grade: -0.4% Response: 928
16:29:06.737 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 60 7F 00 ]
16:29:06.737 -> Set Simulation Grade! --> Grade: -0.5% Response: 849
16:29:08.748 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 53 7F 00 ]
16:29:08.748 -> Set Simulation Grade! --> Grade: -0.5% Response: 309
16:29:10.697 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:10.697 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 189
16:29:12.734 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 42 7F 00 ]
16:29:12.734 -> Set Simulation Grade! --> Grade: -0.6% Response: 952
16:29:14.749 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3C 7F 00 ]
16:29:14.749 -> Set Simulation Grade! --> Grade: -0.6% Response: 908
16:29:16.782 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 7F 00 ]
16:29:16.814 -> Set Simulation Grade! --> Grade: -0.6% Response: 570
16:29:18.866 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 7F 00 ]
16:29:18.866 -> Set Simulation Grade! --> Grade: -0.6% Response: 528
16:29:20.687 -> [ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:20.687 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 372
16:29:22.699 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 35 7F 00 ]
16:29:22.699 -> Set Simulation Grade! --> Grade: -0.6% Response: 2090
16:29:24.769 -> [ 2100]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 38 7F 00 ]
16:29:24.769 -> Set Simulation Grade! --> Grade: -0.6% Response: 388
16:29:29.820 -> [ 5040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 5C 7F 00 ]
16:29:29.820 -> Set Simulation Grade! --> Grade: -0.5% Response: 649
16:29:30.800 -> [ 960]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:29:30.800 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 290
16:29:37.569 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
16:29:37.569 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:29:37.569 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
16:29:37.569 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
16:29:37.569 -> --> ESP32 Server is advertising again!
16:29:38.987 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!

Poging 11 (laatste vandaag). Een herhaling van de vorige echter stond de laptop nog aan. Geen fix met Kickr. Laptop uitgezet
opnieuw Kickr gestart en daarna Sim. Helaas werd een reset gevraagd van Sim, Kickr bleef aan. UIteindelijk werd Kickr gevonden en kon ik de laptop starten. Ditmaal vond Zwift alle drie de Sim verbindingen en kon na bevestiging van vermogen en cadans de route laden. Nadat de route geladen was kon ik meteen wegfietsen zonder verdere problemen en heb ik de laptop, Kickr en Sim uitgezet

16:39:19.007 ->
16:39:19.007 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:39:19.041 -> ------------------------ Version 01.4 --------------------------
16:39:19.041 -> SIM32
16:39:19.257 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:39:19.257 -> SSD1306 OLED display is running...
16:39:25.742 -> Motor Control Task Created and Active!
16:39:25.742 -> Simcline Basic Motor Funtions are working!!
16:39:25.990 -> Configuring the default Generic Access Service
16:39:25.990 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:39:26.022 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:39:26.022 -> Configuring the Server Nordic Uart Service
16:39:26.022 -> Configuring the Server Device Information Service
16:39:26.022 -> Configuring the Server Cycle Power Service
16:39:26.022 -> Configuring the Server Cadence and Speed Service
16:39:26.022 -> Setting up the Server advertising payload(s)
16:39:26.022 -> Setting Appearance in Advertised data to [1152]
16:39:26.057 -> Setting DeviceName in Advertised data to [SIM32]
16:39:26.057 -> Server is advertising: CPS + Wahoo
16:39:26.057 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:39:26.256 -> Found advertising Peripheral with CPS enabled! See data:
16:39:26.256 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:39:26.256 -> Service Data:
16:39:26.256 -> UUID: 0x1826, Data: �
16:39:27.526 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:39:27.526 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:39:27.560 -> Now checking all Client Services and Characteristics!
16:39:27.560 -> If Mandatory Services Fail --> the Client will disconnect!
16:39:28.098 -> Client Generic Access: Found!
16:39:29.526 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:39:30.913 -> -> Client Reads Appearance: [0]
16:39:31.589 -> Client Device Information Service: Found!
16:39:33.826 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:39:37.515 -> -> Client Reads Serial Number: [221001365]
16:39:40.092 -> Mandatory Cycling Power Service: Not Found!
16:39:40.092 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!
16:39:40.092 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:41:09.072 ->
16:41:09.072 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
16:41:09.072 -> ------------------------ Version 01.4 --------------------------
16:41:09.072 -> SIM32
16:41:09.294 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
16:41:09.294 -> SSD1306 OLED display is running...
16:41:15.806 -> Motor Control Task Created and Active!
16:41:15.806 -> Simcline Basic Motor Funtions are working!!
16:41:16.061 -> Configuring the default Generic Access Service
16:41:16.061 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
16:41:16.061 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
16:41:16.098 -> Configuring the Server Nordic Uart Service
16:41:16.098 -> Configuring the Server Device Information Service
16:41:16.098 -> Configuring the Server Cycle Power Service
16:41:16.098 -> Configuring the Server Cadence and Speed Service
16:41:16.098 -> Setting up the Server advertising payload(s)
16:41:16.098 -> Setting Appearance in Advertised data to [1152]
16:41:16.098 -> Setting DeviceName in Advertised data to [SIM32]
16:41:16.098 -> Server is advertising: CPS + Wahoo
16:41:16.098 -> Client Starts Scanning for Server Device with CPS + Wahoo!
16:42:42.637 -> Found advertising Peripheral with CPS enabled! See data:
16:42:42.637 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:42:42.637 -> Service Data:
16:42:42.637 -> UUID: 0x1826, Data: �
16:43:09.472 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:43:09.472 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:43:09.472 -> Now checking all Client Services and Characteristics!
16:43:09.472 -> If Mandatory Services Fail --> the Client will disconnect!
16:43:10.123 -> Client Generic Access: Found!
16:43:12.138 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:43:13.888 -> -> Client Reads Appearance: [0]
16:43:14.375 -> Client Device Information Service: Found!
16:43:16.471 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:43:19.255 -> -> Client Reads Serial Number: [221001365]
16:43:20.688 -> Client_CyclingPower_Service: Found!
16:43:23.789 -> Client_Wahoo_ControlPoint_Chr: Found!
16:43:24.791 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
16:43:27.687 -> Client_CP_Measurement_Chr: Found!
16:43:32.287 -> Client_CP_Feature_Chr: Found!
16:43:32.603 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:43:35.769 -> Client_CP_Location_Chr: Found!
16:43:36.505 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:43:36.543 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 351
16:43:38.308 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:44:37.587 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:44:37.691 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:45:15.873 -> Found advertising Peripheral with CPS enabled! See data:
16:45:15.873 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:45:15.873 -> Service Data:
16:45:15.873 -> UUID: 0x1826, Data: �
16:45:16.919 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:45:16.953 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
16:45:16.953 -> Now checking all Client Services and Characteristics!
16:45:16.953 -> If Mandatory Services Fail --> the Client will disconnect!
16:45:16.953 -> Client Generic Access: Found!
16:45:17.135 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:45:17.284 -> -> Client Reads Appearance: [0]
16:45:17.284 -> Client Device Information Service: Found!
16:45:17.555 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:45:18.906 -> -> Client Reads Serial Number: [221001365]
16:45:18.906 -> Client_CyclingPower_Service: Found!
16:45:18.906 -> Client_Wahoo_ControlPoint_Chr: Found!
16:45:18.906 -> Client_CP_Measurement_Chr: Found!
16:45:18.906 -> Client_CP_Feature_Chr: Found!
16:45:19.368 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:45:19.368 -> Client_CP_Location_Chr: Found!
16:45:19.480 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:45:19.518 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 151
16:45:20.150 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:45:44.800 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:45:44.950 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:47:27.269 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
16:47:27.269 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
16:47:27.269 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
16:47:27.736 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
16:47:31.490 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
16:47:31.917 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:47:32.467 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
16:47:32.734 -> [ 0]
16:47:32.734 -> >>> Wahoo Trainer is unresponsive!
16:47:34.786 -> [ 2040]
16:47:34.786 -> >>> Wahoo Trainer is unresponsive!
16:47:36.848 -> [ 2040]Found advertising Peripheral with CPS enabled! See data:
16:47:38.623 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:47:38.668 -> Service Data:
16:47:38.668 -> UUID: 0x1826, Data: �
16:47:41.865 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:47:41.905 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:47:41.905 -> Now checking all Client Services and Characteristics!
16:47:41.905 -> If Mandatory Services Fail --> the Client will disconnect!
16:47:41.905 -> Client Generic Access: Found!
16:47:42.115 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:47:42.290 -> -> Client Reads Appearance: [0]
16:47:42.290 -> Client Device Information Service: Found!
16:47:42.464 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:47:43.535 -> -> Client Reads Serial Number: [221001365]
16:47:43.535 -> Client_CyclingPower_Service: Found!
16:47:43.535 -> Client_Wahoo_ControlPoint_Chr: Found!
16:47:43.535 -> Client_CP_Measurement_Chr: Found!
16:47:43.535 -> Client_CP_Feature_Chr: Found!
16:47:43.634 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:47:43.634 -> Client_CP_Location_Chr: Found!
16:47:43.786 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:47:43.817 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key [ 7020] Response: 133
16:47:44.486 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:47:45.847 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:47:45.878 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:45.878 -> Set Simulation Grade! --> Grade: 1.2% Response: 292
16:47:47.867 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:47.867 -> Set Simulation Grade! --> Grade: 1.2% Response: 712
16:47:49.865 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:49.865 -> Set Simulation Grade! --> Grade: 1.2%All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:47:49.984 -> Response: 135
16:47:51.902 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:51.902 -> Set Simulation Grade! --> Grade: 1.2%[ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:47:53.900 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2160]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:56.019 -> Set Simulation Grade! --> Grade: 1.2%[ 1860]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:57.880 -> Set Simulation Grade! --> Grade: 1.2%[ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:47:59.955 -> Set Simulation Grade! --> Grade: 1.2%[ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:48:01.899 -> Set Simulation Grade! --> Grade: 1.2%[ 7920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:48:09.860 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:48:11.863 -> Set Simulation Grade! --> Grade: 1.2%[ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:48:13.864 -> Set Simulation Grade! --> Grade: 1.2%[ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:48:15.895 -> Set Simulation Grade! --> Grade: 1.2%[ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 8A 81 00 ]
16:48:17.948 -> Set Simulation Grade! --> Grade: 1.2%>>> Error: Failed to write characteristic -> Return Code = 0x06
16:48:20.948 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
16:48:20.985 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
16:48:21.331 -> Found advertising Peripheral with CPS enabled! See data:
16:48:21.331 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
16:48:21.366 -> Service Data:
16:48:21.366 -> UUID: 0x1826, Data: �
16:48:22.032 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
16:48:22.032 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [1] MTU: [72]
16:48:22.032 -> Now checking all Client Services and Characteristics!
16:48:22.067 -> If Mandatory Services Fail --> the Client will disconnect!
16:48:22.067 -> Client Generic Access: Found!
16:48:22.182 -> -> Client Reads Device Name: [KICKR CORE 287D]
16:48:22.448 -> -> Client Reads Appearance: [0]
16:48:22.448 -> Client Device Information Service: Found!
16:48:22.883 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
16:48:24.347 -> -> Client Reads Serial Number: [221001365]
16:48:24.347 -> Client_CyclingPower_Service: Found!
16:48:24.347 -> Client_Wahoo_ControlPoint_Chr: Found!
16:48:24.347 -> Client_CP_Measurement_Chr: Found!
16:48:24.347 -> Client_CP_Feature_Chr: Found!
16:48:24.480 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
16:48:24.480 -> Client_CP_Location_Chr: Found!
16:48:24.599 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
16:48:24.631 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 302
16:48:25.295 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
16:48:25.684 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
16:49:13.816 -> [ 55861]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:49:13.816 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1146
16:49:15.814 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 81 00 ]
16:49:15.857 -> Set Simulation Grade! --> Grade: 0.9% Response: 110
16:49:17.884 -> [ 2041]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 81 00 ]
16:49:17.884 -> Set Simulation Grade! --> Grade: 0.9% Response: 465
16:49:19.853 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 81 00 ]
16:49:19.853 -> Set Simulation Grade! --> Grade: 0.9% Response: 1086
16:49:21.874 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 33 81 00 ]
16:49:21.913 -> Set Simulation Grade! --> Grade: 0.9% Response: 546
16:49:23.831 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:49:23.831 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 127
16:49:25.855 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: AE 80 00 ]
16:49:25.855 -> Set Simulation Grade! --> Grade: 0.5% Response: 1185
16:49:27.915 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 59 80 00 ]
16:49:27.915 -> Set Simulation Grade! --> Grade: 0.3% Response: 445
16:49:29.937 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: FF 7F 00 ]
16:49:29.937 -> Set Simulation Grade! --> Grade: -0.0% Response: 207
16:49:31.900 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: DB 7F 00 ]
16:49:31.900 -> Set Simulation Grade! --> Grade: -0.1% Response: 625
16:49:33.815 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:49:33.850 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1107
16:49:35.884 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 9A 7F 00 ]
16:49:35.884 -> Set Simulation Grade! --> Grade: -0.3% Response: 767
16:49:37.918 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 83 7F 00 ]
16:49:37.918 -> Set Simulation Grade! --> Grade: -0.4% Response: 527
16:49:39.949 -> [ 2039]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 72 7F 00 ]
16:49:39.949 -> Set Simulation Grade! --> Grade: -0.4% Response: 489
16:49:41.914 -> [ 1981]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 64 7F 00 ]
16:49:41.954 -> Set Simulation Grade! --> Grade: -0.5% Response: 407
16:49:43.869 -> [ 1920]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:49:43.869 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 1186
16:49:46.249 -> [ 2400]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 4E 7F 00 ]
16:49:46.249 -> Set Simulation Grade! --> Grade: -0.5% Response: 690
16:49:48.273 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 46 7F 00 ]
16:49:48.318 -> Set Simulation Grade! --> Grade: -0.6% Response: 1447
16:49:50.314 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3F 7F 00 ]
16:49:50.347 -> Set Simulation Grade! --> Grade: -0.6% Response: 1709
16:49:55.131 -> [ 4800]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
16:49:55.131 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000 Response: 807
16:49:57.183 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 3D 7F 00 ]
16:49:57.183 -> Set Simulation Grade! --> Grade: -0.6% Response: 1067
16:50:08.169 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
16:50:08.169 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
16:50:08.169 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
16:50:08.169 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
16:50:08.169 -> --> ESP32 Server is advertising again!
16:50:09.038 -> All Client (Trainer) Characteristics are Notify/Indicate Disabled!

@Berg0162
Copy link
Owner

Berg0162 commented Dec 8, 2024

Beste Jan-Willem,
Heel goed gedaan en respect voor al je werk! Je hebt precies de volgende stap gedaan (v14) die ik ook had voorzien wanneer v10 goed zou connecten... In alle instructies aan het begin van ieder programma (en op de website) staan instructies voor de volgorde waarin men te werk moet gaan, zie bijvoorbeeld de al wat oudere tekst in de code van v14:

Requirements: Zwift app or alike, operational Simcline and a Wahoo Kickr trainer
 *  0) Upload and Run this code on the Simcline (i.c. ESP32 board)
 *  1) Start the Serial Monitor to catch debugging info and check the Oled display
 *  2) The code will do basic testing of mechanical parts and sensors
 *  3) Start/Power On the indoor trainer  
 *  4) Simcline and trainer (with <name>) will pair as reported in the output
 *  5) Start Zwift on your computer or tablet and wait....
 *  6) Search on the Zwift pairing screens for the Simcline a.k.a. <SIM32>
 *  7) Pair: Power, Cadence and Controllable one after another with <SIM32>
 *  8) Optionally one can pair as well devices for heartrate and/or steering (Sterzo)
 *  9) Start the default Zwift ride or any ride you wish

In de loop van de jaren heeft meneer Zwift de naamgeving (op het scherm) van de verschillende onderdelen gewijzigd, maar de bedoeling is toch behoorlijk duidelijk met de "oude" namen. Ik ben zo naif om te denken dat Simcline gebruikers de aangegeven volgorde ook steeds gebruiken.
Toelichting:
Voordat je met de Simcline ging werken kende Zwift alleen jouw trainer en ging het pairen (connecten) altijd gelijk goed! Vooral omdat Zwift van alle onderdelen de namen en eigenschappen onthoudt, kan Zwift zelfs automatisch pairen (auto connect) de volgende keer dat Zwift tijdens het scannen bekende apparaten ontdekt, zoals jouw trainer. Ook wanneer je tussendoor de trainer afkoppelt gaat Zwift gelijk weer op zoek (scannen) naar het soort apparaat dat is afgekoppeld... Kortom voor ieder apparaat gaat Zwift geheel uit zichzelf scannen wanneer je Zwift opstart! Zelfs wanneer je tijdens een rit een apparaat afkoppelt gaat Zwift scannen voor dat apparaat of een ander uit de lijst! Heel gebruikersvriendelijk, maar... Nu is er een nieuwe situatie, namelijk Simcline is erbij gekomen. Simcline gedraagt zich naar Zwift als een trainer met de naam SIM32... voor Zwift is dat gewoon nummer 2 want de Wahoo kende Zwift al. Kortom als Zwift actief is (tijdens het pairing scherm of tijdens een rit) zal Zwift geheel uit zichzelf proberen om alle apparaten die het kent te connecten. Als je Sim32 hebt gekozen als Zwift apparaat en de connectie van Zwift met Sim32 valt weg (tijdens een rit) dan gaat Zwift (na 20 seconden) op zoek naar een trainer in de buurt... Dat kan dezelfde SIM32 zijn maar net zo goed een Wahoo. NB je wordt niet gevraagd of dat is wat je wilt, Zwift doet dat geheel eigenstandig. Nu we hebben gezien dat SIM32 prima kan connecten met je Wahoo wordt wel duidelijk wat er kan gebeuren wanneer Zwift actief is en wanneer je probeert Simcline te connecten met de Wahoo.. Simcline is in competitie met Zwift, wie het eerste een connectie maakt heeft gewonnen en de ander blijft zitten met een foutmelding: Device not connected! En jij maar denken dat er iets niet goed werkt! Integendeel iedereen doet wat er moet gebeuren! De volgorde waarin de componenten worden aangezet en geconnect worden, is dus heel kritisch! Eerst dacht ik even dat er iets bijzonders met jouw Wahoo aan de hand was. Toen begreep ik dat je mogelijk niet de juiste volgorde had aangehouden, vandaar terug naar v10 met de uitdrukkelijke instructie de Zwift computer uit te laten... Lange uitleg omdat ik vind dat als je begrijpt wat er precies gebeurt je beter zelf de oorzaak kunt voorkomen of oplossen!
Fijne Zondag!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 9, 2024

Hoi Jörgen,

Dank weer voor je reply. Ik had uiteraard de volgorde wel gezien maar omdat dit niet consequent werkte ben ik zelf gaan experimenteren niet wetende dat bluetooth soms zo'n moeite heeft om te koppelen met Zwift (my bad).

Wat je zegt over Zwift icm Wahoo klopt natuurlijk. Er was nooit concurrentie voor de Kickr dus altijd een fix. Bovendien werkte ik altijd met een ant+ dongel en niet rechtstreeks met bluetooth. Dat betekende een extra concurrent in het geheugen van Zwift.

Ik heb nog wel een ideetje om te testen. Zwift houdt bij wie er allemaal koppelen en ik wil vanavond eens testen om dit xml bestand op alleen lezen te zetten om zo alleen Sim 32 als bekende cliënt te laten fungeren. Laat na mijn ritje vanavond nog wel even weten of dit werkt.

Fijne dag nog..

Vg Jan-Willem

@Berg0162
Copy link
Owner

Berg0162 commented Dec 9, 2024

Beste Jan-Willem,
Ik zag nog wat onduidelijkheden (zoals unresponsive enzo...) in je overvloedige output die te maken hadden met snelle opeenvolging van commando's zoals verzonden door Zwift, zo nu en dan. Ik heb de code nog wat aangepast zodat die daar beter mee omgaat en niet nodeloos paniek zaait! Als je een "unresponsive" boodschap ziet, is er echt wat aan de hand (Wahoo disconnected enzo..).
Verder heb ik vele malen (nadat alle componenten keurig geconnect waren) getest of "resetten" van de Wahoo (snel uit- en weer aanzetten) voor problemen kan zorgen, tijdens een rit. Simcline connect weer snel met de Wahoo, voordat Zwift het in de gaten heeft. De rit wordt weer vervolgd waar je gebleven was! Kleine haperingen worden goed opgevangen!
Wees voorzichtig met die XML bestanden aanpassen en/of read-only maken... misschien overzie je het geheel en/of belang niet helemaal!
De nieuwste versie v14 in Github heeft de oude v14 geheel vervangen. Vergeet niet de specieke waarden voor jouw setup toe te voegen!
Happy testing!

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 9, 2024

Hoi Jörgen,

Ik heb je berichtje gemist door de drukte maar wel interessante data. Na aanvankelijk zonder log geprobeerd te hebben om Kickr gepaird te krijgen heb ik uiteindelijk de laptop er weer aangehangen om te zien wat er gebeurde. Weer vreselijk veel moeite om Kickr te pairen terwijl ik de volgorde aanhield die eerder zulke goede resultaten gaf. Nadat ik eindelijk succes had ben ik gestart met een Join workout. Dat liep niet goed af doordat de verbinding wegviel. Toen de workout afgemaakt met de Kickr rechtstreeks gekoppeld. Na de workout weer getest en ik kreeg op een gegeven moment wisselende resultaten. Wel verbinding met Kickr als ik trapte (dan kwam het verplichte signaal) en toch wegvallen als Zwift opstartte. Dan weer verbinding met Kickr zonder te trappen, maar weer geen signaal naar Zwift. Kortom ik kan er geen vinger achter krijgen. Morgen ga ik je nieuwe code testen.

Groet JW

Diverse pogingen om de Kickr te pairen op dezelfde manier als voorheen. Eerst Kickr starten en dan Sim
19:23:00.410 -> Found advertising Peripheral with CPS enabled! See data:
19:23:00.410 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:23:00.478 -> Service Data:
19:23:00.478 -> UUID: 0x1826, Data: �
19:23:07.058 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!
19:23:35.214 -> Motor Control Task Created and Active!
19:23:35.214 -> Simcline Basic Motor Funtions are working!!
19:23:35.481 -> Configuring the default Generic Access Service
19:23:35.481 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:23:35.481 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:23:35.481 -> Configuring the Server Nordic Uart Service
19:23:35.481 -> Configuring the Server Device Information Service
19:23:35.481 -> Configuring the Server Cycle Power Service
19:23:35.481 -> Configuring the Server Cadence and Speed Service
19:23:35.524 -> Setting up the Server advertising payload(s)
19:23:35.524 -> Setting Appearance in Advertised data to [1152]
19:23:35.524 -> Setting DeviceName in Advertised data to [SIM32]
19:23:35.524 -> Server is advertising: CPS + Wahoo
19:23:35.524 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:24:24.540 -> Found advertising Peripheral with CPS enabled! See data:
19:24:24.540 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:24:24.540 -> Service Data:
19:24:24.540 -> UUID: 0x1826, Data: �
19:24:26.930 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

19:25:11.651 ->
19:25:11.651 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:25:11.651 -> ------------------------ Version 01.4 --------------------------
19:25:11.651 -> SIM32
19:25:11.825 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:25:11.867 -> SSD1306 OLED display is running...
19:25:18.367 -> Motor Control Task Created and Active!
19:25:18.367 -> Simcline Basic Motor Funtions are working!!
19:25:18.636 -> Configuring the default Generic Access Service
19:25:18.636 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:25:18.636 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:25:18.636 -> Configuring the Server Nordic Uart Service
19:25:18.636 -> Configuring the Server Device Information Service
19:25:18.636 -> Configuring the Server Cycle Power Service
19:25:18.636 -> Configuring the Server Cadence and Speed Service
19:25:18.678 -> Setting up the Server advertising payload(s)
19:25:18.678 -> Setting Appearance in Advertised data to [1152]
19:25:18.678 -> Setting DeviceName in Advertised data to [SIM32]
19:25:18.678 -> Server is advertising: CPS + Wahoo
19:25:18.678 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:25:53.878 -> Found advertising Peripheral with CPS enabled! See data:
19:25:53.878 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:25:53.913 -> Service Data:
19:25:53.913 -> UUID: 0x1826, Data: �
19:26:22.383 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:26:22.443 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:26:22.443 -> Now checking all Client Services and Characteristics!
19:26:22.443 -> If Mandatory Services Fail --> the Client will disconnect!
19:26:23.576 -> Client Generic Access: Found!
19:26:25.871 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:26:28.581 -> -> Client Reads Appearance: [0]
19:26:31.833 -> Client Device Information Service: Found!
19:26:35.190 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:26:40.697 -> -> Client Reads Serial Number: [221001365]
19:26:41.482 -> Client_CyclingPower_Service: Found!
19:26:44.281 -> Client_Wahoo_ControlPoint_Chr: Found!
19:26:47.346 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
19:26:47.582 -> Client_CP_Measurement_Chr: Found!
19:26:52.189 -> Client_CP_Feature_Chr: Found!
19:26:52.517 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:26:54.281 -> Client_CP_Location_Chr: Found!
19:26:54.825 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:26:54.872 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 250
19:26:56.211 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:27:55.920 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:27:56.089 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:28:23.493 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:28:23.493 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
19:28:23.493 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:28:23.701 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
19:28:27.809 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:28:28.291 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:28:28.890 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:30:36.262 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
19:30:36.262 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:30:36.262 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
19:30:36.262 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
19:30:36.262 -> --> ESP32 Server is advertising again!

19:31:54.022 ->
19:31:54.022 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:31:54.022 -> ------------------------ Version 01.4 --------------------------
19:31:54.063 -> SIM32
19:31:54.239 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:31:54.280 -> SSD1306 OLED display is running...
19:32:00.749 -> Motor Control Task Created and Active!
19:32:00.749 -> Simcline Basic Motor Funtions are working!!
19:32:01.047 -> Configuring the default Generic Access Service
19:32:01.047 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:32:01.047 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:32:01.047 -> Configuring the Server Nordic Uart Service
19:32:01.047 -> Configuring the Server Device Information Service
19:32:01.047 -> Configuring the Server Cycle Power Service
19:32:01.047 -> Configuring the Server Cadence and Speed Service
19:32:01.047 -> Setting up the Server advertising payload(s)
19:32:01.047 -> Setting Appearance in Advertised data to [1152]
19:32:01.087 -> Setting DeviceName in Advertised data to [SIM32]
19:32:01.087 -> Server is advertising: CPS + Wahoo
19:32:01.087 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:32:01.134 -> Found advertising Peripheral with CPS enabled! See data:
19:32:01.134 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:32:01.134 -> Service Data:
19:32:01.134 -> UUID: 0x1826, Data: �
19:32:03.507 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:32:03.507 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:32:03.507 -> Now checking all Client Services and Characteristics!
19:32:03.552 -> If Mandatory Services Fail --> the Client will disconnect!
19:32:05.376 -> Client Generic Access: Found!
19:32:11.365 -> -> Client Reads Device Name: []
19:32:11.365 -> Device Information Service: NOT Found!
19:32:11.365 -> Mandatory Cycling Power Service: Not Found!
19:32:11.365 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:32:11.365 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

19:33:31.388 ->
19:33:31.388 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:33:31.388 -> ------------------------ Version 01.4 --------------------------
19:33:31.388 -> SIM32
19:33:31.575 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:33:31.608 -> SSD1306 OLED display is running...
19:33:38.091 -> Motor Control Task Created and Active!
19:33:38.091 -> Simcline Basic Motor Funtions are working!!
19:33:38.357 -> Configuring the default Generic Access Service
19:33:38.357 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:33:38.357 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:33:38.390 -> Configuring the Server Nordic Uart Service
19:33:38.390 -> Configuring the Server Device Information Service
19:33:38.390 -> Configuring the Server Cycle Power Service
19:33:38.390 -> Configuring the Server Cadence and Speed Service
19:33:38.390 -> Setting up the Server advertising payload(s)
19:33:38.390 -> Setting Appearance in Advertised data to [1152]
19:33:38.390 -> Setting DeviceName in Advertised data to [SIM32]
19:33:38.390 -> Server is advertising: CPS + Wahoo
19:33:38.390 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:33:38.431 -> Found advertising Peripheral with CPS enabled! See data:
19:33:38.431 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:33:38.466 -> Service Data:
19:33:38.466 -> UUID: 0x1826, Data: �
19:33:38.858 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

19:35:08.291 ->
19:35:08.291 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:35:08.335 -> ------------------------ Version 01.4 --------------------------
19:35:08.335 -> SIM32
19:35:08.554 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:35:08.554 -> SSD1306 OLED display is running...
19:35:13.347 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
19:35:13.577 -> Configuring the default Generic Access Service
19:35:13.577 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:35:13.612 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:35:13.612 -> Configuring the Server Nordic Uart Service
19:35:13.612 -> Configuring the Server Device Information Service
19:35:13.612 -> Configuring the Server Cycle Power Service
19:35:13.612 -> Configuring the Server Cadence and Speed Service
19:35:13.612 -> Setting up the Server advertising payload(s)
19:35:13.612 -> Setting Appearance in Advertised data to [1152]
19:35:13.645 -> Setting DeviceName in Advertised data to [SIM32]
19:35:13.645 -> Server is advertising: CPS + Wahoo
19:35:13.645 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:35:13.689 -> Found advertising Peripheral with CPS enabled! See data:
19:35:13.689 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:35:13.689 -> Service Data:
19:35:13.689 -> UUID: 0x1826, Data: �
19:35:15.032 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

Connect eindelijk gelukt en de laptop opgestart. Zwift gestart en een join workout gestart. Op een gegeven moment viel hetr vermogen weg en kwam niet meer terug. Daarna Kickr rechtstreeks verbonden en mijn workout afgemaakt.
https://www.strava.com/activities/13081039847
19:35:31.268 ->
19:35:31.268 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:35:31.268 -> ------------------------ Version 01.4 --------------------------
19:35:31.268 -> SIM32
19:35:31.486 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:35:31.486 -> SSD1306 OLED display is running...
19:35:37.975 -> Motor Control Task Created and Active!
19:35:37.975 -> Simcline Basic Motor Funtions are working!!
19:35:38.245 -> Configuring the default Generic Access Service
19:35:38.245 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:35:38.245 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:35:38.245 -> Configuring the Server Nordic Uart Service
19:35:38.245 -> Configuring the Server Device Information Service
19:35:38.245 -> Configuring the Server Cycle Power Service
19:35:38.287 -> Configuring the Server Cadence and Speed Service
19:35:38.287 -> Setting up the Server advertising payload(s)
19:35:38.287 -> Setting Appearance in Advertised data to [1152]
19:35:38.287 -> Setting DeviceName in Advertised data to [SIM32]
19:35:38.287 -> Server is advertising: CPS + Wahoo
19:35:38.287 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:35:38.427 -> Found advertising Peripheral with CPS enabled! See data:
19:35:38.427 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:35:38.427 -> Service Data:
19:35:38.427 -> UUID: 0x1826, Data: �
19:35:39.450 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:35:39.488 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:35:39.488 -> Now checking all Client Services and Characteristics!
19:35:39.488 -> If Mandatory Services Fail --> the Client will disconnect!
19:35:40.696 -> Client Generic Access: Found!
19:35:41.469 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:35:42.580 -> -> Client Reads Appearance: [0]
19:35:43.315 -> Client Device Information Service: Found!
19:35:44.748 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:35:48.475 -> -> Client Reads Serial Number: [221001365]
19:35:49.068 -> Client_CyclingPower_Service: Found!
19:35:51.079 -> Client_Wahoo_ControlPoint_Chr: Found!
19:35:52.183 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
19:35:54.383 -> Client_CP_Measurement_Chr: Found!
19:35:59.548 -> Client_CP_Feature_Chr: Found!
19:36:00.077 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
19:36:03.775 -> Client_CP_Location_Chr: Found!
19:36:05.150 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
19:36:05.244 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 750
19:36:06.773 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
19:37:33.208 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
19:37:33.380 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
19:37:33.380 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
19:37:33.392 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
19:37:37.352 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
19:37:37.683 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
19:37:38.282 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
19:37:39.079 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
19:38:11.943 -> [ 0]-> Server Rec'd Raw Wahoo Control Point Data [len: 7] [OpCode: 43] [Values: B0 1D 04 00 70 01 00 ]
19:38:12.225 -> Set Simulation Mode! --> Weight: 76.00 RRC: 0.004000 WRC: 0.368000[ 2040]
19:38:13.980 -> >>> Wahoo Trainer is unresponsive!
19:38:14.554 -> Response: 575
19:38:16.000 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:16.000 -> Set Simulation Grade! --> Grade: 1.6% Response: 5893
19:38:24.447 -> [ 8460]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:24.447 -> Set Simulation Grade! --> Grade: 1.6% Response: 1939
19:38:26.491 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:26.491 -> Set Simulation Grade! --> Grade: 1.6%[ 1980]
19:38:28.438 -> >>> Wahoo Trainer is unresponsive!
19:38:29.752 -> Response: 1314
19:38:30.491 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:30.491 -> Set Simulation Grade! --> Grade: 1.6% Response: 975
19:38:32.568 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:32.568 -> Set Simulation Grade! --> Grade: 1.6% Response: 533
19:38:34.604 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:34.604 -> Set Simulation Grade! --> Grade: 1.6% Response: 698
19:38:36.578 -> [ 1980]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:36.578 -> Set Simulation Grade! --> Grade: 1.6% Response: 916
19:38:38.627 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:38.627 -> Set Simulation Grade! --> Grade: 1.6% Response: 975
19:38:40.657 -> [ 2040]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 46] [Values: 1B 82 00 ]
19:38:40.657 -> Set Simulation Grade! --> Grade: 1.6%[ 1740]
19:38:42.377 -> >>> Wahoo Trainer is unresponsive!
19:38:43.348 -> [ 960]
19:38:43.348 -> >>> Wahoo Trainer is unresponsive!
19:38:44.050 -> Response: 735
19:39:37.440 -> [ 54120]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:37.641 -> Unresolved OpCode!
19:39:38.602 -> [ 1140]
19:39:38.602 -> >>> Wahoo Trainer is unresponsive!
19:39:39.475 -> Response: 876
19:39:39.709 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:39.709 -> Unresolved OpCode!
19:39:40.663 -> [ 960]
19:39:40.663 -> >>> Wahoo Trainer is unresponsive!
19:39:41.801 -> [ 1140]
19:39:41.801 -> >>> Wahoo Trainer is unresponsive!
19:39:42.816 -> [ 1020][ 1021] Response: 159
19:39:44.827 -> [ 1019]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:44.827 -> Unresolved OpCode!
19:39:45.458 -> Response: 637
19:39:45.907 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:45.938 -> Unresolved OpCode!
19:39:46.859 -> [ 960]
19:39:46.859 -> >>> Wahoo Trainer is unresponsive!
19:39:47.908 -> [ 1020]
19:39:47.908 -> >>> Wahoo Trainer is unresponsive!
19:39:48.930 -> [ 1020] Response: 255
19:39:49.950 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:49.950 -> Unresolved OpCode!
19:39:50.602 -> Response: 640
19:39:51.008 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 73 00 00 ]
19:39:51.008 -> Unresolved OpCode!
19:39:51.959 -> [ 960]
19:39:51.959 -> >>> Wahoo Trainer is unresponsive!
19:39:52.166 -> Response: 197
19:39:52.988 -> [ 1021]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:39:52.988 -> Unresolved OpCode!
19:39:53.501 -> Response: 476
19:39:54.006 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:39:54.006 -> Unresolved OpCode!
19:39:54.363 -> Response: 354
19:39:55.082 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:39:55.130 -> Unresolved OpCode!
19:39:55.893 -> Response: 776
19:39:56.129 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:39:56.129 -> Unresolved OpCode!
19:39:57.163 -> [ 1020]
19:39:57.163 -> >>> Wahoo Trainer is unresponsive!
19:39:58.144 -> [ 1020]
19:39:58.144 -> >>> Wahoo Trainer is unresponsive!
19:39:58.684 -> Response: 516
19:39:59.262 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:39:59.262 -> Unresolved OpCode!
19:40:00.283 -> [ 1020]
19:40:00.283 -> >>> Wahoo Trainer is unresponsive!
19:40:01.260 -> [ 1020]
19:40:01.260 -> >>> Wahoo Trainer is unresponsive!
19:40:01.582 -> Response: 296
19:40:02.282 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:40:02.316 -> Unresolved OpCode!
19:40:02.492 -> Response: 175
19:40:03.370 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 78 00 00 ]
19:40:03.410 -> Unresolved OpCode!
19:40:04.382 -> [ 1019]
19:40:04.382 -> >>> Wahoo Trainer is unresponsive!
19:40:05.471 -> [ 1020]
19:40:05.471 -> >>> Wahoo Trainer is unresponsive!
19:40:06.426 -> [ 1020][ 1020] Response: 1017
19:40:08.523 -> [ 1081]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:08.556 -> Unresolved OpCode!
19:40:09.073 -> Response: 536
19:40:09.574 -> [ 1019]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:09.574 -> Unresolved OpCode!
19:40:10.002 -> Response: 416
19:40:10.512 -> [ 960]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:10.599 -> Unresolved OpCode!
19:40:10.720 -> Response: 158
19:40:11.632 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:11.632 -> Unresolved OpCode!
19:40:12.643 -> [ 1020]
19:40:12.643 -> >>> Wahoo Trainer is unresponsive!
19:40:12.688 -> Response: 56
19:40:13.620 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:13.661 -> Unresolved OpCode!
19:40:14.639 -> [ 1020]
19:40:14.639 -> >>> Wahoo Trainer is unresponsive!
19:40:14.854 -> Response: 216
19:40:15.678 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:15.678 -> Unresolved OpCode!
19:40:16.386 -> Response: 697
19:40:16.743 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:16.778 -> Unresolved OpCode!
19:40:17.202 -> Response: 416
19:40:17.760 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:17.796 -> Unresolved OpCode!
19:40:18.058 -> Response: 294
19:40:18.780 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:18.838 -> Unresolved OpCode!
19:40:19.849 -> [ 1020]
19:40:19.849 -> >>> Wahoo Trainer is unresponsive!
19:40:20.081 -> Response: 256
19:40:20.820 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:20.870 -> Unresolved OpCode!
19:40:20.958 -> Response: 137
19:40:21.912 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 7D 00 00 ]
19:40:21.937 -> Unresolved OpCode!
19:40:22.919 -> [ 1020]
19:40:22.919 -> >>> Wahoo Trainer is unresponsive!
19:40:23.281 -> Response: 335
19:40:23.986 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:23.986 -> Unresolved OpCode!
19:40:24.064 -> Response: 116
19:40:24.994 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:24.994 -> Unresolved OpCode!
19:40:26.051 -> [ 1080]
19:40:26.051 -> >>> Wahoo Trainer is unresponsive!
19:40:27.080 -> [ 1020]
19:40:27.080 -> >>> Wahoo Trainer is unresponsive!
19:40:27.562 -> Response: 497
19:40:28.090 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:28.127 -> Unresolved OpCode!
19:40:28.357 -> Response: 280
19:40:29.149 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:29.149 -> Unresolved OpCode!
19:40:29.794 -> Response: 657
19:40:30.198 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:30.234 -> Unresolved OpCode!
19:40:31.160 -> [ 960]
19:40:31.160 -> >>> Wahoo Trainer is unresponsive!
19:40:31.955 -> Response: 818
19:40:32.221 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:32.258 -> Unresolved OpCode!
19:40:32.769 -> Response: 537
19:40:33.302 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:33.338 -> Unresolved OpCode!
19:40:34.157 -> Response: 857
19:40:34.381 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:34.423 -> Unresolved OpCode!
19:40:34.986 -> Response: 578
19:40:35.502 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:35.502 -> Unresolved OpCode!
19:40:36.274 -> Response: 798
19:40:36.510 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:36.510 -> Unresolved OpCode!
19:40:37.183 -> Response: 678
19:40:37.613 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 82 00 00 ]
19:40:37.613 -> Unresolved OpCode!
19:40:38.170 -> Response: 597
19:40:38.626 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:38.626 -> Unresolved OpCode!
19:40:38.988 -> Response: 378
19:40:39.629 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:39.629 -> Unresolved OpCode!
19:40:40.705 -> [ 1080]
19:40:40.705 -> >>> Wahoo Trainer is unresponsive!
19:40:41.591 -> Response: 876
19:40:41.702 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:41.747 -> Unresolved OpCode!
19:40:42.568 -> Response: 857
19:40:42.734 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:42.734 -> Unresolved OpCode!
19:40:43.753 -> [ 1020]
19:40:43.753 -> >>> Wahoo Trainer is unresponsive!
19:40:44.454 -> Response: 717
19:40:44.803 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:44.803 -> Unresolved OpCode!
19:40:45.562 -> Response: 798
19:40:45.809 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:45.809 -> Unresolved OpCode!
19:40:46.171 -> Response: 378
19:40:46.892 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:46.892 -> Unresolved OpCode!
19:40:47.879 -> [ 1020]
19:40:47.879 -> >>> Wahoo Trainer is unresponsive!
19:40:48.180 -> Response: 278
19:40:48.969 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:49.007 -> Unresolved OpCode!
19:40:49.655 -> Response: 697
19:40:50.032 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:50.032 -> Unresolved OpCode!
19:40:50.499 -> Response: 476
19:40:50.969 -> [ 960]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:50.969 -> Unresolved OpCode!
19:40:51.483 -> Response: 519
19:40:52.049 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 87 00 00 ]
19:40:52.049 -> Unresolved OpCode!
19:40:52.767 -> Response: 741
19:40:53.085 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:40:53.085 -> Unresolved OpCode!
19:40:54.098 -> Response: 1015
19:40:54.129 -> [ 1081]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:40:54.129 -> Unresolved OpCode!
19:40:54.941 -> Response: 736
19:40:55.180 -> [ 1019]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:40:55.180 -> Unresolved OpCode!
19:40:55.872 -> Response: 716
19:40:56.202 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:40:56.202 -> Unresolved OpCode!
19:40:57.291 -> [ 1080]
19:40:57.291 -> >>> Wahoo Trainer is unresponsive!
19:40:58.261 -> [ 1020]
19:40:58.261 -> >>> Wahoo Trainer is unresponsive!
19:40:58.676 -> Response: 400
19:40:59.282 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:40:59.318 -> Unresolved OpCode!
19:41:00.335 -> [ 1020]
19:41:00.335 -> >>> Wahoo Trainer is unresponsive!
19:41:01.367 -> [ 1020]
19:41:01.367 -> >>> Wahoo Trainer is unresponsive!
19:41:02.337 -> [ 1020] Response: 818
19:41:03.433 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:41:03.469 -> Unresolved OpCode!
19:41:03.972 -> Response: 536
19:41:04.449 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:41:04.501 -> Unresolved OpCode!
19:41:05.473 -> Response: 1017
19:41:05.473 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 8C 00 00 ]
19:41:05.510 -> Unresolved OpCode!
19:41:06.428 -> [ 960]
19:41:06.428 -> >>> Wahoo Trainer is unresponsive!
19:41:07.537 -> [ 1080]
19:41:07.537 -> >>> Wahoo Trainer is unresponsive!
19:41:08.398 -> Response: 856
19:41:08.526 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 91 00 00 ]
19:41:08.526 -> Unresolved OpCode!
19:41:09.542 -> [ 1020]
19:41:09.542 -> >>> Wahoo Trainer is unresponsive!
19:41:10.619 -> [ 1080]
19:41:10.619 -> >>> Wahoo Trainer is unresponsive!
19:41:11.640 -> [ 1020][ 1080] Response: 39
19:41:13.761 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 91 00 00 ]
19:41:13.761 -> Unresolved OpCode!
19:41:14.831 -> [ 1080]
19:41:14.831 -> >>> Wahoo Trainer is unresponsive!
19:41:15.840 -> [ 1020]
19:41:15.840 -> >>> Wahoo Trainer is unresponsive!
19:41:16.857 -> [ 1020][ 960] Response: 3037
19:41:21.042 -> [ 3181]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 91 00 00 ]
19:41:21.042 -> Unresolved OpCode!
19:41:22.080 -> [ 1079]
19:41:22.080 -> >>> Wahoo Trainer is unresponsive!
19:41:23.136 -> [ 1020]
19:41:23.136 -> >>> Wahoo Trainer is unresponsive!
19:41:24.116 -> [ 1020][ 1020] Response: 319
19:41:26.206 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:26.206 -> Unresolved OpCode!
19:41:27.180 -> [ 1020]
19:41:27.180 -> >>> Wahoo Trainer is unresponsive!
19:41:28.310 -> [ 1080]
19:41:28.310 -> >>> Wahoo Trainer is unresponsive!
19:41:28.400 -> Response: 98
19:41:29.322 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:29.322 -> Unresolved OpCode!
19:41:30.346 -> [ 1020]
19:41:30.346 -> >>> Wahoo Trainer is unresponsive!
19:41:31.269 -> Response: 958
19:41:31.297 -> [ 960]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:31.297 -> Unresolved OpCode!
19:41:32.155 -> Response: 897
19:41:32.290 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:32.318 -> Unresolved OpCode!
19:41:33.337 -> [ 1020]
19:41:33.337 -> >>> Wahoo Trainer is unresponsive!
19:41:33.655 -> Response: 357
19:41:34.351 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:34.351 -> Unresolved OpCode!
19:41:35.339 -> [ 1020]
19:41:35.339 -> >>> Wahoo Trainer is unresponsive!
19:41:36.403 -> [ 1020]
19:41:36.403 -> >>> Wahoo Trainer is unresponsive!
19:41:37.409 -> [ 1020] Response: 479
19:41:38.486 -> [ 1079]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:38.486 -> Unresolved OpCode!
19:41:39.522 -> [ 1020]
19:41:39.522 -> >>> Wahoo Trainer is unresponsive!
19:41:40.256 -> Response: 777
19:41:40.489 -> [ 960]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:40.489 -> Unresolved OpCode!
19:41:41.537 -> [ 1080]
19:41:41.537 -> >>> Wahoo Trainer is unresponsive!
19:41:42.503 -> [ 960]
19:41:42.503 -> >>> Wahoo Trainer is unresponsive!
19:41:43.271 -> Response: 777
19:41:43.572 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:43.616 -> Unresolved OpCode!
19:41:44.580 -> [ 1021]
19:41:44.580 -> >>> Wahoo Trainer is unresponsive!
19:41:45.599 -> [ 1019]
19:41:45.599 -> >>> Wahoo Trainer is unresponsive!
19:41:46.160 -> Response: 561
19:41:46.657 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:46.658 -> Unresolved OpCode!
19:41:47.703 -> [ 1080]
19:41:47.703 -> >>> Wahoo Trainer is unresponsive!
19:41:48.767 -> [ 1020]
19:41:48.767 -> >>> Wahoo Trainer is unresponsive!
19:41:49.679 -> [ 960][ 1020][ 1080][ 1020] Response: 560
19:41:53.830 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:53.869 -> Unresolved OpCode!
19:41:54.843 -> [ 1020]
19:41:54.843 -> >>> Wahoo Trainer is unresponsive!
19:41:55.781 -> Response: 920
19:41:55.861 -> [ 1021]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:41:55.905 -> Unresolved OpCode!
19:41:56.879 -> [ 1019]
19:41:56.879 -> >>> Wahoo Trainer is unresponsive!
19:41:57.960 -> [ 1080]
19:41:57.960 -> >>> Wahoo Trainer is unresponsive!
19:41:59.001 -> [ 1020][ 1140][ 900][ 1080][ 1140][ 1020] Response: 799
19:42:05.371 -> [ 1080]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:42:05.371 -> Unresolved OpCode!
19:42:06.404 -> [ 1020]
19:42:06.404 -> >>> Wahoo Trainer is unresponsive!
19:42:07.323 -> [ 960]
19:42:07.323 -> >>> Wahoo Trainer is unresponsive!
19:42:07.502 -> Response: 140
19:42:08.343 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:42:08.379 -> Unresolved OpCode!
19:42:09.382 -> [ 1019]
19:42:09.382 -> >>> Wahoo Trainer is unresponsive!
19:42:10.388 -> [ 1021]
19:42:10.388 -> >>> Wahoo Trainer is unresponsive!
19:42:11.396 -> [ 1019] Response: 559
19:42:12.429 -> [ 1020]-> Server Rec'd Raw Wahoo Control Point Data [len: 3] [OpCode: 42] [Values: 96 00 00 ]
19:42:12.429 -> Unresolved OpCode!
19:42:13.442 -> [ 1020]
19:42:13.442 -> >>> Wahoo Trainer is unresponsive!
19:42:14.538 -> [ 1080]
19:42:14.538 -> >>> Wahoo Trainer is unresponsive!
19:42:15.572 -> [ 1020][ 1020][ 1321][ 1019][ 1080][ 1021][ 1080]>>> Error: Failed to write characteristic -> Return Code = 0x06
19:42:23.803 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:42:23.899 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
19:43:00.653 -> Found advertising Peripheral with CPS enabled! See data:
19:43:00.653 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:43:00.653 -> Service Data:
19:43:00.653 -> UUID: 0x1826, Data: �
19:43:03.876 -> >>> Failed to reconnect Wahoo Trainer!

Na de workout de laptop uitgezet en opnieuw diverse pogingen om een connectie te maken
21:11:12.155 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:11:12.194 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:11:12.194 -> Now checking all Client Services and Characteristics!
21:11:12.194 -> If Mandatory Services Fail --> the Client will disconnect!
21:11:12.872 -> Client Generic Access: Found!
21:11:15.524 -> -> Client Reads Device Name: [KICKR CORE 287D]
21:11:17.101 -> -> Client Reads Appearance: [0]
21:11:18.725 -> Client Device Information Service: Found!
21:11:21.703 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
21:11:28.155 -> Mandatory Cycling Power Service: Not Found!
21:11:28.155 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
21:11:28.195 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

21:14:41.706 ->
21:14:41.706 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
21:14:41.746 -> ------------------------ Version 01.4 --------------------------
21:14:41.746 -> SIM32
21:14:41.954 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
21:14:41.955 -> SSD1306 OLED display is running...
21:14:48.460 -> Motor Control Task Created and Active!
21:14:48.460 -> Simcline Basic Motor Funtions are working!!
21:14:48.714 -> Configuring the default Generic Access Service
21:14:48.714 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
21:14:48.714 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
21:14:48.754 -> Configuring the Server Nordic Uart Service
21:14:48.754 -> Configuring the Server Device Information Service
21:14:48.754 -> Configuring the Server Cycle Power Service
21:14:48.754 -> Configuring the Server Cadence and Speed Service
21:14:48.754 -> Setting up the Server advertising payload(s)
21:14:48.754 -> Setting Appearance in Advertised data to [1152]
21:14:48.754 -> Setting DeviceName in Advertised data to [SIM32]
21:14:48.793 -> Server is advertising: CPS + Wahoo
21:14:48.793 -> Client Starts Scanning for Server Device with CPS + Wahoo!

21:16:07.106 ->
21:16:07.106 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
21:16:07.106 -> ------------------------ Version 01.4 --------------------------
21:16:07.106 -> SIM32
21:16:07.339 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
21:16:07.339 -> SSD1306 OLED display is running...
21:16:13.823 -> Motor Control Task Created and Active!
21:16:13.823 -> Simcline Basic Motor Funtions are working!!
21:16:14.097 -> Configuring the default Generic Access Service
21:16:14.097 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
21:16:14.097 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
21:16:14.097 -> Configuring the Server Nordic Uart Service
21:16:14.097 -> Configuring the Server Device Information Service
21:16:14.097 -> Configuring the Server Cycle Power Service
21:16:14.097 -> Configuring the Server Cadence and Speed Service
21:16:14.129 -> Setting up the Server advertising payload(s)
21:16:14.129 -> Setting Appearance in Advertised data to [1152]
21:16:14.129 -> Setting DeviceName in Advertised data to [SIM32]
21:16:14.129 -> Server is advertising: CPS + Wahoo
21:16:14.129 -> Client Starts Scanning for Server Device with CPS + Wahoo!
21:16:30.685 -> Found advertising Peripheral with CPS enabled! See data:
21:16:30.685 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:16:30.685 -> Service Data:
21:16:30.685 -> UUID: 0x1826, Data: �
21:16:31.338 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:16:31.338 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:16:31.338 -> Now checking all Client Services and Characteristics!
21:16:31.338 -> If Mandatory Services Fail --> the Client will disconnect!
21:16:32.723 -> Client Generic Access: Found!
21:16:33.370 -> -> Client Reads Device Name: [KICKR CORE 287D]
21:16:34.793 -> -> Client Reads Appearance: [0]
21:16:35.420 -> Client Device Information Service: Found!
21:16:37.044 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
21:16:39.321 -> -> Client Reads Serial Number: [221001365]
21:16:39.711 -> Client_CyclingPower_Service: Found!
21:16:41.158 -> Client_Wahoo_ControlPoint_Chr: Found!
21:16:42.537 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
21:16:46.593 -> Client_CP_Measurement_Chr: Found!
21:16:51.123 -> Client_CP_Feature_Chr: Found!
21:16:52.707 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
21:16:56.417 -> Client_CP_Location_Chr: Found!
21:16:57.207 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
21:16:57.286 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 1252
21:16:59.736 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
21:19:56.691 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
21:19:56.735 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
21:20:05.232 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
21:20:05.232 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
21:20:05.232 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
21:20:05.657 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
21:20:10.404 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
21:20:10.887 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:20:11.553 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
21:20:22.171 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
21:20:22.172 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:20:22.172 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
21:20:22.172 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
21:20:22.172 -> --> ESP32 Server is advertising again!
21:20:45.915 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
21:20:45.915 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [0]
21:20:45.915 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
21:20:46.101 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 0
21:20:50.301 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
21:20:50.787 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:20:51.370 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
21:21:13.986 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
21:21:13.986 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:21:13.986 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
21:21:14.030 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [0] Mac Address: [D0:57:7B:EC:A0:BC]
21:21:14.030 -> --> ESP32 Server is advertising again!
21:21:27.235 -> Found advertising Peripheral with CPS enabled! See data:
21:21:27.235 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:21:27.235 -> Service Data:
21:21:27.235 -> UUID: 0x1826, Data: �

21:22:24.781 ->
21:22:24.781 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
21:22:24.817 -> ------------------------ Version 01.4 --------------------------
21:22:24.817 -> SIM32
21:22:25.027 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
21:22:25.027 -> SSD1306 OLED display is running...
21:22:29.793 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!
21:22:30.064 -> Configuring the default Generic Access Service
21:22:30.064 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
21:22:30.064 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
21:22:30.064 -> Configuring the Server Nordic Uart Service
21:22:30.064 -> Configuring the Server Device Information Service
21:22:30.064 -> Configuring the Server Cycle Power Service
21:22:30.096 -> Configuring the Server Cadence and Speed Service
21:22:30.096 -> Setting up the Server advertising payload(s)
21:22:30.096 -> Setting Appearance in Advertised data to [1152]
21:22:30.096 -> Setting DeviceName in Advertised data to [SIM32]
21:22:30.096 -> Server is advertising: CPS + Wahoo
21:22:30.096 -> Client Starts Scanning for Server Device with CPS + Wahoo!
21:22:30.133 -> Found advertising Peripheral with CPS enabled! See data:
21:22:30.133 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:22:30.133 -> Service Data:
21:22:30.133 -> UUID: 0x1826, Data: �
21:22:30.749 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:22:30.749 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:22:30.749 -> Now checking all Client Services and Characteristics!
21:22:30.749 -> If Mandatory Services Fail --> the Client will disconnect!
21:22:31.264 -> Client Generic Access: Found!
21:22:33.086 -> -> Client Reads Device Name: [KICKR CORE 287D]

hieronder een interessante. Ik kreeg connectie en nadat ik de laptop had opgestart en Zwift zover was had ik wel verbinding met Sim maar niet meer met Kickr.
21:22:40.347 ->
21:22:40.347 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
21:22:40.347 -> ------------------------ Version 01.4 --------------------------
21:22:40.347 -> SIM32
21:22:40.571 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
21:22:40.571 -> SSD1306 OLED display is running...
21:22:47.067 -> Motor Control Task Created and Active!
21:22:47.067 -> Simcline Basic Motor Funtions are working!!
21:22:47.336 -> Configuring the default Generic Access Service
21:22:47.336 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
21:22:47.336 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
21:22:47.336 -> Configuring the Server Nordic Uart Service
21:22:47.336 -> Configuring the Server Device Information Service
21:22:47.336 -> Configuring the Server Cycle Power Service
21:22:47.376 -> Configuring the Server Cadence and Speed Service
21:22:47.376 -> Setting up the Server advertising payload(s)
21:22:47.376 -> Setting Appearance in Advertised data to [1152]
21:22:47.376 -> Setting DeviceName in Advertised data to [SIM32]
21:22:47.376 -> Server is advertising: CPS + Wahoo
21:22:47.376 -> Client Starts Scanning for Server Device with CPS + Wahoo!
21:22:59.584 -> Found advertising Peripheral with CPS enabled! See data:
21:22:59.584 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:22:59.584 -> Service Data:
21:22:59.584 -> UUID: 0x1826, Data: �
21:23:03.800 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:23:03.800 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:23:03.800 -> Now checking all Client Services and Characteristics!
21:23:03.850 -> If Mandatory Services Fail --> the Client will disconnect!
21:23:04.202 -> Client Generic Access: Found!
21:23:05.065 -> -> Client Reads Device Name: [KICKR CORE 287D]
21:23:05.664 -> -> Client Reads Appearance: [0]
21:23:06.252 -> Client Device Information Service: Found!
21:23:06.919 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
21:23:08.934 -> -> Client Reads Serial Number: [221001365]
21:23:09.369 -> Client_CyclingPower_Service: Found!
21:23:10.332 -> Client_Wahoo_ControlPoint_Chr: Found!
21:23:10.832 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
21:23:12.270 -> Client_CP_Measurement_Chr: Found!
21:23:14.799 -> Client_CP_Feature_Chr: Found!
21:23:16.016 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
21:23:18.013 -> Client_CP_Location_Chr: Found!
21:23:18.283 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
21:23:18.356 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key Response: 550
21:23:20.116 -> client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
21:26:44.281 -> Server Connection Parameters -> Interval: [48] Latency: [0] Supervision Timeout: [960]
21:26:44.328 -> ESP32 Server connected to Client device with MAC Address: [D0:57:7B:EC:A0:BC] Conn Handle: [1]
21:26:44.328 -> Central (MyLaptop/Zwift) has to set CP/CSC/NUS CCCD Notify/Indicate (enable) and start....
21:26:44.813 -> Central (MyLaptop/Zwift) updated MTU to: [255] for connection ID: 1
21:26:45.982 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
21:26:45.982 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
21:26:46.202 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
21:26:48.930 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a63]
21:26:49.319 -> Central Updated CCCD --> Indicate Enabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:26:49.846 -> Central Updated CCCD --> Notify Enabled for Char: [0x2a5b]
21:27:21.415 -> Found advertising Peripheral with CPS enabled! See data:
21:27:21.458 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:27:21.458 -> Service Data:
21:27:21.458 -> UUID: 0x1826, Data: �
21:27:24.515 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
21:27:24.515 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
21:27:24.515 -> Now checking all Client Services and Characteristics!
21:27:24.515 -> If Mandatory Services Fail --> the Client will disconnect!
21:27:24.515 -> Client Generic Access: Found!
21:27:29.312 -> -> Client Reads Device Name: []
21:27:29.312 -> -> Client Reads Appearance: [0]
21:27:29.312 -> Client Device Information Service: Found!
21:27:29.312 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
21:27:29.312 -> -> Client Reads Manufacturer Name: []
21:27:29.312 -> -> Client Reads Serial Number: []
21:27:29.356 -> Client_CyclingPower_Service: Found!
21:27:29.356 -> Client_Wahoo_ControlPoint_Chr: Found!
21:27:29.356 -> Client_CP_Measurement_Chr: Found!
21:27:29.356 -> Client_CP_Feature_Chr: Found!
21:27:29.356 -> -> Client Reads Raw CP Feature bytes: [4] [ 00 00 00 00 ]
21:27:29.356 -> Client_CP_Location_Chr: Found!
21:27:29.356 -> -> Client Reads CP Location Sensor: Loc#: 0 Other
21:27:29.426 -> Client sends to Wahoo Control Point: [ 20 EE FC ] -> Unlock Command Key client_CyclingSpeedCadence_Service: Not Found! Not Mandatory
21:27:29.499 -> All Client (Trainer) Characteristics are Notify/Indicate Enabled!
21:27:29.539 -> Client Restarts Scanning for Server Device (Wahoo) with CPS!
21:27:42.126 -> Found advertising Peripheral with CPS enabled! See data:
21:27:42.126 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
21:27:42.126 -> Service Data:
21:27:42.126 -> UUID: 0x1826, Data: �
21:27:44.515 -> >>> Failed to reconnect Wahoo Trainer!
21:29:31.647 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a63]
21:29:31.687 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [a026e005-0a7d-4ab3-97fa-f1500f9feb8b]
21:29:31.687 -> Central Updated CCCD --> Notify/Indicate Disabled for Char: [0x2a5b]
21:29:31.687 -> ESP32 Server disconnected from Central (MyLaptop) Conn handle: [1] Mac Address: [D0:57:7B:EC:A0:BC]
21:29:31.687 -> --> ESP32 Server is advertising again!
21:29:31.712 -> Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
21:29:31.712 ->
21:29:31.712 -> Core 1 register dump:
21:29:31.712 -> PC : 0x400d8fc5 PS : 0x00060930 A0 : 0x800d439d A1 : 0x3ffc94b0
21:29:31.712 -> A2 : 0x00000000 A3 : 0x3f4108c6 A4 : 0x00000002 A5 : 0x00000001
21:29:31.712 -> A6 : 0x00000000 A7 : 0x3ffd028c A8 : 0x9b7b50e3 A9 : 0x9b7b50e3
21:29:31.712 -> A10 : 0x00000000 A11 : 0x3ffc94f4 A12 : 0x00064a1c A13 : 0x00000007
21:29:31.746 -> A14 : 0x3ffc9618 A15 : 0x3ffc9480 SAR : 0x0000001a EXCCAUSE: 0x0000001c
21:29:31.746 -> EXCVADDR: 0x0000001c LBEG : 0x40092e34 LEND : 0x40092e3f LCOUNT : 0x00000000
21:29:31.746 ->
21:29:31.746 ->
21:29:31.746 -> Backtrace: 0x400d8fc2:0x3ffc94b0 0x400d439a:0x3ffc94f0 0x400d4c6d:0x3ffc9530 0x400f1140:0x3ffc9560 0x40096d2a:0x3ffc9580
21:29:31.789 ->
21:29:31.789 ->
21:29:31.789 ->
21:29:31.789 ->
21:29:31.789 -> ELF file SHA256: 3ba613366
21:29:31.789 ->

@Fukkie-S
Copy link
Author

Hoi Jörgen, ik zou graag een nieuwe feather willen bestellen maar er zijn zoveel smaken dat ik twijfel welke ik moet kopen.
Kun je me van advies voorzien?

https://www.kiwi-electronics.com/nl/zoeken?search=feather&page=2

Alvast dank.

Groetjes Jan-Willem

@Berg0162
Copy link
Owner

Beste Jan-Willem,
Ik zie door de bomen het bos niet meer en kan de output dus absoluut niet beoordelen, omdat je niet systematisch test, althans dat niet deelt! Geen idee of de betrokken componenten zijn gereset bij aanvang van iedere output die je opstuurt en of die daarna in de goede volgorde, Trainer, Simcline en als laatste Zwift, opnieuw zijn opgestart. Er zijn 2 computers in het spel, een "gewone" PC (met Zwift) en een Laptop met Zwift? Dat zijn dus niet 3 maar 4 spelers (met ieder extra variabelen), die van invloed kunnen zijn op wat er gebeurt. Er zijn teveel variabelen die allemaal steeds wisselend veranderen in jouw, met mij gedeelde, output!
Als je echt wilt testen dan houd je alle variabelen constant op slechts een (1) na, de variabele die je wilt testen! En in dit geval volg je altijd dezelfde kritieke opstart procedure! Anders heb je geen vergelijkings materiaal.

Het zou mooi zijn als de laatste versie v14 getest werd op die manier!
Ik heb de website nog wat uitgebreid naar aanleiding van de kennelijke onduidelijkheid, Zie: https://github.com/Berg0162/simcline/tree/master/Wahoo%20Kickr#question-my-wahoo-kickr-is-variably-successful-in-connecting-with-the-simcline-20-with-esp32-board-and-zwift

Simcline en ERG Mode in Zwift, met welk doel? Heb je enig idee hoe ERG Mode werkt?

Ps: lesson learned, with the strange Zwift habid, think its better to ride workouts without Simcline.

@Fukkie-S
Copy link
Author

Fukkie-S commented Dec 10, 2024

Goedemorgen Jörgen,

Sorry dat ik de aangehouden procedure niet heb omschreven, het was laat en ik moest douchen / naar bed omdat mijn wekker 5:15u afloopt. Maar ik had me steeds aan de eerder omschreven opstartprocedure gehouden en op een gegeven moment gaan loggen met de Zwift laptop om te achterhalen wat er nu niet goed ging. Dit was van 19:23 tot 19:43u. Was toen al 10 minuten bezig met alleen de Sim en de Kickr om een goede verbinding te krijgen. Na de workout ben ik met de andere laptop gaan loggen en testen. Het was allemaal zeer wisselend en later zag ik waarschijnlijk de reden voor het moeilijke contact. De telefoon... Zwift stond daar nog open van de workout.🤦‍♂️🤦‍♂️🤦‍♂️

Ik ga vanavond de nieuwe code laden en testen. Mocht dit geen verbetering geven dan zou ik nog een nieuwe Arduino Feather V2 willen proberen met jou gewenste specificatie en test ik verder.

Betreft je opmerking over ERG, ik had de workout natuurlijk meteen buiten Sim om moeten doen. Achteraf is mooi wonen, dus beschouw aub de output gegevens van gisteren maar als niet verzonden. Ik had beter moeten weten en opletten. Excuus daarvoor.

Betreft je aanpassing voor Wahoo op de website: tiptop omschreven.

Misschien een aanvulling van de Wahoo support website. Bluetooth apparaten (smartphone) en WiFi routers dicht in de buurt hebben een negatieve invloed op het tot stand komen van de verbinding (2,4 band). En draaiende ventilatoren die dicht in de buurt staan ook?

Vast bedankt voor alles en je hoort van me.

Groetjes Jan-Willem

Ps. Dat Zwift open stond zag ik vanmorgen pas toen ik alle meldingen op mijn telefoon bekeek. Daar was gisterenavond geen tijd meer voor.

@Fukkie-S
Copy link
Author

Goedenavond Jörgen

Hier zijn de testresultaten. Niet bemoedigend moet ik zeggen.

Succes weer
VgJW

TEST 10-09-2024 V14_2

1e
Kickr aangezet, Sim gestart, zie het blauwe ledje continue branden en start de Zwift laptop. En zie het lampje van de Kickr weer gaan knipperen.
Blijkbaar geen services

18:52:32.691 -> |j Motor Control Task Created and Active!
18:52:39.089 -> Simcline Basic Motor Funtions are working!!
18:52:39.372 -> Configuring the default Generic Access Service
18:52:39.372 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
18:52:39.372 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
18:52:39.372 -> Configuring the Server Nordic Uart Service
18:52:39.372 -> Configuring the Server Device Information Service
18:52:39.372 -> Configuring the Server Cycle Power Service
18:52:39.406 -> Configuring the Server Cadence and Speed Service
18:52:39.406 -> Setting up the Server advertising payload(s)
18:52:39.406 -> Setting Appearance in Advertised data to [1152]
18:52:39.407 -> Setting DeviceName in Advertised data to [SIM32]
18:52:39.407 -> Server is advertising: CPS + Wahoo
18:52:39.407 -> Client Starts Scanning for Server Device with CPS + Wahoo!
18:52:39.440 -> Found advertising Peripheral with CPS enabled! See data:
18:52:39.440 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
18:52:39.440 -> Service Data:
18:52:39.440 -> UUID: 0x1826, Data: �
18:52:39.688 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
18:52:39.688 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
18:52:39.688 -> Now checking all Client Services and Characteristics!
18:52:39.725 -> If Mandatory Services Fail --> the Client will disconnect!
18:52:40.322 -> Client Generic Access: Found!
18:52:45.089 -> -> Client Reads Device Name: [KICKR CORE 287D]
18:52:46.188 -> -> Client Reads Appearance: [0]
18:52:46.789 -> Client Device Information Service: Found!
18:52:48.321 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
18:53:03.470 -> -> Client Reads Serial Number: [221001365]
18:53:05.571 -> Client_CyclingPower_Service: Found!
18:53:12.072 -> Mandatory Client_Wahoo_ControlPoint_Chr: Not Found!
18:53:12.072 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!
18:53:12.111 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!

2e
Kickr weer aangezet, Sim gestart.. Geen Seriele output.

3e
Kickr aan gezet, Sim gestart, geen reactie met Kickr (die knippert wel)
19:00:39.786 -> n �鴮 � 0 h
19:00:40.265 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:00:40.265 -> ------------------------ Version 01.4 --------------------------
19:00:40.265 -> SIM32
19:00:40.456 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:00:40.492 -> SSD1306 OLED display is running...
19:00:46.981 -> Motor Control Task Created and Active!
19:00:46.981 -> Simcline Basic Motor Funtions are working!!
19:00:47.248 -> Configuring the default Generic Access Service
19:00:47.248 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:00:47.248 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:00:47.248 -> Configuring the Server Nordic Uart Service
19:00:47.248 -> Configuring the Server Device Information Service
19:00:47.282 -> Configuring the Server Cycle Power Service
19:00:47.282 -> Configuring the Server Cadence and Speed Service
19:00:47.282 -> Setting up the Server advertising payload(s)
19:00:47.282 -> Setting Appearance in Advertised data to [1152]
19:00:47.282 -> Setting DeviceName in Advertised data to [SIM32]
19:00:47.282 -> Server is advertising: CPS + Wahoo
19:00:47.282 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:00:52.849 -> Found advertising Peripheral with CPS enabled! See data:
19:00:52.849 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:00:52.849 -> Service Data:
19:00:52.849 -> UUID: 0x1826, Data: �
19:00:53.596 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

4e
Kickr aangezet, Sim gestart, nu de trappers rondgedraaid. Verbinding kwam en sloot weer af
19:03:34.679 ->
19:03:35.580 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:03:35.580 -> ------------------------ Version 01.4 --------------------------
19:03:35.580 -> SIM32
19:03:35.769 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:03:35.807 -> SSD1306 OLED display is running...
19:03:42.295 -> Motor Control Task Created and Active!
19:03:42.295 -> Simcline Basic Motor Funtions are working!!
19:03:42.546 -> Configuring the default Generic Access Service
19:03:42.546 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:03:42.578 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:03:42.578 -> Configuring the Server Nordic Uart Service
19:03:42.578 -> Configuring the Server Device Information Service
19:03:42.578 -> Configuring the Server Cycle Power Service
19:03:42.578 -> Configuring the Server Cadence and Speed Service
19:03:42.578 -> Setting up the Server advertising payload(s)
19:03:42.578 -> Setting Appearance in Advertised data to [1152]
19:03:42.615 -> Setting DeviceName in Advertised data to [SIM32]
19:03:42.616 -> Server is advertising: CPS + Wahoo
19:03:42.616 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:04:01.696 -> Found advertising Peripheral with CPS enabled! See data:
19:04:01.696 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:04:01.696 -> Service Data:
19:04:01.696 -> UUID: 0x1826, Data: �
19:04:09.695 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:04:09.695 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:04:09.695 -> Now checking all Client Services and Characteristics!
19:04:09.695 -> If Mandatory Services Fail --> the Client will disconnect!
19:04:10.645 -> Client Generic Access: Found!
19:04:12.697 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:04:13.945 -> -> Client Reads Appearance: [0]
19:04:14.646 -> Client Device Information Service: Found!
19:04:16.878 -> -> Client Reads Manufacturer Name: [Wahoo Fitness]
19:04:25.760 -> -> Client Reads Serial Number: [221001365]
19:04:26.924 -> Client_CyclingPower_Service: Found!
19:04:37.730 -> Client_Wahoo_ControlPoint_Chr: Found!
19:04:40.234 -> Client_Wahoo_ControlPoint_Chr: xTask Write-With-Response created!
19:04:50.530 -> Client_CP_Measurement_Chr: Found!
19:05:03.428 -> Mandatory Client_CP_Feature_Chr: Not Found!
19:05:03.428 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!
19:05:03.428 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!

5e
Kickr aangezet, daarna sim en idem reactie als hiervoor
19:07:42.244 -> ô~/
19:07:42.793 -> ESP32 NimBLE SIMCLINE supporting: CPS + Wahoo and CSC (optional)
19:07:42.840 -> ------------------------ Version 01.4 --------------------------
19:07:42.840 -> SIM32
19:07:43.008 -> ESP32 internally Got persistent storage from: /littlefs/PRSdata -> Max: 21500 Min: 19500 Perc.: 100 Displ.: 2
19:07:43.042 -> SSD1306 OLED display is running...
19:07:49.544 -> Motor Control Task Created and Active!
19:07:49.544 -> Simcline Basic Motor Funtions are working!!
19:07:49.808 -> Configuring the default Generic Access Service
19:07:49.808 -> Successfully Set Generic Access Appearance Chr value to: [1152] Generic Cycling
19:07:49.808 -> Successfully Set Generic Access Device Name Chr value to: [SIM32]
19:07:49.808 -> Configuring the Server Nordic Uart Service
19:07:49.808 -> Configuring the Server Device Information Service
19:07:49.808 -> Configuring the Server Cycle Power Service
19:07:49.808 -> Configuring the Server Cadence and Speed Service
19:07:49.845 -> Setting up the Server advertising payload(s)
19:07:49.845 -> Setting Appearance in Advertised data to [1152]
19:07:49.845 -> Setting DeviceName in Advertised data to [SIM32]
19:07:49.845 -> Server is advertising: CPS + Wahoo
19:07:49.845 -> Client Starts Scanning for Server Device with CPS + Wahoo!
19:07:50.109 -> Found advertising Peripheral with CPS enabled! See data:
19:07:50.109 -> Name: KICKR CORE 287D, Address: e5:39:1a:8c:c4:cf, serviceUUID: 0x1818
19:07:50.109 -> Service Data:
19:07:50.109 -> UUID: 0x1826, Data: �
19:07:52.176 -> Client Connection Parameters -> Interval: [40] Latency: [0] Supervision Timeout: [256]
19:07:52.176 -> ESP32 Client connects to Server device with Name: [KICKR CORE 287D] MAC Address: [E5:39:1A:8C:C4:CF] Handle: [0] MTU: [72]
19:07:52.176 -> Now checking all Client Services and Characteristics!
19:07:52.223 -> If Mandatory Services Fail --> the Client will disconnect!
19:07:52.811 -> Client Generic Access: Found!
19:07:53.907 -> -> Client Reads Device Name: [KICKR CORE 287D]
19:07:56.326 -> -> Client Reads Appearance: [0]
19:07:59.160 -> Client Device Information Service: Found!
19:08:13.208 -> -> Client Reads Manufacturer Name: []
19:08:13.208 -> Mandatory Cycling Power Service: Not Found!
19:08:13.248 -> Client Disconnected from Server device with Name: [KICKR CORE 287D] Mac Address: [E5:39:1A:8C:C4:CF]!
19:08:13.248 -> >>> Failed to connect Wahoo Trainer! Reset ESP32 and try again!

@Berg0162
Copy link
Owner

Beste Jan-Willem,
Ik twijfel er niet aan dat de Simcline software v14 in 9 van de 10 keer, in gecontroleerde omstandigheden, connect met de Wahoo! Dat kan ik aantonen in mijn 100% gecontroleerde test omgeving! De kritische formulering is: in gecontroleerde omstandigheden. De output laat zien dat, tijdens het connectie proces Simcline-Wahoo, er (in jouw situatie) een derde partij is die steeds het connectie proces Simcline-Wahoo verstoort, nog voordat dit proces geheel is doorlopen. NB Je hebt eerder laten zien dat connectie geen probleem was in gecontroleerde omstandigheden en met de juiste procedure!! Dus ga er maar vanuit dat de Simcline v14 code gewoon goed werkt!!

5e poging. Eerst Kickr en daarna Sim. En weer succes!
8e poging. Alles uit en eerst Kickr aan en daarna Sim. Vrijwel meteen een fix.

Kortom het uitgangspunt moet zijn: Oh, Simcline connect niet met de Wahoo en/of Zwift, wat doe IK verkeerd (procedure) of welke omstandigheden in MIJN ruimte kunnen dit veroorzaken?

@Fukkie-S
Copy link
Author

Hoi Jörgen,

Kort door de bocht zal je ongetwijfeld gelijk hebben. Maar ik had gisteren tijdens testen van de laatste versie 14 geen Zwift laptop aan en ook geen telefoon in de buurt. Ik wil het probleem graag oplossen maar hoe kan ik controleren wat het pairingsproces tussen Kickr en Sim steeds verstoord? Ik weet vanuit de Sim Compagnion app dat er meer Mac adressen signaal uitzenden. Maar welke zit ons dan in de weg?

Ik doe de opstart procedure consequent door eerst Kickr te starten en daarna Sim. En zonder laptop aan de Sim voor output kan ik eigenlijk aan het knipperende blauwe lanpje al zien dat er geen fix is en dat ik de procedure opnieuw kan doen.

Als ik dan een gemiddelde score krijg van 5 uit tien en daarna ook nog eens soms de verbinding verlies..

Tja, dan lijkt er iets mis met de hardware of met de software. 🤷‍♂️

Maar goed. Als dit het is, dan is dit wat het is, Jörgen, dan waren het leerzame weken.

Groetjes Jan-Willem

@Berg0162
Copy link
Owner

Beste Jan-Willem,
Dat klinkt wel erg mismoedig!
Een voorzetje dan! Breng je setup terug tot 2 componenten (Trainer en Simcline) en een omgeving die je volledig controleert!
Dat betekent elke computer met Zwift in de ruimte -> Power OFF (stekker eruit!)
Je telefoon heeft een Join Workout Player (direct een work-out starten vanuit de app) en maakt direct een koppeling met:
Indoor trainer, Vermogensmeter en Hartslagmeter! Ongetwijfeld met Pairing/Bonding dus als een van die devices in de buurt is....Bingo! Zo gebruikersvriendelijk!
Moderne telefoons hebben heel krachtige BLE/WIFI chips (in huis een bereik van 6 - 10 meter!) -> Telefoon gaat in vliegtuigstand of helemaal Power OFF (alleen dan mag die in de kamer blijven)!

  1. Start de Trainer en wacht tot die gesettled is! Ze hebben allemaal tijd nodig, en er is vast een lichtje dat dat aangeeft....
  2. Start Simcline en zie of er een connectie tot stand komt... (de blauwe Led van de Feather knippert niet meer)
  3. Reset de Simcline en wacht het connectie resultaat af. Herhaal deze stap 3)... Tot je er vertrouwen in hebt dat Simcline en Wahoo elkaar kunnen vinden.

In de volgende stap ga je een (1) component toevoegen namelijk de Laptop om Serial Output op het scherm te kunnen weergeven, als er een Zwift versie opstaat dan mag die absoluut NIET opgestart worden!
Herhaal nu stap 3)...Tot je er vertrouwen in hebt dat Simcline en Wahoo elkaar kunnen vinden.
Volgende stap: een component erbij .... Enzovoort, systematisch en stap voor stap! Dan moet je er toch achter komen wie de boosdoener is....

@Fukkie-S
Copy link
Author

Goedenavond Jörgen,

Vast een positieve bericht. Ik heb met je advies nu steeds een snelle verbinding met de Kickr. Heel af en toe moet ik de Sim een keer resetten, maar omdat ik nu een drukknopje aan de buitenkant van de box heb zitten gaat dat ook makkelijker.
De procedure nu:

  • Stroom op de Kickr. Even wachten,
  • Sim aanzetten en de trapper een slinger geven. Wachten tot de led van de Kickr constant brandt
    -Laptop starten en Zwift activeren.
    -Daarna met pairen kiezen voor Sim en trappen zodat ik vermogen zie verschijnen en als laatste de weerstand op Sim zetten. Tot nu toe steeds de telefoon op vliegtuig stand gezet tijdens het pairen. Die lijkt de grootste concurrent geweest te zijn tijdens het pairingsproces.

Morgenochtend zal ik na de workout 10x een repeterende starts uitvoeren in de bovenstaande procedure en daarna de resultaten delen. Ik heb inmiddels realtherm geïnstalleerd en geleerd hoe ik de output kan capturen in een tekst file. Dit scheelt een heleboel ge-emmer met resultaten uit IDE output te halen.

Groetjes Jan-Willem

@Fukkie-S
Copy link
Author

13-12-2024 Test V14
Vandaag 12 x een koude start gedaan. Geen smartphone in de buurt of op vliegtuigstand, geen ventilatoren aan.
P1 8:43u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt- alles uitgezet
P2 8:47u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt- alles uitgezet
P3 8:51u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt- alles uitgezet
P4 8:56u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en verbinding verloren. P mislukt
Dacht bijdehand te zijn door alleen Zwift af te sluiten en Sim te resetten maar Kickr bleef aan de laptop hangen. Daarna weer alles uitgezet en opnieuw begonnen.
P5 9:07u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt- alles uitgezet
P6 9:12u Kickr aan, 30s wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt- alles uit gezet.
Zo meteen een workout doen zonder Sim32 en daarna de test nog eens herhalen.

De workout met de ANt+ dongle afgewerkt en vanmiddag weer verder getest met Sim32.
P7 14:03u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt
P8 14:07u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt
P9 14:12u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop laten staan met bluetooth uit, bluetooth aangezet, Zwift stond nog open en gekoppeld met Zwift. P gelukt
P10 14:18u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop stond nog aan met bluetooth uit, bluetooth aangezet, Zwift gestart, gekoppeld maar Sim reageerde niet omhoog/omlaag. P mislukt - alles uit gezet
P1114:21u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt
P12 14:25u Kickr aan, ff wachten, Sim aan, fix gemaakt, laptop aangezet, Zwift gestart en gekoppeld met Zwift. P gelukt

Conclusie: bij verbindingsproblemen tussen Sim32 en Wahoo Kickr, zorg dat er geen device met bluetooth in de buurt ingeschakeld is waar de Wahoo Kickr eerder mee heeft gepaired.

Dan protocol volgen door eerst Wahoo Kickr op te starten, even te wachten, dan Sim32 in te schakelen en door de zelfcheck te laten gaan. Dan checken op de Wahoo Kickr of het blauwe lampje aangeeft dat deze is gekoppeld met de Sim32. Daarna de device opstarten waar de Zwift app op staat en Zwift oplaten starten. In het pairmenu verbinding maken met Sim32 en evt checken of er Watt output is, daarna de weerstand koppelen aan Sim32. Deze reageert meteen door enkele graden te stijgen en de weerstand te verzwaren. Daarna een route uitzoeken en Zwiften maar.

Heel erg bedankt voor je geduld, Jörgen. Het was voor mij als 62 jarige een hele leerzame oefening en ik ben enorm blij met het eindresultaat.

Ik heb verder geen vragen meer.

Groetjes en nog een fijn weekend,

Jan-Willem

@Fukkie-S
Copy link
Author

20241213_141251.jpg

@Fukkie-S
Copy link
Author

20241213_141244.jpg

@Fukkie-S
Copy link
Author

20241213_141420.jpg

@Berg0162
Copy link
Owner

Best Jan-Willem,
Ik ben opgelucht dat het je nu is gelukt om een en ander te laten werken! Het is toch wel zuur als je aan zo'n project begint en het gaat niet werken.... Petje af voor je volhardendheid! Leuk om die foto's te zien van je opstelling. Alle devices met Zwift erop (of Join) zijn een gevaar voor een voorspoedig verloop van het Simcline-Wahoo-connectie-proces. Afgelopen dagen heb ik tijd besteed aan de overgang van NimBLE 1.43 -> 2.0, veel werk(!) en steeds weer testen of het allemaal nog wel werkt...
Ik ben allereerst begonnen met de Wahoo trainer software, omdat die relatief "simpel" is en omdat het me de gelegenheid gaf de werking van de verschillende componenten nog eens goed te bekijken of er geen verbeter puntjes waren...
De eerste 2.0 versies (van Server en Client) worden ge-Upload naar Github. Jammer dat 1.4.3 en 2.0 elkaar in de weg zitten.
Groeten en fijn weekend!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants