Berg0162 / simcline

Simulation of Changing Road Inclination for Indoor Cycling
GNU General Public License v3.0
29 stars 7 forks source link

Testing Simcline with FTMS v01 #5

Closed cherryphilip74 closed 1 year ago

cherryphilip74 commented 1 year ago

New section for Tread testing Simcline with FTMS v01 For a fast feedback (if you want) I created a private group in telegram (here link https://t.me/+FBKaD3Kue2Q5MzM0). I will delete the link once time you joined it.

Can I close the previous Trainer Elite code section?

Berg0162 commented 1 year ago

Great! Sorry, I am not a Telegram user... Yes, you can close the previous Issue! You will be hearing from me! Regards.

Op ma 5 dec. 2022 10:28 schreef cherryphilip @.***>:

New section for Tread testing Simcline with FTMS v01 For a fast feedback (if you want) I created a private group in telegram (here link https://t.me/+FBKaD3Kue2Q5MzM0). I will delete the link once time you joined it.

Can I close the previous Trainer Elite code section?

— Reply to this email directly, view it on GitHub https://github.com/Berg0162/simcline/issues/5, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANS5LSUKNWWFSENMQXZYEV3WLWYS3ANCNFSM6AAAAAASUBEYI4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

le-joebar commented 1 year ago

Hello,

I have been busy reading you for several days. I have a new Zwift Hub. I also do development with ESP32. So I am familiar with this environment. If I order a Bluefruit NRF52, would you be willing to try developing for this trainer? I don't have a BuethootBLE entry on my desktop. Is it a problem? Currently my config is a Desktop ANT+, Zwift companion. So my setup is: Pc connected to the Zwift Hub in Ant+ and bluetooth is free. Thank you very much for your answer. I have one more question!
Does the FTMS trainer work if I connect in BluethootBLe on the Zwift Companion or just connect the trainer by Ant+ to the PC and via the BluethootBLe on the Simclim via the client?

Joel

Berg0162 commented 1 year ago

Dear Joel, I have to look into your questions more carefully! I simply do not have all the answers right now! The MITM solution we work on is BLE only (see my explanatory notes!). Ant+ is NOT playing any role in the design! I will be back! Regards, Jörgen.

le-joebar commented 1 year ago

Thanks Jörghen,

I'm wait to see.

Best regard

Joel

Le lun. 5 déc. 2022, 16:15, Jörgen van den Berg @.***> a écrit :

Dear Joel, I have to look into your questions more carefully! I simply do not have all the answers right now! The MITM solution we work on is BLE only (see my explanatory notes!). Ant+ is NOT playing any role in the design! I will be back! Regards, Jörgen.

— Reply to this email directly, view it on GitHub https://github.com/Berg0162/simcline/issues/5#issuecomment-1337555617, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOYQKUJ2KXGCBEIKHAMVKOTWLYBKVANCNFSM6AAAAAASUBEYI4 . You are receiving this because you commented.Message ID: @.***>

Berg0162 commented 1 year ago

Dear Joel If I order a Bluefruit NRF52, would you be willing to try developing for this trainer?

It is virtually impossible to develop specifically for all trainer brands. TACX and Wahoo are market leaders with a very large installed base and most of their smart trainers should work with the respective Simcline code versions! FTMS enabled Trainers is another large group of trainers that most likely will work (after this development) with the Simcline FTMS code version. No promises, No garanties! According to DCRainmaker the Zwift Hub (see review on his site) has FTMS implemented. So in principle your Zwift Hub should work with the present FTMS code...after succesfull development! There is only one way to be sure: testing is knowing! No promises, No garanties!

I don't have a BuethootBLE entry on my desktop. Is it a problem? Currently my config is a Desktop ANT+, Zwift companion. So my setup is: Pc connected to the Zwift Hub in Ant+ and bluetooth is free.

FTMS is only working over BLE (by design: bluetooth service) and with BLE enabled PC/Laptop/Tablet at one end and the FTMS enabled trainer at the other end. The Simcline with MITM code is in between. So if you do not have a BLE enabled device of the type PC/Laptop/Tablet (running the control software, Zwift/Rouvy/et cetera), it is never working with FTMS!

I have one more question! Does the FTMS trainer work if I connect in BluethootBLe on the Zwift Companion or just connect the trainer by Ant+ to the PC and via the BluethootBLe on the Simclim via the client?

As far as I understand what you suggest, the answer is simple: no that will not end up in a working Simcline that catches Grade info from Zwift. The reason is that there can be only one controller (Training/Game app) that drives the trainer. That controller is working over ANT+ or (that is an XOR!) over BLE using FTMS.

Regards, Jörgen.

cherryphilip74 commented 1 year ago

Have you considered using a D1 Mini NodeMCU ESP32 WiFi and Bluetooth BLE? Link here: https://amzn.eu/d/2XgwXKY

ESP32 and nRF52 can do WiFi, Bluetooth Classic, and Bluetooth Low Energy (BLE), so seem are equivalent. Are there technical limitation can't be applied to ESP32? ESP32 is cheaper than nRF2 also low dimension

Best Regards Filippo

le-joebar commented 1 year ago

Dear Jörghen,

Ok I understand. I will order a BluethootLE dongle for the PC. I ordered the NRF I will do a series of tests as soon as I receive it.

Joel

Berg0162 commented 1 year ago

Dear Joel, Let me hear what your experience is using the Client, Server and Bridge test codes with a Zwift hub at the other side! Best wishes, Jörgen.

Berg0162 commented 1 year ago

Dear Filippo, I have uploaded the first version of fully working code to run an operational Simcline with all bells and whistles, that supports FTMS enabled trainers: "Simcline_FTMS_v01" Be careful to prep the code first in accordance with the mechanical specs of your Simcline setup:

// Your hardware MAC/DEVICE ADDRESSES // Laptop/Desktop Device Address that runs Zwift, in printed format: [00:01:02:03:04:05] // Little Endian: in reversed order !!!!

define LAPTOPADDRESS {0x05,0x04,0x03,0x02,0x01,0x00}

// Trainer FTMS enabled Device Address, in printed format: [00:01:02:03:04:05] // Little Endian: in reversed order !!!!

define TRAINERADDRESS {0x05,0x04,0x03,0x02,0x01,0x00}

//------------ 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)

// 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

// 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 265 // VL6180X highest value top microswitch activated to mechanically stop operation

define MAXPOSITION 535 // VL6180X lowest value bottom microswitch activated to mechanically stop operation

Good luck with the first run for real! Jörgen.

cherryphilip74 commented 1 year ago

Dear Jörgen! I tried today the first version of simcline with FTMS. Simply Wow Indoor apps support: Zwift, Rouvy

                           **Booting phase and pairing**

photo_2022-12-07_19-46-23

                           **Motor functionality error**

photo_2022-12-07_19-46-53

                           **No Rouvy app started**

photo_2022-12-07_19-47-22

                           **Paired with Direto Sim trainer**

photo_2022-12-07_19-49-29

                           **Rouvy app ready to ride**

photo_2022-12-07_19-50-29 photo_2022-12-07_19-50-47

                           **Rouvy app and Direto Sim trainer disconnected**

photo_2022-12-07_19-51-28 photo_2022-12-07_19-51-38

Big varation of grade percentage between SimCline and Zwift, while those variation is low with SimCline and Rouvy. Details reported on serial monitor see "new grade percentage section", grade value data from app reported inside << grade>>

                           **SERIAL MONITOR**

18:51:20.421 -> <<-- SIMCLINE supporting: CPS, CSC and FTMS -->> 18:51:20.421 -> ------------------------- Version 01.0 ------------------------- 18:51:20.421 -> Simcline equiped with: Feather nRF52832 18:51:20.469 -> Feather internal Get & Set PRSdata to Max: 21600 Min: 19300 Perc.: 100 Displ.: 2 18:51:20.469 -> SSD1306 OLED display is running...

                           << Did you disable the basic motor functionality? >>

18:51:24.343 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!

                           << any moviment >>

18:51:24.343 -> FTM Service and Chars are 'initialized' 18:51:24.343 -> CP Service and Chars are 'initialized' 18:51:24.343 -> CSC Service and Chars are 'initialized' 18:51:24.343 -> Generic Access Service and Chars are 'initialized' 18:51:24.343 -> Device Information Service and Chars are 'initialized' 18:51:24.343 -> Start Client-side Scanning for CPS, CSC and FTMS! 18:51:24.719 -> Found Advertising Peripheral with FTMS, CPS and CSC! See Raw data packet: 18:51:24.719 -> Timestamp Addr Rssi Data 18:51:24.719 -> 000004280 EE:18:4B:1F:9F:3E -64 03-19-85-04-02-01-06-05-02-26-18-18-18-06-16-26-18-01-20-00-0A-09-44-49-52-45-54-4F-20-58-52 18:51:24.857 -> Feather nRF52 (Central) connected to Trainer (Peripheral) device: [DIRETO XR] MAC Address: EE:18:4B:1F:9F:3E 18:51:24.857 -> Now checking all mandatory Client Services and Characteristics! 18:51:24.857 -> Discovering Client Cycling Power (CP) Service ... Found it! CPS Max Payload: 20 Data Length: 27 18:51:24.904 -> Discovering Client CP Measurement characteristic ... Found it! 18:51:24.996 -> Discovering Client CP Control Point characteristic ... Found it! 18:51:25.091 -> Discovering Client CP Feature characteristic ... Found it! 18:51:25.229 -> -> Client Reads Raw CP Feature bytes: [4] [ 0D 02 00 00 ] 18:51:25.229 -> Pedal power balance supported 18:51:25.229 -> Wheel revolution data supported 18:51:25.229 -> Crank revolution data supported 18:51:25.229 -> Offset compensation supported 18:51:25.229 -> Discovering Client CP Sensor Location characteristic ... Found it! 18:51:25.276 -> -> Client Reads CP Location Sensor: Loc#: 0 Other 18:51:25.276 -> Discovering Cycling Speed and Cadence (CSC) Service ... Found it! CSCS Max Payload: 20 Data Length: 27 18:51:25.322 -> Discovering Client CSC Measurement CHR ... Found it! 18:51:25.415 -> Discovering Client CSC Location CHR ... Found it! 18:51:25.462 -> -> Client Reads CSC Location Sensor: Loc#: 0 Other 18:51:25.462 -> Discovering Client CSC Feature CHR ... Found it! 18:51:25.554 -> -> Client Reads Raw CSC Feature bytes: [2] [ 03 00 ] 18:51:25.554 -> Wheel rev supported 18:51:25.554 -> Crank rev supported 18:51:25.601 -> Found Client Generic Access 18:51:25.694 -> Found Device Name: [DIRETO XR] 18:51:25.742 -> Found Appearance: [1157] 18:51:25.790 -> Found Client Device Information: 18:51:25.882 -> Client Manufacturer: Elite 18:51:26.064 -> Client Serial Number: 52687 18:51:26.064 -> Discovering Client Fitness Machine (FTM) Service ... Found it! FTMS Max Payload: 20 Data Length: 27 18:51:26.110 -> Discovering Client FTM Feature Characteristic ... Found it! 18:51:26.201 -> -> Client Reads Raw FTM Feature bytes: [8] [ 86 50 00 00 0C E0 00 00 ] 18:51:26.201 -> Discovering Client FTM Training Status Characteristic ... Found it! 18:51:26.292 -> Discovering Client FTM Supported Resistance Level Range Characteristic ... Found it! 18:51:26.431 -> -> Client Reads Raw FTM Supported Resistance Level Range bytes: [6] [ 00 00 C8 00 01 00 ] 18:51:26.431 -> Discovering Client FTM Supported Power Range Characteristic ... Found it! 18:51:26.527 -> -> Client Reads Raw FTM Supported Power Range bytes: [6] [ 00 00 A0 0F 01 00 ] 18:51:26.527 -> Discovering Client FTM Indoor Bike Data Characteristic ... Found it! 18:51:26.619 -> Discovering Client FTM Control Point Characteristic ... Found it! 18:51:26.759 -> Discovering Client FTM Status Characteristic ... Found it! 18:51:27.177 -> Configuring the Server Device Information Service 18:51:27.177 -> Configuring the Server Cycle Power Service 18:51:27.177 -> Configuring the Server Cadence and Speed Service 18:51:27.177 -> Configuring the Server Fitness Machine Service 18:51:27.224 -> Configuring the Server NUS Service 18:51:27.224 -> Setting up the Server-side advertising payload(s) 18:51:27.224 -> Setting Server Device Name to: [Sim DIRETO] 18:51:27.224 -> Setting Server Appearance to: [1157] 18:51:27.224 -> Server-side is CPS, CSC and FTMS advertising! 18:51:27.972 -> Feather nRF52 (Peripheral) connected to Central device: [DESK-CHERRYPHIL] MAC Address: 40:23:43:A5:FE:78 18:51:27.972 -> Enabled 'Notify' for Client CP Measurement values 18:51:28.020 -> Enabled 'Indicate' for Client CP ControlPoint Responses 18:51:28.020 -> Enabled 'Notify' for Client CSC Measurement values 18:51:28.020 -> Enabled 'Notify' for Client FTM TrainingStatus values 18:51:28.066 -> Enabled 'Notify' for Client FTM IndoorBikeData values 18:51:28.066 -> Enabled 'Indicate' for Client FTM ControlPoint Response Messages 18:51:28.112 -> Enabled 'Notify' for Client FTM Status values 18:51:28.623 -> Waiting for Central (Zwift) to set CCCD Notify/Indicate (enable) and start.... 18:51:30.341 -> Client- and Server-side are Up and Running! 18:51:31.038 -> Central Device Updated CCCD to: [1] --> Server CP: Measurement 'Notify' enabled 18:51:31.504 -> Central Device Updated CCCD to: [1] --> Server CSC: Measurement 'Notify' enabled 18:51:32.812 -> Central Device Updated CCCD to: [1] --> Server FTM: IndoorBikeData 'Notify' enabled 18:51:34.249 -> Central Device Updated CCCD to: [1] --> Server FTM: Status 'Notify' enabled

                            **<< grade shown from Zwift app >>**

18:51:43.376 -> New Grade percentage: 1.2 % RawgradeValue: 20124 << -0.2 % >> 18:52:04.693 -> New Grade percentage: 1.0 % RawgradeValue: 20102 << -0.2 % >> 18:52:05.617 -> New Grade percentage: -0.1 % RawgradeValue: 19990 << -1 % >> 18:52:57.493 -> New Grade percentage: -0.1 % RawgradeValue: 19989 << -1 % >>
18:53:00.730 -> New Grade percentage: -0.1 % RawgradeValue: 19988 << -1 % >>
18:53:01.660 -> New Grade percentage: -0.1 % RawgradeValue: 19987 << -1 % >>
18:53:03.377 -> New Grade percentage: -0.1 % RawgradeValue: 19986 << -1 % >>
18:53:04.355 -> New Grade percentage: -0.2 % RawgradeValue: 19985 << -1 % >>
18:53:05.418 -> New Grade percentage: -0.2 % RawgradeValue: 19983 << -1 % >>
18:53:06.298 -> New Grade percentage: -0.2 % RawgradeValue: 19982 << -1 % >>
18:53:07.273 -> New Grade percentage: -0.2 % RawgradeValue: 19980 << -1 % >>
18:53:08.152 -> New Grade percentage: -0.2 % RawgradeValue: 19978 << -1 % >>
18:53:09.133 -> New Grade percentage: -0.2 % RawgradeValue: 19976 << -1 % >>
18:53:10.109 -> New Grade percentage: -0.3 % RawgradeValue: 19973 << -1 % >>
18:53:11.010 -> New Grade percentage: -0.3 % RawgradeValue: 19970 << -1 % >>
18:53:11.901 -> New Grade percentage: -0.3 % RawgradeValue: 19967 << -1 % >>
18:53:12.788 -> New Grade percentage: -0.4 % RawgradeValue: 19963 << -1 % >>
18:53:13.714 -> New Grade percentage: -0.4 % RawgradeValue: 19958 << -1 % >>
18:53:14.592 -> New Grade percentage: -0.5 % RawgradeValue: 19951 << -2 % >> 18:53:15.520 -> New Grade percentage: -0.6 % RawgradeValue: 19942 << -2 % >>
18:53:16.408 -> New Grade percentage: -0.7 % RawgradeValue: 19928 << -2 % >>
18:53:17.293 -> New Grade percentage: -0.9 % RawgradeValue: 19915 << -3 % >>
18:53:18.268 -> New Grade percentage: -0.9 % RawgradeValue: 19909 << -3 % >>
18:53:19.200 -> New Grade percentage: -0.9 % RawgradeValue: 19912 << -3 % >>
18:53:20.078 -> New Grade percentage: -0.8 % RawgradeValue: 19920 << -2 % >>
18:53:21.051 -> New Grade percentage: -0.7 % RawgradeValue: 19928 << -2 % >> 18:53:21.984 -> New Grade percentage: -0.6 % RawgradeValue: 19935 << -2 % >> 18:53:22.861 -> New Grade percentage: -0.6 % RawgradeValue: 19942 << -2 % >> 18:53:23.836 -> New Grade percentage: -0.5 % RawgradeValue: 19946 << -2 % >> 18:53:24.763 -> New Grade percentage: -0.5 % RawgradeValue: 19950 << -2 % >> 18:53:25.787 -> New Grade percentage: -0.5 % RawgradeValue: 19953 << -2 % >> 18:53:26.673 -> New Grade percentage: -0.4 % RawgradeValue: 19955 << -1 % >> 18:53:27.563 -> New Grade percentage: -0.4 % RawgradeValue: 19958 << -1 % >>
18:53:28.489 -> New Grade percentage: -0.4 % RawgradeValue: 19959 << -1 % >>
18:53:30.118 -> New Grade percentage: -0.4 % RawgradeValue: 19960 << -1 % >>
18:53:31.880 -> New Grade percentage: -0.4 % RawgradeValue: 19961 << -1 % >>
18:53:35.048 -> New Grade percentage: -0.4 % RawgradeValue: 19962 << -1 % >>
18:53:38.218 -> New Grade percentage: -0.4 % RawgradeValue: 19963 << -1 % >>
18:53:42.909 -> New Grade percentage: -0.4 % RawgradeValue: 19964 << -1 % >>
18:53:49.111 -> New Grade percentage: -0.3 % RawgradeValue: 19965 << -1 % >>
18:53:55.305 -> New Grade percentage: -0.3 % RawgradeValue: 19966 << -1 % >>
18:54:00.679 -> New Grade percentage: -0.3 % RawgradeValue: 19967 << -1 % >>
18:54:03.888 -> New Grade percentage: -0.3 % RawgradeValue: 19968 << -1 % >> 18:54:06.262 -> New Grade percentage: -0.3 % RawgradeValue: 19969 << -1 % >> 18:54:08.680 -> New Grade percentage: -0.3 % RawgradeValue: 19970 << -1 % >>
18:54:12.550 -> New Grade percentage: -0.3 % RawgradeValue: 19971 << -1 % >>
18:54:17.247 -> New Grade percentage: -0.3 % RawgradeValue: 19972 << -1 % >>
18:54:25.900 -> New Grade percentage: 0.6 % RawgradeValue: 20063 << -2 % >> 18:54:34.826 -> Server disconnected from Central (Laptop): [DESK-CHER], reason: [13] 18:54:34.826 -> Server is advertising again! 18:55:12.416 -> Feather nRF52 (Peripheral) connected to Central device: [DESK-CHERRYPHIL] MAC Address: 40:23:43:A5:FE:78 18:55:12.416 -> Enabled 'Notify' for Client CP Measurement values 18:55:12.416 -> Enabled 'Indicate' for Client CP ControlPoint Responses 18:55:12.462 -> Enabled 'Notify' for Client CSC Measurement values 18:55:12.462 -> Enabled 'Notify' for Client FTM TrainingStatus values 18:55:12.510 -> Enabled 'Notify' for Client FTM IndoorBikeData values 18:55:12.556 -> Enabled 'Indicate' for Client FTM ControlPoint Response Messages 18:55:12.556 -> Enabled 'Notify' for Client FTM Status values 18:55:13.115 -> Waiting for Central (Zwift) to set CCCD Notify/Indicate (enable) and start.... 18:55:15.445 -> Central Device Updated CCCD to: [1] --> Server CP: Measurement 'Notify' enabled 18:55:15.537 -> Central Device Updated CCCD to: [2] --> Server CP: ControlPoint 'Indicate' enabled 18:55:15.722 -> Central Device Updated CCCD to: [1] --> Server CSC: Measurement 'Notify' enabled 18:55:16.140 -> Central Device Updated CCCD to: [1] --> Server FTM: IndoorBikeData 'Notify' enabled 18:55:16.373 -> Central Device Updated CCCD to: [1] --> Server FTM: Status 'Notify' enabled

                            **<< grade shown from Rouvy app >>**

18:56:30.728 -> New Grade percentage: 1.0 % RawgradeValue: 20099 18:56:40.900 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:56:51.126 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:57:01.173 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:57:11.309 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:57:21.338 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:57:31.554 -> New Grade percentage: -0.2 % RawgradeValue: 19984 << -0.2 % >> 18:57:33.528 -> New Grade percentage: 6.2 % RawgradeValue: 20621 << -0.2 % >> 18:57:43.753 -> New Grade percentage: 6.2 % RawgradeValue: 20621 << 5.8 % >> 18:57:46.695 -> New Grade percentage: 3.0 % RawgradeValue: 20300 << 3.2 % >> 18:57:56.892 -> New Grade percentage: 3.0 % RawgradeValue: 20300 << 3.2 % >> 18:58:06.958 -> New Grade percentage: 3.0 % RawgradeValue: 20300 << 3.2 % >> 18:58:16.990 -> New Grade percentage: 3.0 % RawgradeValue: 20300 << 3.2 % >> 18:58:27.114 -> New Grade percentage: 3.0 % RawgradeValue: 20300 << 3.2 % >> 18:58:32.194 -> New Grade percentage: 4.5 % RawgradeValue: 20450 << 4.8 % >> 18:58:42.367 -> New Grade percentage: 4.5 % RawgradeValue: 20450 << 4.8 % >> 18:58:51.461 -> New Grade percentage: 5.9 % RawgradeValue: 20595 << 6.8 % >> 18:59:01.568 -> New Grade percentage: 5.9 % RawgradeValue: 20595 << 6.8 % >> lost power & cadence signal 18:59:07.680 -> New Grade percentage: 8.8 % RawgradeValue: 20878 << 11.0 % >> 18:59:17.799 -> New Grade percentage: 8.8 % RawgradeValue: 20878 << 11.0 % >> 18:59:21.891 -> New Grade percentage: -0.2 % RawgradeValue: 19983 << -0.2 % >> 18:59:31.951 -> New Grade percentage: -0.2 % RawgradeValue: 19983 << -0.2 % >> 18:59:42.031 -> New Grade percentage: -0.2 % RawgradeValue: 19983 << -0.2 % >> 18:59:52.326 -> New Grade percentage: -0.2 % RawgradeValue: 19983 << -0.2 % >> 18:59:54.326 -> New Grade percentage: 4.8 % RawgradeValue: 20477 << 5.0 % >> 19:00:00.337 -> New Grade percentage: 4.8 % RawgradeValue: 20478 << 5.0 % >> 19:00:05.459 -> New Grade percentage: 7.0 % RawgradeValue: 20696 << 8.2 % >> 19:00:15.576 -> New Grade percentage: 7.0 % RawgradeValue: 20696 << 8.2 % >>
19:00:25.696 -> New Grade percentage: 7.0 % RawgradeValue: 20696 << 8.2 % >> lost power & cadence signal 19:00:32.818 -> New Grade percentage: 3.6 % RawgradeValue: 20360 << 3.9 % >>
19:00:42.950 -> New Grade percentage: 3.6 % RawgradeValue: 20360 << 3.9 % >> 19:00:43.931 -> New Grade percentage: 8.5 % RawgradeValue: 20849 << 11 % >> 19:00:54.013 -> New Grade percentage: 8.5 % RawgradeValue: 20849 << 11 % >>
19:01:02.092 -> New Grade percentage: 1.0 % RawgradeValue: 20099 19:07:34.472 -> Central Device Updated CCCD to: [0] --> Server CP: Measurement 'Notify' disabled 19:07:34.564 -> Central Device Updated CCCD to: [0] --> Server CP: ControlPoint 'Indicate' disabled 19:07:34.705 -> Central Device Updated CCCD to: [0] --> Server CSC: Measurement 'Notify' disabled 19:07:34.798 -> Central Device Updated CCCD to: [0] --> Server FTM: IndoorBikeData 'Notify' disabled 19:07:34.937 -> Central Device Updated CCCD to: [0] --> Server FTM: Status 'Notify' disabled

                            **<< stop ride and exit from app >>**

Best Regards Filippo

Berg0162 commented 1 year ago

Dear Filippo, I am very happy with the results! It looks like the Simcline_FTMS is working very well with your Elite. A few minor points like not correct handling of long device names for the Oled display (only 10 char positions) was already corrected in the version 1.1 that I prepared the last days.

"18:51:24.343 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!" Please do not blame the messenger! The code is testing the actuator + Time-of-Flight-sensor assembly for correct functioning by moving it up a determined distance and check exactly the end result. Then it sets a movement down and checks the end result! If this is not working 100%: you will get the error message and any further use of the actuator is blocked...(To avoid damaging the setup!) You know the drill from your Simcline usage (with TACX) in the past. If one gets this message you have to troubleshoot the involved components and check carefully their assembly in your setup! So please use the test-programs that can be accessed in the Simcline repository.... Let me guess: you have forgotten to plugin the 12V DC power for the actuator... Afterall the board (+Oled+ToF-Sensor) is powered (5V) over the USB connection (needed for the Serial Monitor) with your PC/Laptop, so that is working properly but the actuator is not moving (no power) when requested in the test code --> Error message!

I am puzzeled by your comment: lost power & cadence signal What was happening? How did you know? Please be more specific and detailed about what you observed!

About the discrepancy between the road inclination that the training app is presenting on the screen and what that very same app is sending to the trainer (for setting is resistance) ....... we have been here before! [Please check this] (https://github.com/Berg0162/simcline/tree/master/Tacx%20Smart#simcline-in-tts4-controlled-operation)

The bottom line is: WhatYouSeeIsNotWhatYouAlwaysGet This sometimes is due to your own settings in the App (Difficulty Setting in Zwift: 50% and not 100%), but also simply App company policy... Rouvy is a positive exception, but there are more!

A new version (v01.1.) is about uploaded: 1) handles disconnection and reconnection of devices more robust, 2) allows for Smartphone connection to set some operation variables and manual control of actuator. Notice: Smartphone can only be connected when the training app (Zwift) is NOT connected, so when the Simcline (Server-side) is advertising --> Only one (1) controlling app is allowed to connect and drive the Simcline at any time. (You know, 2 captains on one ship is a recipe for disaster) I have also uploaded a new Companion App version that will recognize the Simcline_FTMS (and not only the Simcline_TACX and Simcline_Wahoo versions!). Thanks for the testing results and keep doing the good work! Best wishes Jörgen.

le-joebar commented 1 year ago

Hello Jörgen,

I received the adafruit yesterday. The first test FTMS_Client_v02 seems to be good. I will send you the complete results when I receive the ASUS USB BT500 dongle for the pc.

In the meantime I read your article on " AIRFLOW Thermoregulated Cooling for Indoor Cycling"

Do you think it is possible to include it in the Simcline program so that simcline communicates with Airflow??

Friendship, Joel

Berg0162 commented 1 year ago

Dear Joel, You are not the first with the suggestion. I am quite sure it will not work. The Airflow is controlling the 2 fans with the help of interrupts (both 50 times per second!) ... I have tested interrupt controlled Actuator control in combination with the heavy BLE usage (Trainer/Zwift) and these two in one application/processor cannot be reconciled. BLE is heavy leaning on using interrupts on its BLE channels. So after a few seconds overlaps and conflicts occur and the Interrupt(s) with the highest priority wins... Best wishes, Jörgen.

Op do 8 dec. 2022 om 13:40 schreef le-joebar @.***>:

Hello Jörgen,

I received the adafruit yesterday. The first test FTMS_Client_v02 seems to be good. I will send you the complete results when I receive the ASUS USB BT500 dongle for the pc.

In the meantime I read your article on " AIRFLOW Thermoregulated Cooling for Indoor Cycling"

Do you think it is possible to include it in the Simcline program so that simcline communicates with Airflow??

Friendship, Joel

— Reply to this email directly, view it on GitHub https://github.com/Berg0162/simcline/issues/5#issuecomment-1342670462, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANS5LSR43V6Z65CXB42HOZ3WMHJM5ANCNFSM6AAAAAASUBEYI4 . You are receiving this because you commented.Message ID: @.***>

le-joebar commented 1 year ago

Hello Jorghen,

Here is the first result with FTMSClient v022

I don't know if it's good?

Next test when I receive the dongle for the Pc

Friendship, Joel

[CFG ] SoftDevice's RAM requires: 0x20002C78 FTMS and Chars 'initialized' CPS and Chars 'initialized' CSCS and Chars 'initialized' GA and Chars 'initialized' DIS and Chars 'initialized' Start Scanning for CPS, CSC and FTMS! [BLE ] BLE_GAP_EVT_ADV_REPORT : Conn Handle = 65535 [BLE ] BLE_GAP_EVT_ADV_REPORT : Conn Handle = 65535 Found advertising Peripheral with FTMS service!, see the Raw Data packet: Timestamp MAC Address Rssi Data 000000681 F8:9C:FC:53:5E:49 -60 09-02-16-18-26-18-18-18-0A-18 [BLE ] BLE_GAP_EVT_CONNECTED : Conn Handle = 0 [GAP ] MAC = F8:9C:FC:53:5E:49, Type = 1, Resolved = 0 [GAP ] Conn Interval = 20.00 ms, Latency = 0, Supervisor Timeout = 2000 ms [BLE ] BLE_GAP_EVT_DISCONNECTED : Conn Handle = 0 [GAP ] Disconnect Reason: CONN_FAILED_TO_BE_ESTABLISHED Feather nRF52 (Central) connected to Trainer (Peripheral) device: [] MAC Address: F8:9C:FC:53:5E:49 Now checking mandatory Client Services and Characteristics! Discovering Client Cycling Power (CP) Service ... [DISC ] [SVC] Handle start = 1 bool BLEDiscovery::_discoverService(uint16_t, BLEClientService&, uint16_t): 79: verify failed, error = BLE_ERROR_INVALID_CONN_HANDLE Not Found! Disconnecting since Client Cyling Power Service is mandatory! Client Disconnected, reason = 0x3E

Restart the Feather nRF52 Client for a new run! <<< Couldn't enable notify for Client CP Measurement Characteristic. Couldn't enable indicate for Client CP Control Point Characteristic. Couldn't enable notify for Client CSC Measurement Characteristic. Couldn't enable notify for Client FTM Training Status Characteristic. FTMS (trainer) is controlled by another Client (Training App)! Client (Central) is Up and Running!

BSP Library : 1.3.0 Bootloader : s140 6.1.1 Serial No : C2BA380FAD3CBBC2

--------- SoftDevice Config --------- Max UUID128 : 10 ATTR Table Size : 4096 Service Changed : 1 Central Connect Setting

--------- BLE Settings --------- Name : ItsyBitsy nRF52840 Express Max Connections : Peripheral = 0, Central = 1 Address : E2:AA:F7:E9:06:E0 (Static) TX Power : 0 dBm Conn Intervals : min = 20.00 ms, max = 30.00 ms Conn Timeout : 2000 ms Central Paired Devices:

cherryphilip74 commented 1 year ago

Dear Jörgen,

my comments in bold

Dear Filippo, I am very happy with the results! It looks like the Simcline_FTMS is working very well with your Elite. A few minor points like not correct handling of long device names for the Oled display (only 10 char positions) was already corrected in the version 1.1 that I prepared the last days.

"18:51:24.343 -> Simcline >> ERROR << Basic Motor Funtions are NOT working!!" Please do not blame the messenger! The code is testing the actuator + Time-of-Flight-sensor assembly for correct functioning by moving it up a determined distance and check exactly the end result. Then it sets a movement down and checks the end result! If this is not working 100%: you will get the error message and any further use of the actuator is blocked...(To avoid damaging the setup!) You know the drill from your Simcline usage (with TACX) in the past. If one gets this message you have to troubleshoot the involved components and check carefully their assembly in your setup! So please use the test-programs that can be accessed in the Simcline repository.... Let me guess: you have forgotten to plugin the 12V DC power for the actuator... Afterall the board (+Oled+ToF-Sensor) is powered (5V) over the USB connection (needed for the Serial Monitor) with your PC/Laptop, so that is working properly but the actuator is not moving (no power) when requested in the test code --> Error message!

**I'm forgot to change the highest and lowest value for microswitch activation, now motor works fine

define MINPOSITION 18 // VL6180X highest value top microswitch activated to mechanically stop operation

define MAXPOSITION 243 // VL6180X lowest value bottom microswitch activated to mechanically stop operation**

I am puzzeled by your comment: lost power & cadence signal What was happening? How did you know? Please be more specific and detailed about what you observed!

During the ride just to test simcline with ftms, the data field (Rouvy) related to power, cadence, speed has shown "N/A" for each parameters for around 1 second, after this time then I got the righ informations. This event accourred 2 times during the test.

I had the same event during last mine workout. I left "DIRETO SIM (BLE)" trainer enabled In my trainer list of Rouvy (I belived to have changed with "DIRETO XR(ANT+)" trainer) and nRF52 switched on with FTMS_Zwift loaded, so with FTMS used as bridge. During the ride 3 N/A events accourred inside to 60 min workout window.

About the discrepancy between the road inclination that the training app is presenting on the screen and what that very same app is sending to the trainer (for setting is resistance) ....... we have been here before! [Please check this] (https://github.com/Berg0162/simcline/tree/master/Tacx%20Smart#simcline-in-tts4-controlled-operation)

The bottom line is: WhatYouSeeIsNotWhatYouAlwaysGet This sometimes is due to your own settings in the App (Difficulty Setting in Zwift: 50% and not 100%), but also simply App company policy... Rouvy is a positive exception, but there are more!

Is it possible to use a polynominal function? No discrepance with TACX and BKOOL application Example image <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">

SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy | SimCline | Rouvy -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 0 | 0,0 | 1 | 0,9 | 2 | 1,9 | 3 | 3,0 | 4 | 4,2 | 5 | 5,5 | 6 | 6,9 | 7 | 8,4 | 8 | 10,0 0,1 | 0,1 | 1,1 | 1,0 | 2,1 | 2,0 | 3,1 | 3,1 | 4,1 | 4,3 | 5,1 | 5,6 | 6,1 | 7,1 | 7,1 | 8,6 | 8,1 | 10,2 0,2 | 0,2 | 1,2 | 1,1 | 2,2 | 2,1 | 3,2 | 3,2 | 4,2 | 4,5 | 5,2 | 5,8 | 6,2 | 7,2 | 7,2 | 8,7 | 8,2 | 10,3 0,3 | 0,3 | 1,3 | 1,2 | 2,3 | 2,2 | 3,3 | 3,4 | 4,3 | 4,6 | 5,3 | 5,9 | 6,3 | 7,3 | 7,3 | 8,9 | 8,3 | 10,5 0,4 | 0,4 | 1,4 | 1,3 | 2,4 | 2,3 | 3,4 | 3,5 | 4,4 | 4,7 | 5,4 | 6,1 | 6,4 | 7,5 | 7,4 | 9,0 | 8,4 | 10,7 0,5 | 0,5 | 1,5 | 1,4 | 2,5 | 2,5 | 3,5 | 3,6 | 4,5 | 4,8 | 5,5 | 6,2 | 6,5 | 7,6 | 7,5 | 9,2 | 8,5 | 10,9 0,6 | 0,6 | 1,6 | 1,5 | 2,6 | 2,6 | 3,6 | 3,7 | 4,6 | 5,0 | 5,6 | 6,3 | 6,6 | 7,8 | 7,6 | 9,4 | 8,6 | 11,0 0,7 | 0,7 | 1,7 | 1,6 | 2,7 | 2,7 | 3,7 | 3,8 | 4,7 | 5,1 | 5,7 | 6,5 | 6,7 | 7,9 | 7,7 | 9,5 | 8,7 | 11,2 0,8 | 0,7 | 1,8 | 1,7 | 2,8 | 2,8 | 3,8 | 4,0 | 4,8 | 5,2 | 5,8 | 6,6 | 6,8 | 8,1 | 7,8 | 9,7 | 8,8 | 11,4 0,9 | 0,8 | 1,9 | 1,8 | 2,9 | 2,9 | 3,9 | 4,1 | 4,9 | 5,4 | 5,9 | 6,8 | 6,9 | 8,3 | 7,9 | 9,8 | 8,9 | 11,5

I will test today the v0.1.1

A new version (v01.1.) is about uploaded: 1) handles disconnection and reconnection of devices more robust, 2) allows for Smartphone connection to set some operation variables and manual control of actuator. Notice: Smartphone can only be connected when the training app (Zwift) is NOT connected, so when the Simcline (Server-side) is advertising --> Only one (1) controlling app is allowed to connect and drive the Simcline at any time. (You know, 2 captains on one ship is a recipe for disaster) I have also uploaded a new Companion App version that will recognize the Simcline_FTMS (and not only the Simcline_TACX and Simcline_Wahoo versions!). Thanks for the testing results and keep doing the good work! Best wishes Jörgen.

