Projekt

Allgemein

Profil

Fehler #130

Von Julius Haman vor 9 Tagen aktualisiert

Verliert ein Pulsmesser während des Trainings die Verbindung, wird das nicht erkannt und nicht gemeldet. Folgeticket zu #129 (Ergometer). 

 ### Befund (Code gelesen, nicht an Hardware geprüft) 
 * **BLE-Pulsmesser (`BlePulsmesser`):** Die Klasse kennt `IsAlive(maxAge)` und erkennt damit auch einen Pulsmesser, der einfach aufhört zu senden. Das Training wertet das aber nicht aus. Meldet Windows die Verbindung formal als getrennt, setzt `CloseConnection` den Puls auf null; dann gilt stillschweigend der Puls des Ergometers (`sourcePulse is null` in `DataSender_SendingData`), ohne Hinweis. Das Log zeigt vor dem Training ein Retry im Sekundentakt; ob ein Verlust mitten im Training neu verbunden wird, ist ungeprüft. 
 * **ANT+-Pulsmesser (HRM):** `antHrmPulse` wird bei jeder Telemetrie überschrieben, es gibt keinen Zeitstempel. Bleibt der Gurt weg, bleibt der letzte Wert stehen (eingefrorener Puls) - derselbe Fehlertyp wie bei BLE-Ergometer und ANT+ FE-C vor #129. 

 ### Auswirkung 
 Ein stehender oder stillschweigend ersetzter Puls fließt in Pulsanzeige, Pulsprofil-Regelung (die Leistung wird dann nach einem falschen Puls geregelt), Erholungspuls und die aufgezeichneten Trainingspunkte ein. 

 ### Lösungsansatz (noch nicht umgesetzt) 
 * Der Puls bekommt ein Alter (analog `IErgometer.DataAge` aus #129): Ist der letzte Wert älter als einige Sekunden, gilt der Pulsmesser als verloren. 
 * Im Verlustfall den Pulsmesser neu verbinden (BLE im Hintergrund wie `ErgometerReconnector`; ANT+ pairt der AntInterface-Prozess selbst). 
 * Anzeige: Pulskachel bei Verlust deutlich hervorgehoben (z.B. wie bei der Leistung roter Hintergrund, weiße Zahl und Einheit, Überschrift unverändert). 
 * Festlegen, was währenddessen aufgezeichnet wird (kein Puls bzw. 0 statt eingefrorenem Wert, kein stiller Rückfall auf den Ergometer-Puls ohne Hinweis) und wie sich die Pulsprofil-Regelung ohne Pulsmesser verhält (z.B. Leistung halten statt nachregeln). 

 ### Erholungspulsmessung 
 Auch die Erholungspulsmessung (Fitnessnote) muss prüfen, ob noch Werte ankommen. Heute liest der Dialog (`RecoveryPulseWindowViewModel`) bei jedem Tick `data.Pulse`; fällt die Pulsquelle weg, sieht er einen stehenden bzw. auf den Ergometer-Puls (meist 0) zurückgefallenen Wert und misst weiter, ohne dass es auffällt. Beobachtet an einem 30-Minuten-Training mit BLE-Pulsmesser (Garmin Instinct 2X Solar): Der Dialog erschien, zeigte aber offenbar keinen Puls, die Messung wurde nach etwa 43 s abgebrochen, es wurde kein Erholungspuls gespeichert. Die Ursache ist nicht belegt (der Puls kam bis zum letzten Trainingspunkt an, das Log enthält nichts dazu). 
 * Bleiben während der Messung die Pulswerte aus (gleiche Erkennung wie im Training: Alter des letzten Werts), wird der Pulswert im Dialog rot markiert (rote Fläche, weiße Schrift, Überschrift unverändert). 
 * Die Messuhr (60 s) stoppt, solange kein Puls ankommt, und läuft erst bei wiederkehrenden Werten weiter, damit keine Messung mit fehlenden bzw. falschen Werten abgeschlossen wird. 
 * Festlegen: Was passiert bei sehr langem Ausfall (Abbruch mit Hinweis statt endlosem Warten)? Wird die Verbindung des Pulsmessers im Dialog ebenfalls neu aufgebaut? 
 * Zur Klärung künftiger Fälle: Das Log protokolliert jeden Wechsel der Pulsquelle (BLE-/ANT+-Pulsmesser zu Ergometer-Puls und zurück) mit Zeitpunkt. 

 ### Offen 
 * Test nur mit echter Hardware sinnvoll (Brustgurt/Uhr abnehmen bzw. Bluetooth abschalten). 
 * Verhalten der Uhr-Broadcasts (Garmin Instinct), die nach einiger Zeit einschlafen, berücksichtigen (siehe Kommentar in `BlePulsmesser.IsAlive`). 

Zurück