Projekt

Allgemein

Profil

Aktionen

Feature #143

geschlossen
JH

BleFtmsTester 1.3.2: Test für Tacx FE-C über Bluetooth (--tacx), Messwerte lesen und Zielleistung senden

Feature #143: BleFtmsTester 1.3.2: Test für Tacx FE-C über Bluetooth (--tacx), Messwerte lesen und Zielleistung senden

Von Julius Haman vor 4 Tagen hinzugefügt. Vor 4 Tagen aktualisiert.

Status:
Erledigt
Priorität:
Normal
Zugewiesen an:
-
Beginn:
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:
Gefunden in Version:

Beschreibung

BleFtmsTester 1.3.2: Neuer Test --tacx <Adresse> für Tacx-Trainer mit FE-C über Bluetooth. Er liest die Messwerte des Trainers (Leistung, Trittfrequenz, Geschwindigkeit) und kann auf Eingabe eine Zielleistung senden. Der Schreibteil wirkt sofort auf den Trainer (Widerstand). Anlass ist ein Tacx Vortex, das kein FTMS hat, aber den Tacx-Dienst für FE-C über Bluetooth anbietet (#141).

Hintergrund

In #141 hat --dienste gezeigt: Das Vortex (aktuelle Firmware 3.1.22 / 1.1.3) hat kein FTMS, aber den Dienst 6e40fec1-b5a3-f393-e0a9-e50e24dcca9e mit …fec2 (Notify) und …fec3 (WriteWithoutResponse, Write). Der Test klärt, ob das Gerät die FE-C-Seiten so liefert und annimmt, wie die Tacx-Beschreibung ("FE-C over BLE - Simple how-to for engineers", v1.0.0, 2015) sagt, bevor der Weg in ErControl gebaut wird.

Bedienung

BleFtmsTester.exe --tacx DEA636F33D3B (Adresse aus dem --alle-Log). Das Tacx einschalten, kurz treten, mit nichts anderem verbunden. Nach dem Verbinden werden die Seiten live angezeigt. Eingabe:

  • Zahl (0 bis 1000): Zielleistung in W senden, danach Befehlsstatus anfordern. Niedrig beginnen, zum Beispiel 50.
  • frei: Basis-Widerstand 0 % senden (Widerstand lösen).
  • status: Befehlsstatus (Seite 0x47) anfordern.
  • q: Beenden. Wurde etwas gesendet, wird vorher der Widerstand gelöst. Ohne Eingabe wird nur gelesen.

Technische Details

  • Der Dienst überträgt komplette ANT-Nachrichten: A4, Länge, Typ (4E Broadcast, 4F Acknowledged), Kanal (beim Senden ignoriert, im Beispiel 5), 8 Datenbytes, Prüfsumme. Die Prüfsumme ist das XOR aller Bytes einschließlich A4, am Beispiel der Tacx-Beschreibung nachgerechnet (A4 09 4E 05 10 19 04 00 00 00 FF 24 ergibt 30). Der Text der Beschreibung ("Summe") widerspricht dem.
  • Gelesen werden die Seiten 0x10 (General FE Data: Zeit- und Strecken-Zähler, Geschwindigkeit, Puls, FE-Zustand), 0x19 (Specific Trainer Data: Trittfrequenz, Leistung, Trainerstatus) und 0x47 (Command Status). Weitere Seiten und Nachrichten werden einmal als Hex geloggt, die ersten sechs Rahmen komplett.
  • Gesendet werden Acknowledged-Nachrichten (4F) mit Write mit Antwort auf …fec3: Seite 0x31 Zielleistung (Leistung in 0,25 W), Seite 0x30 Basis-Widerstand 0 %, Seite 0x46 zum Anfordern von Seite 0x47.
  • Die Seitenlayouts stammen aus dem ANT+-FE-C-Profil (D000001231, nicht im Repo) und der Referenz-Implementierung incyclist/ant-plus, das Anfordern der Seite 0x47 über die Common Page 70 aus dem Gedächtnis. Nicht gegen die offizielle Spec geprüft. Auch offen: ob ein Acknowledged-Typ nötig ist oder Broadcast reicht, und ob das Vortex vor dem Steuern weitere Schritte verlangt.
  • Die Verbindung über die Adresse (Advertisement abwarten, dann verbinden, siehe #133) ist aus --dienste in eine gemeinsame Funktion gezogen. Program ist partial, der neue Modus steht in TacxFecOverBle.cs.
  • Version 1.3.2 in BleFtmsTester.csproj und im Kommentar in Directory.Build.props. Wie 1.3.1 nur als Direktlink für den Tester, nicht über die Homepage.

Hinweis zum Test und Ergebnis (09.10.2026, externer Tester mit Tacx Vortex)

Der Test lief an einem Tacx Vortex Smart. Lesen und Schreiben funktionieren. Die Annahmen aus der Beschreibung haben sich bestätigt.

Lesen (FEC2):

  • Die Rahmen kommen im erwarteten Format (A4 09 4E 05 <8 Datenbytes> <Prüfsumme>, zum Beispiel A4 09 4E 05 10 19 7F 14 00 00 FF 24 5F). Es gab keine Prüfsummenwarnung: Das XOR über alle Bytes einschließlich A4 stimmt auf echter Hardware.
  • Seite 0x10 und 0x19 kommen mit rund 4 Hz. Beim Treten stiegen Leistung (31 bis 51 W), Trittfrequenz (43 bis 58 rpm) und Geschwindigkeit (13 bis 18 km/h) plausibel an. Gerätetyp 25 (Trainer/stationäres Rad). Der Puls stand auf "ungültig" (kein Gurt gekoppelt).
  • Seite 0x50 zeigt Hersteller-ID 89 und Modellnummer 2180 (0x0884), das ist das Vortex Smart T2180. Seite 0x51 enthält die Seriennummer 2869 (passt zum Namen "Tacx Vortex 02869") und die Softwarekennung. Zusätzlich taucht eine unbekannte Seite 0xF0 auf.

Schreiben (FEC3, Write mit Antwort, Typ 0x4F):

  • Zielleistung 50, 100, 150, 555 und 10 W wurden jeweils mit "Success" geschrieben und vom Trainer mit Seite 0x47 "Pass" bestätigt. Die Seite gibt die Leistung zurück (Byte 6/7 in 0,25 W, zum Beispiel C8 00 = 50 W).
  • Die gemessene Leistung folgte dem Ziel: 50 W ergab 49 W, 100 W ergab 104 und 101 W, 150 W ergab 147 W. Bei 555 W blieb sie bei etwa 185 W (67 rpm, rund 18 km/h): Der Trainer kann bei dieser Geschwindigkeit nicht mehr liefern, ohne dass der Befehl abgelehnt wird (Status "Pass"). Bei 10 W sank sie auf 58 W (zuletzt 6 Sekunden nach dem Befehl gemessen), die Untergrenze liegt bei diesem Tempo wohl höher.
  • Das Anfordern der Seite 0x47 über Seite 0x46 (Byte 5 = 4) funktioniert: Der Trainer sendet vier Statusseiten. Die Folgenummer steigt je Befehl und Anforderung um 2.
  • Beim Beenden ging "Basis-Widerstand 0 %" mit "Success" raus.
  • Kein Handshake nötig, WriteWithoutResponse ist nicht nötig, Write mit Antwort genügt.

Folgerungen: FE-C über Bluetooth ist mit diesem Vortex ein gangbarer Weg zur Steuerung. Bei der Anbindung in ErControl ist zu beachten, dass die erreichbare Leistung von Geschwindigkeit und Trittfrequenz abhängt und der Trainer Befehle außerhalb seiner Möglichkeiten mit "Pass" quittiert. Auch weiter nicht an anderen Tacx-Modellen geprüft.

Nächste Schritte

Fällt der Test positiv aus: Entscheidung über die Anbindung in ErControl (eigene Klasse für den Bluetooth-Weg, Scanner für den Tacx-Dienst, FE-C-Seiten als gemeinsamer Code, Texte und Doku). Das wäre ein eigenes Ticket.

Aktionen

Auch abrufbar als: PDF Atom