Here the new feedback from serial monitor

08:13:29.404 -> <<-- SIMCLINE supporting: CPS, CSC and FTMS -->> 08:13:29.404 -> ------------------------- Version 01.0 ------------------------- 08:13:29.404 -> Simcline equiped with: Feather nRF52832 08:13:29.404 -> Feather internal Get & Set PRSdata to Max: 21600 Min: 19300 Perc.: 100 Displ.: 2 08:13:29.404 -> SSD1306 OLED display is running... 08:13:35.952 -> Simcline Basic Motor Funtions are working!! 08:13:36.153 -> FTM Service and Chars are 'initialized' 08:13:36.153 -> CP Service and Chars are 'initialized' 08:13:36.153 -> CSC Service and Chars are 'initialized' 08:13:36.153 -> Generic Access Service and Chars are 'initialized' 08:13:36.153 -> Device Information Service and Chars are 'initialized' 08:13:36.153 -> Start Client-side Scanning for CPS, CSC and FTMS! 08:13:49.767 -> Found Advertising Peripheral with FTMS, CPS and CSC! See Raw data packet: 08:13:49.767 -> Timestamp Addr Rssi Data 08:13:49.767 -> 000020376 EE:18:4B:1F:9F:3E -64 03-19-85-04-02-01-06-05-02-26-18-18-18-06-16-26-18-01-20-00-0A-09-44-49-52-45-54-4F-20-58-52 08:13:49.848 -> Feather nRF52 (Central) connected to Trainer (Peripheral) device: [DIRETO XR] MAC Address: EE:18:4B:1F:9F:3E 08:13:49.848 -> Now checking all mandatory Client Services and Characteristics! 08:13:49.848 -> Discovering Client Cycling Power (CP) Service ... Found it! CPS Max Payload: 20 Data Length: 27 08:13:49.848 -> Discovering Client CP Measurement characteristic ... Found it! 08:13:49.968 -> Discovering Client CP Control Point characteristic ... Found it! 08:13:50.088 -> Discovering Client CP Feature characteristic ... Found it! 08:13:50.208 -> -> Client Reads Raw CP Feature bytes: [4] [ 0D 02 00 00 ] 08:13:50.208 -> Pedal power balance supported 08:13:50.208 -> Wheel revolution data supported 08:13:50.208 -> Crank revolution data supported 08:13:50.208 -> Offset compensation supported 08:13:50.208 -> Discovering Client CP Sensor Location characteristic ... Found it! 08:13:50.289 -> -> Client Reads CP Location Sensor: Loc#: 0 Other 08:13:50.289 -> Discovering Cycling Speed and Cadence (CSC) Service ... Found it! CSCS Max Payload: 20 Data Length: 27 08:13:50.329 -> Discovering Client CSC Measurement CHR ... Found it! 08:13:50.490 -> Discovering Client CSC Location CHR ... Found it! 08:13:50.570 -> -> Client Reads CSC Location Sensor: Loc#: 0 Other 08:13:50.570 -> Discovering Client CSC Feature CHR ... Found it! 08:13:50.650 -> -> Client Reads Raw CSC Feature bytes: [2] [ 03 00 ] 08:13:50.650 -> Wheel rev supported 08:13:50.650 -> Crank rev supported 08:13:50.690 -> Found Client Generic Access 08:13:50.770 -> Found Device Name: [DIRETO XR] 08:13:50.851 -> Found Appearance: [1157] 08:13:50.931 -> Found Client Device Information: 08:13:51.011 -> Client Manufacturer: Elite 08:13:51.253 -> Client Serial Number: 52687 08:13:51.253 -> Discovering Client Fitness Machine (FTM) Service ... Found it! FTMS Max Payload: 20 Data Length: 27 08:13:51.293 -> Discovering Client FTM Feature Characteristic ... Found it! 08:13:51.413 -> -> Client Reads Raw FTM Feature bytes: [8] [ 86 50 00 00 0C E0 00 00 ] 08:13:51.413 -> Discovering Client FTM Training Status Characteristic ... Found it! 08:13:51.493 -> Discovering Client FTM Supported Resistance Level Range Characteristic ... Found it! 08:13:51.614 -> -> Client Reads Raw FTM Supported Resistance Level Range bytes: [6] [ 00 00 C8 00 01 00 ] 08:13:51.614 -> Discovering Client FTM Supported Power Range Characteristic ... Found it! 08:13:51.774 -> -> Client Reads Raw FTM Supported Power Range bytes: [6] [ 00 00 A0 0F 01 00 ] 08:13:51.774 -> Discovering Client FTM Indoor Bike Data Characteristic ... Found it! 08:13:51.894 -> Discovering Client FTM Control Point Characteristic ... Found it! 08:13:52.055 -> Discovering Client FTM Status Characteristic ... Found it! 08:13:52.255 -> Configuring the Server Device Information Service 08:13:52.255 -> Configuring the Server Cycle Power Service 08:13:52.255 -> Configuring the Server Cadence and Speed Service 08:13:52.255 -> Configuring the Server Fitness Machine Service 08:13:52.295 -> Configuring the Server NUS Service 08:13:52.295 -> Setting up the Server-side advertising payload(s) 08:13:52.295 -> Setting Server Device Name to: [Sim DIRETO] 08:13:52.295 -> Setting Server Appearance to: [1157] 08:13:52.295 -> Server-side is CPS, CSC and FTMS advertising!

