Essen nach Belastung, nicht nach Uhr — so funktioniert Smart Fueling in WattLog.pro
Jeder Radfahrer kennt den Rat: alle 45 Minuten essen. Jeder, der schon einmal eine harte Intervalleinheit gefahren ist, weiß auch, dass er nicht stimmt. Ein 60-minütiges Schwellentraining verbrennt mehr Kohlenhydrate als eine 90-minütige Erholungsrunde, und ein Timer kann beides nicht auseinanderhalten. Der Moment, in dem du merkst, dass du hättest essen sollen, ist der Moment, in dem es zu spät ist: Du steckst mitten im Intervall, die Hände am Lenker, und der Hungerast kommt zwanzig Minuten später.
Ich entwickle WattLog.pro allein: eine Trainingsplattform mit Live-Sensordaten, strukturierten Workouts, die einen Smart Trainer im ERG-Modus steuern, und simulierten GPX-Strecken. Es gab bereits die Einstellung „erinnere mich alle X Minuten ans Essen“, und trotzdem habe ich immer wieder vergessen zu essen — weil die Erinnerung nichts damit zu tun hatte, wie hart ich fuhr. So habe ich sie durch etwas ersetzt, das genau das berücksichtigt.
Timer gegen tatsächlichen Verbrauch
Derselbe Fahrer, drei verschiedene Einheiten. Ein „alle 45 Minuten“-Timer behandelt sie nach der Uhr, Smart Fueling danach, wie viele Kohlenhydrate tatsächlich aus dem Tank verschwunden sind:
| Einheit | Dauer | Verbrannte Kohlenhydrate* | Timer alle 45 min | Smart Fueling** |
|---|---|---|---|---|
| Erholung, 50 % FTP | 1 h 30 min | ca. 70 g | 2 Erinnerungen | 1 Hinweis |
| Grundlage, 65 % FTP | 2 h | ca. 160 g | 2 Erinnerungen | 2 Hinweise |
| Schwelle, 90 % FTP | 1 h | ca. 155 g | 1 Erinnerung | 2 Hinweise |
* Fahrer mit 250 W FTP, gleichmäßige Fahrt, berechnet mit der unten beschriebenen Kurve (1 kJ ≈ 1 kcal, 4 kcal pro Gramm Kohlenhydrate). ** Standardschwelle 400 kJ, unter der Annahme, dass du bei jedem Hinweis isst.
Eine Stunde an der Schwelle verbrennt so viele Kohlenhydrate wie zwei Stunden Grundlage und mehr als doppelt so viele wie 90 Minuten Erholung — und ausgerechnet dort erinnert der Timer am seltensten ans Essen.
Das Signal liegt schon auf der Leitung
Ein Powermeter oder Smart Trainer meldet die Watt mehrmals pro Sekunde. Leistung mal Zeit ist mechanische Arbeit in Kilojoule, und im Radsport gibt es einen praktischen Zufall. Trainierte Radfahrer wandeln Nahrungsenergie mit einem Wirkungsgrad von etwa 18–26 % in Arbeit an den Pedalen um [1], und eine kcal sind 4,184 kJ. Bei rund 24 % Wirkungsgrad heben sich beide Faktoren auf:
Das ist eine Näherung: Der Wirkungsgrad unterscheidet sich zwischen Fahrern und steigt mit der Leistung [1, 2], der tatsächliche Faktor verschiebt sich also etwas in die eine oder andere Richtung. Die Rechnung im Detail steht im Beitrag Kilojoule auf dem Trainer verbrennen. In meiner Analyse nach der Fahrt war das schon drin. Nur während der Fahrt stand es nicht zur Verfügung.
Der Kern der Engine ist deshalb ein Akkumulator im serverseitigen Session-Manager. Jeder Leistungswert addiert die seit dem letzten Wert geleistete Arbeit (Trapezintegration), wobei die Lücke zwischen zwei Werten auf 5 Sekunden begrenzt ist, damit ein Bluetooth-Aussetzer keine Energie erfindet. Überschreitet die Summe eine Schwelle (standardmäßig 400 kJ, pro Athlet einstellbar), bekommt der Fahrer die Aufforderung zu essen. Der Zustand liegt in denselben Redis-gestützten Session-Metadaten wie der Rest einer Live-Fahrt. Ein Neuladen der Seite oder ein Wechsel auf einen anderen API-Worker macht also dort weiter, wo es aufgehört hat, statt den Balken auf null zu setzen.
Diese erste Version war schnell fertig und schon besser als der Timer. Sie lag aber immer noch auf interessante Weise daneben.
Nicht jedes Kilojoule ist gleich
400 kJ im lockeren Grundlagentempo und 400 kJ an der Schwelle sind dieselbe Arbeit, kosten aber nicht denselben Treibstoff. Die Sportphysiologie nennt das „Crossover“: Bei niedriger Intensität ist Fett der Hauptbrennstoff, mit steigender Intensität verschiebt sich der Körper in Richtung Kohlenhydrate, die bei harten Belastungen dominieren [3]. Isotopen-Tracer-Studien an Radfahrern zeigen dasselbe Bild im Detail: Die Oxidation von Muskelglykogen und Blutglukose steigt mit jeder Intensitätsstufe, während die Fettoxidation bei mittlerer Leistung ihren Höhepunkt erreicht und dann sinkt [4, 5]. Ein Balken, der rohe Kilojoule zählt, warnt an harten Tagen zu spät und nervt an lockeren.
Die Lösung ist eine Kurve: der Kohlenhydratanteil an der Energie als Funktion der Intensität relativ zur FTP.
Die Kurve ist stückweise linear: etwa 45 % bei 55 % der FTP, 65 % bei 75 %, 80 % bei 95 % und über 90 % oberhalb der FTP. Um klar zu sagen, woher diese Zahlen stammen: Sie sind meine eigene Näherung, geformt nach Richtung und ungefährer Größenordnung der genannten Studien, keine Werte aus einer einzelnen Arbeit. Diese Studien messen die Intensität relativ zur VO2max oder zur Maximalleistung, nicht zur FTP — die Zuordnung ist also eine technische Schätzung. Die Kilojoule jedes Messwerts werden dann mit diesem Anteil relativ zu einer moderaten Referenzbelastung gewichtet:
Treibstoffbalken += kJ_Zuwachs × Gewicht
Zwei Eigenschaften sind dabei wichtig. Erstens ist das Gewicht bei moderater Belastung genau 1, die Schwelle behält also ihre Bedeutung und bestehende Einstellungen ändern ihr Verhalten nicht stillschweigend. Zweitens lässt sich ohne FTP die Intensität nicht beurteilen, deshalb fällt der Balken auf ungewichtete Kilojoule zurück, statt zu raten. In der Praxis füllt eine Fahrt bei 96 % der FTP den Balken jetzt fast 1,8-mal so schnell wie dieselbe Arbeit bei 56 %. Wer seine FTP nicht kennt, beginnt am besten mit einem FTP-Test.
Der Balken zeigt Gramm, nicht Kilojoule. Fahrer denken in „ein Gel“ oder „etwa 30 g“, nicht in kJ. Die Schwelle wird daher als Kohlenhydratportion angezeigt: 400 kJ × 65 % ÷ 4 kcal/g sind etwa 65 g verbrannt, davon lohnt es sich, die Hälfte zu ersetzen — daher eine Portion von etwa 30 g.
Wann sich die App meldet
Eine korrekte Zahl reicht nicht, wenn der Hinweis im falschen Moment kommt. Der größte Teil der Arbeit floss in die Frage, wann die App etwas sagen soll. So sieht der Energiebalken während der Fahrt in seinen drei Zuständen aus:
Die Hinweise laufen über denselben Kanal wie die Nachrichten des Trainers: das Nachrichtenpanel, ein Toast auf dem Handy, ein Ton und eine Sprachansage, wenn Sprachhinweise aktiviert sind. Der Rest sind Regeln dafür, wann die App nicht stören soll:
| Situation | Was Smart Fueling tut |
|---|---|
| Balken erreicht 75 % der Schwelle | Wird bernsteinfarben und bittet, Essen bereitzulegen |
| Balken erreicht 100 % | „Jetzt essen“ — wiederholt alle 100 kJ, bis du isst |
| Schwelle überschritten bei über 105 % FTP | Hinweis wartet, bis die Leistung sinkt — das Intervall wird nicht unterbrochen |
| Strecke: 0,5 km vor einem Anstieg ab 4 % (nach mind. 1 km flach) | „Anstieg voraus, jetzt essen“ |
| Abfahrt steiler als −5 % oder Anstieg steiler als 12 % | Stille — alle Hinweise warten |
| Tippen auf „+Portion“ | Zieht eine Portion vom Defizit ab, statt es auf null zu setzen |
Das Zurückhalten bei harter Belastung ist ein Zustandsflag, das beim Überschreiten gesetzt wird, keine Live-Prüfung Leistung > 1,05 × FTP — die naive Version ließ das Banner bei jedem Pedaltritt eines harten Intervalls flackern. Und der Button hieß anfangs „+Gel“, als wären Gels die einzig richtige Antwort. Jetzt heißt er „+Portion“: Wer zwei Portionen im Rückstand ist und einmal isst, schuldet noch eine.
Auf einer simulierten GPX-Strecke scannt die Engine beim Start das Höhenprofil und sucht den letzten ruhigen Moment zum Essen, bevor es bergauf geht:
Die Gelände-Vorausschau hat den Fehler hervorgebracht, über dessen Entdeckung durch die Tests ich mich am meisten freue. Ein Wegpunkt, der innerhalb einer Ruhezone passiert wurde, wurde übersprungen, blieb aber in der Liste. Da die Auslösebedingung „zwischen vorheriger und aktueller Position passiert“ lautete, konnte er nie wieder feuern: Der Hinweis ging still verloren. Die Korrektur löst einen ausstehenden Wegpunkt im ersten Takt nach dem Ende der Ruhezone aus und fasst mehrere passierte Wegpunkte zu einem Hinweis zusammen, damit kein veralteter später allein auftaucht.
Vor der Fahrt: was einpacken
Die andere Hälfte der Verpflegung passiert zu Hause. Vor jeder Einheit, die länger als eine Stunde dauert, zeigt die Vorbereitungsseite eine Karte mit den Kohlenhydraten und der Flüssigkeit, die man mitnehmen sollte — ohne einen Trainer zu verbinden oder etwas zu starten:
Diese Fahrt dauert etwa 1 h 30 min. Nimm etwa mit:
Bei einem strukturierten Workout kommt die Energie direkt aus dem Plan: Zielwatt jedes Abschnitts mal seine Dauer ergibt die exakten Kilojoule, die Normalized Power liefert die Intensität, und dieselbe Kohlenhydratkurve wird auf jeden Abschnitt angewendet. Ein Workout aus harten Antritten und lockeren Pausen braucht mehr Kohlenhydrate als eine gleichmäßige Fahrt mit derselben Durchschnittsleistung, und die Schätzung bildet das ab. Einige Beispiele für einen Fahrer mit 250 W FTP auf dem Trainer:
| Einheit | Energie | Kohlenhydrate zum Mitnehmen | Flüssigkeit |
|---|---|---|---|
| Grundlage 1 h 30 min, 65 % FTP | 878 kJ | 50–70 g | 1,2 l |
| Sweet Spot 1 h 30 min, 88 % FTP | 1188 kJ | 70–90 g | 1,2 l |
| Tempo 2 h, 75 % FTP | 1350 kJ | 90–120 g | 1,6 l |
| Grundlage 3 h, 65 % FTP | 1755 kJ | 95–145 g | 2,4 l |
Für eine GPX-Strecke gibt es keinen Plan, also nutze ich das physikalische Modell, auf dem die Trainersimulation ohnehin beruht: Für jeden 50-m-Abschnitt wird die Leistung berechnet, die nötig ist, um die angenommene Geschwindigkeit gegen Schwerkraft, Rollwiderstand und Luftwiderstand zu halten — mit Fahrergewicht, Radgewicht, CdA, Crr und Luftdichte. Solche Modelle sind gut validiert: In Straßentests sagte eines die gemessene Leistung mit R² = 0,97 und einem Standardfehler von 2,7 W voraus [6]. Abfahrten ohne Treten zählen als null Arbeit. Eine hügelige Strecke fällt so zu Recht teurer aus als eine flache gleicher Länge.
Aus den Zahlen wird dann eine Packliste: etwa die Hälfte der verbrannten Kohlenhydrate, begrenzt auf das, was der Darm aufnehmen kann, und als Spanne angezeigt, weil eine einzelne Zahl falsche Genauigkeit suggerieren würde. Die Obergrenzen folgen aktuellen Empfehlungen zur Kohlenhydrataufnahme während der Belastung: Eine einzelne Kohlenhydratquelle kann bis etwa 60 g/h oxidiert werden, und erst längere Belastungen rechtfertigen etwa 90 g/h, mit mehreren transportablen Kohlenhydraten wie Glukose plus Fruktose [7]. Dieselben Empfehlungen sagen, dass die Zufuhr bei niedriger absoluter Intensität reduziert werden sollte — genau das macht die Intensitätskurve. Der Faktor „die Hälfte dessen, was du verbrennst“ ist meine eigene Wahl, keine Zahl aus der Literatur.
Für die Flüssigkeit wird die Schweißraten-Tabelle aus der Auswertung nach der Fahrt wiederverwendet. Der Plan empfiehlt, etwa 80 % des geschätzten Verlusts zu trinken, aber nie mehr als 0,8 l/h:
| Intensität der Fahrt | Drinnen | Draußen |
|---|---|---|
| Niedrig (IF < 0,65) | 1,0 l/h | 0,6 l/h |
| Mittel (IF 0,65–0,85) | 1,4 l/h | 0,9 l/h |
| Hoch (IF > 0,85) | 1,8 l/h | 1,2 l/h |
Hier ist die ehrlichste Quelle ein Vorbehalt: Schweißraten unterscheiden sich stark zwischen Menschen, und das Positionspapier zum Flüssigkeitsersatz empfiehlt, die eigene durch Wiegen vor und nach einer Fahrt zu bestimmen, mit dem Ziel, den Flüssigkeitsverlust unter etwa 2 % des Körpergewichts zu halten [8]. Die Tabelle ist ein Ausgangspunkt, nicht deine Zahl. Mehr dazu im Beitrag über Flüssigkeit, Elektrolyte und Salz.
Diese Wiederverwendung war Absicht. Die erste Version der Karte vor der Fahrt rechnete pauschal mit 500 ml pro Stunde, während die Auswertung nach der Fahrt für eine moderate Indoor-Einheit 1,4 l/h Schweiß annahm. Der Fahrer hätte über dieselbe Fahrt zwei widersprüchliche Dinge gehört. Jetzt rechnen alle drei Stellen mit denselben Annahmen:
Ein Fehler, den die Funktion woanders gefunden hat
Beim Testen der Streckenkarte bekam ich ein verdächtiges Ergebnis: 2,7 l Flüssigkeit für eine Strecke, die laut Seite 1 h 41 min dauern sollte. Das sind 1,6 l/h, doppelt so viel wie die Obergrenze.
| Streckenzeit (60 km) | 2,7 l Flüssigkeit sind… | |
|---|---|---|
| Angezeigt von der App | 1 h 41 min | 1,6 l/h ✗ |
| Tatsächlich bei 18 km/h | 3 h 22 min | 0,8 l/h ✓ |
Die Flüssigkeitsrechnung stimmte. Falsch war die Dauer, und zwar nicht in meinem neuen Code: Vier Streckenansichten schätzten die Zeit als Abschnitte × 5 Sekunden, aber die Abschnitte sind 50 m lang — die Formel stimmt also nur bei 36 km/h. Bei den standardmäßigen 18 km/h war jede Streckenzeit in der App um die Hälfte zu niedrig. Das Backend liefert die Zeit jetzt zusammen mit dem Verpflegungsplan, und alle Streckenansichten nutzen eine gemeinsame Funktion „Distanz durch Geschwindigkeit“.
Was es nicht kann
Das ist eine Orientierung, keine Messung, und der Artikel wäre ohne die Einschränkungen unehrlich:
- Die Kohlenhydratkurve nähert durchschnittliches Verhalten an, und Menschen unterscheiden sich stark. In einer Studie mit 300 Personen erklärten Geschlecht, Fitness und Aktivitätsniveau zusammen nur 12 % der Unterschiede in der Fettoxidation während der Belastung; der Rest blieb unerklärt [9]. Die App weist bei jeder Schätzung darauf hin, dass es Bevölkerungsdurchschnitte sind.
- Das Streckenmodell geht von konstanter Geschwindigkeit aus. Echte Fahrer werden am Berg langsamer, das Modell überschätzt also vermutlich die nötige Leistung auf steilen Abschnitten.
- Die Live-Gewichtung braucht eine FTP und eine Leistungsquelle. Ohne sie zählt der Balken rohe Arbeit; eine Herzfrequenz-Alternative für den Live-Balken gibt es noch nicht.
- Ich habe die Schätzungen noch nicht mit einer echten langen Fahrt und einer Waage verglichen. Das Verhalten ist durch Unit-Tests festgelegt, nicht durch Felddaten.
Die gesamte Engine lässt sich in den Einstellungen abschalten. Solange sie aktiv ist, ersetzt sie die alte Essenserinnerung in festen Abständen, statt mit ihr zu konkurrieren.
Was ich daraus mitnehme
Die Funktion, die nach „zeige bei 400 kJ einen Hinweis“ aussah, wurde zu drei Modellen, die übereinstimmen müssen: ein Live-Akkumulator, ein Plan vor der Fahrt und eine Analyse danach. Die eigentliche Arbeit war nicht die Formel, sondern dafür zu sorgen, dass alle drei dem Fahrer dieselbe Geschichte erzählen — und den richtigen Moment zum Sprechen zu wählen. Die beste Entscheidung war, keinem Bildschirm eigene Konstanten zu erlauben. Die nützlichste Gewohnheit war, eine Zahl, die seltsam aussieht — wie 2,7 l in unter zwei Stunden —, als Fehlerbericht zu behandeln und nicht als Rundungsproblem.
Quellen
- Coyle EF, Sidossis LS, Horowitz JF, Beltz JD. Cycling efficiency is related to the percentage of type I muscle fibers. Med Sci Sports Exerc. 1992;24(7):782–788. PubMed 1501563
- Ettema G, Lorås HW. Efficiency in cycling: a review. Eur J Appl Physiol. 2009;106(1):1–14. doi:10.1007/s00421-009-1008-7
- Brooks GA, Mercier J. Balance of carbohydrate and lipid utilization during exercise: the "crossover" concept. J Appl Physiol. 1994;76(6):2253–2261. doi:10.1152/jappl.1994.76.6.2253
- Romijn JA, Coyle EF, Sidossis LS, et al. Regulation of endogenous fat and carbohydrate metabolism in relation to exercise intensity and duration. Am J Physiol. 1993;265(3):E380–E391. doi:10.1152/ajpendo.1993.265.3.E380
- van Loon LJ, Greenhaff PL, Constantin-Teodosiu D, Saris WH, Wagenmakers AJ. The effects of increasing exercise intensity on muscle fuel utilisation in humans. J Physiol. 2001;536(1):295–304. doi:10.1111/j.1469-7793.2001.00295.x
- Martin JC, Milliken DL, Cobb JE, McFadden KL, Coggan AR. Validation of a mathematical model for road cycling power. J Appl Biomech. 1998;14(3):276–291. doi:10.1123/jab.14.3.276
- Jeukendrup A. A step towards personalized sports nutrition: carbohydrate intake during exercise. Sports Med. 2014;44(Suppl 1):S25–S33. doi:10.1007/s40279-014-0148-z (frei zugänglich: PMC4008807)
- American College of Sports Medicine; Sawka MN, Burke LM, Eichner ER, et al. Exercise and fluid replacement. Med Sci Sports Exerc. 2007;39(2):377–390. doi:10.1249/mss.0b013e31802ca597
- Venables MC, Achten J, Jeukendrup AE. Determinants of fat oxidation during exercise in healthy men and women: a cross-sectional study. J Appl Physiol. 2005;98(1):160–167. doi:10.1152/japplphysiol.00662.2003
Was hat dich deine letzte Fahrt gekostet?
Lade eine GPX- oder TCX-Datei einer beliebigen Fahrt hoch und sieh TSS, Leistung, Herzfrequenz und Zonen — in 30 Sekunden, ohne Konto.
Analysiere deine Fahrt — ohne Konto →Lade eine GPX- oder TCX-Datei aus Strava oder Garmin hoch. So bekommst du sie