Best Regards Filippo

Berg0162 commented 1 year ago

Dear Filippo, This Simcline_FTMS code is working almost perfectly. The short "glitches: N/A" (CPS and CSC) I cannot explain. Fortunately they are only happening once in an hour and are not fatal. Next time you run the Simcline unable the Debug function //#DEBUG, possibly there was a missed packet or responses did not occur in time. Debug function is costing time and it might be critical at special moments... Best Wishes, Jörgen.

Berg0162 commented 1 year ago

Dear Filippo, I saw you have been deleting some of your contributions in this issue.... Any special reason I should know about? Are you now on a regularly basis using the Simcline code and your setup with the Direto XR during indoor trainingen? Can you give an update of the present status? I would appreciate some feedback about your experiences... Regards, Jörgen.

cherryphilip74 commented 1 year ago

Dear Jörgen!

I'm sorry, but I didn't delete anything. I am surprised by this and have no explanation for what happened.

I'm using SimCline standalone and not together with my bike. The reason is that I have to modify the fork bike mount with the new standard (through pin), at the same time I'm acquiring informations with debug enabled.

To help you I think it could be useful to have an excel file with the expectations.. let's say a bug list that I can fill / observed during my workout.

Regards, Filippo

Berg0162 commented 1 year ago

Dear Filippo, I am as puzzled as you are about posts that disappear.... I suggest you close this issue and if you notice errors or malfunctioning behavior of the Simcline FTMS code please use: Simcline FTMS with Elite Direto Best wishes, Jörgen.