Community-Update · März 2026

Wie eure Votes die Prognose besser machen

Wer die Buchschlag-Schranke App nutzt, kennt sie: die zwei kleinen Buttons „Stimmt“ und „Stimmt nicht“. Was dahinter passiert, ist erstaunlich komplex — und erstaunlich wirkungsvoll.

3.500+
Votes
67
Änderungen
250
ø/Tag
01 — Ursprung

Wie die Idee überhaupt entstanden ist

Die App ist nicht aus einem klassischen Tech-Projekt entstanden. Sie kommt aus einer Situation, die vermutlich viele hier kennen.

Meine Tochter und ich standen eines Tages sehr lange an der Buchschlager Schranke. Wir wollten nur kurz über die Gleise — und warteten am Ende fast 40 Minuten.

RTL Hessen über die Buchschlager Schranke und die App

Während wir dort standen, fing sie an, die Bahnfahrpläne auf dem Handy anzuschauen — und versuchte herauszufinden, wann die nächsten Züge kommen und wann die Schranke wohl wieder aufgehen müsste.

Eigentlich müsste sich das doch berechnen lassen.

Aus dieser Idee ist Schritt für Schritt die App entstanden — die ganze Geschichte gibt es auch in der Offenbacher Post und in der hessenschau. Relativ schnell wurde aber klar: Fahrplandaten allein reichen nicht aus. Zwischen Theorie und Realität liegt bei einer Bahnschranke eine ganze Menge Chaos.

hessenschau über die Buchschlager Schranke und die App

Und genau hier kommt die Community ins Spiel.

02 — Eure Votes

Was passiert, wenn ihr abstimmt?

Wenn ihr auf „Stimmt“ oder „Stimmt nicht“ klickt, speichert die App deutlich mehr als nur „richtig“ oder „falsch“. Im Hintergrund wird festgehalten: welcher Zug gerade als Ursache angezeigt wurde, ob die App offen oder geschlossen angezeigt hat, der exakte Zeitpunkt, die aktuelle Verspätung des Zuges, und ob zwischen zwei Schließungen vielleicht eine kurze Lücke entstanden ist.

Diese Daten verbinden zwei Dinge: die Prognose der App und die tatsächliche Realität an der Schranke. Aus dieser Differenz lernt das System.

„Stimmt nicht“ bei geschlossen

Die App zeigt noch geschlossen, aber die Schranke ist schon offen. Die geschätzte Nachlaufzeit war zu lang — das System korrigiert sich nach unten.

„Stimmt nicht“ bei offen

Die App zeigt noch offen, aber die Schranke ist schon zu. Die Vorlaufzeit war zu kurz — das System korrigiert sich nach oben.

„Stimmt“ bestätigt

Passt. Je öfter das passiert, desto stabiler wird die Prognose für genau diese Tageszeit und diesen Zugtyp.

Eure Pendelzeit zählt

Die App lernt zeitabhängig. Wer regelmäßig morgens oder abends zur gleichen Zeit votet, verbessert vor allem die Prognose für genau dieses Zeitfenster.

🎯
Je öfter ihr zu eurer Pendelzeit votet, desto genauer wird die Prognose genau dann, wenn ihr sie braucht. Das ist eine der größten Herausforderungen — die möglicherweise unterschiedlichen Vor- und Nachlaufzeiten nach Tageszeit abzubilden.
03 — Durchfahrer

Züge, die hier gar nicht im Fahrplan stehen

Viele Züge, die die Schranke schließen, tauchen im Buchschlager Fahrplan gar nicht auf: ICE, IC, FLX, RB68, RB82. Diese Züge halten hier nicht — und existieren im lokalen Fahrplan schlicht nicht. Trotzdem fahren sie natürlich durch und schließen die Schranke.

Haltende ZügeS6, RB61

Direkt im Fahrplan von Buchschlag — beste Datenlage

DurchfahrerICE, IC, RE, FLX, RB68

Berechnet aus 5 Nachbarstationen — gute Schätzung

Güterzüge

Nirgends im öffentlichen Fahrplan — nur durch eure Votes erkennbar

🔍
Fünf Stationen statt einer. Die App fragt die Fahrpläne von Langen, Neu-Isenburg, Frankfurt Süd, Frankfurt Hbf und Darmstadt Hbf ab. Wenn ein Zug in Langen abfährt und in Frankfurt Süd ankommt, muss er durch Buchschlag durch. Aus den Zeiten wird die Durchfahrtszeit berechnet.
04 — Geisterzüge

Wenn die App „geschlossen“ sagt — aber die Schranke offen ist

Nicht jeder Zug aus Frankfurt Richtung Süden fährt tatsächlich über Buchschlag. Viele Durchfahrer (ICE, IC, FLX) nehmen die Riedbahn über Flughafen und Groß-Gerau nach Mannheim — komplett an Buchschlag vorbei. Im Fahrplan sehen diese Züge zunächst identisch aus.

Erst eure Votes haben gezeigt, dass hier etwas nicht stimmt. Wenn die App „geschlossen“ anzeigt, die Schranke aber offen bleibt und mehrere Nutzer „Stimmt nicht“ melden, wird klar: Der prognostizierte Zug fährt hier gar nicht vorbei.

Heute prüft die App gezielt den Routenverlauf eines Zuges:

Stationen wie Langen, Buchschlag, Egelsbach

Main-Neckar-Bahn — relevant für die Prognose

Stationen wie Flughafen, Zeppelinheim, Groß-Gerau

Riedbahn — Geisterzug — wird herausgefiltert

05 — Timing

Wenn Timing plötzlich nicht mehr stimmt

Mehrere „Stimmt nicht“-Meldungen zur gleichen Tageszeit zeigten, dass die Schranke oft früher öffnet, als die App erwartet hatte.

Der Grund war eine interne Begrenzung im System. Die Nachlaufzeit — also wie lange die Schranke nach einem Zug geschlossen bleibt — war technisch gedeckelt. Eure Meldungen haben gezeigt, dass diese Grenze zu falschen Prognosen führte.

Also wurde sie entfernt. Seitdem kann sich das System deutlich freier an die realen Öffnungszeiten anpassen.

So kalibriert sich das Timing
Basis-Prognose (ohne eure Votes)
Offen
Lead
Geschlossen
Trail
Offen
„Stimmt nicht“ bei offen
Schranke war schon zu → Lead zu kurz
„Stimmt nicht“ bei geschlossen
Schranke war schon offen → Trail zu lang
Kalibrierung
1
Zeitbasiert— Votes der letzten 14 Tage, ±2h um aktuelle Uhrzeit, Wochentag/Wochenende getrennt
2
Carry-Forward— Falls zu wenig Daten: breiteres Zeitfenster, bis 90 Tage zurück
3
Ratio-Fallback— Ältere Votes ohne Zeitstempel: Gewichtung über Bias-Verhältnis
Ergebnis
Kalibrierte Prognose (mit euren Votes)
Offen
Lead ↑
Geschlossen
Trail ↓
Offen
Schranke offen Schranke geschlossen↑↓ Durch Votes angepasst
🔄
Das System kalibriert sich laufend selbst. Eure Votes der letzten 14 Tage fließen direkt in die Berechnung ein — getrennt nach Tageszeit, Wochentag und Fahrtrichtung. Je mehr ihr zu eurer typischen Pendelzeit votet, desto präziser wird genau dieses Zeitfenster.
06 — Bugs

Wenn Votes echte Bugs sichtbar machen

Votes verbessern nicht nur die Prognose. Manchmal decken sie auch echte Software-Bugs auf.

Phantom-Schließungen

Die App zeigte „geschlossen“, obwohl der auslösende Zug ausgefallen war. Das Schließungsfenster war bereits aktiviert — selbst wenn der Zug gestrichen wurde, blieb die Schranke im Modell geschlossen. Durch Community-Meldungen entdeckt und korrigiert.

Phantom-Verlängerungen

Wenn ein verspäteter Zug ein Schließungsfenster verlängerte und danach ausfiel, blieb das Fenster manchmal zu lang bestehen. Auch dieses Problem wurde über reale Beobachtungen sichtbar.

07 — Machine Learning

ML-Modelle im Hintergrund

Ein Teil der Prognose basiert inzwischen tatsächlich auf Machine-Learning-Modellen.

⏱️

Modell 1 — Zeit-Korrektur

Regressionsmodell korrigiert Vor- und Nachlaufzeiten basierend auf Zugtyp, Tageszeit, Verspätung, Zugdichte und Fahrtrichtung.

🔮

Modell 2 — Lücken-Detektion

Schätzt, ob sich eine kurze Öffnungslücke zwischen zwei Zügen überhaupt materialisiert.

08 — Szenarien

Wie das Modell Schranken-Schließungen vorhersagt

Das Modell nimmt den Fahrplan + Live-Verspätungen, berechnet wann jeder Zug die Schranke auslöst, und entscheidet dann welche Schließungen sich überlappen und verschmelzen — und wo es eine echte Lücke gibt, in der man queren kann.

Komplexität
Einfach
Komplex
1

Normaler Haltezug (S6, RB61)

Zug fährt in den Bahnhof ein — Schranke schließt ca. 2 Min. vor Abfahrt, öffnet ca. 45s nach Abfahrt. Einfach und vorhersagbar.

2

Durchfahrer (z.B. ICE, FlixTrain, RB68)

Express rast ohne Halt durch — Schranke schließt ca. 3 Min. vor Durchfahrt, öffnet ca. 75s danach. Längere Schließung.

3

Zwei Haltezüge, gleiche Richtung

z.B. S6 dann RB61, 2 Min. später — Schranke bleibt durchgehend geschlossen. Das Modell verschmilzt zu einer langen Schließung.

4

Gegenrichtung, kurz hintereinander

z.B. S6 Nord, dann S6 Süd 3 Min. später — Schranke geht kurz dazwischen auf (ca. 45s) für den Fahrstraßenwechsel.

5

Haltezug dann Durchfahrer

S6 fährt ab, dann kommt Durchfahrer — zwei getrennte Schließungen mit einer Lücke dazwischen.

6

Gegenrichtung dann Durchfahrer

Fahrstraßenwechsel braucht Extrazeit (ca. 25s). Das Modell berücksichtigt das bei der Lückenberechnung.

7

Verspätete Züge

DB meldet Verspätung — das Modell verschiebt das gesamte Schließungsfenster entsprechend.

8

Sliding Hold — keine Abfahrtbestätigung

Zug hätte abfahren sollen, aber keine Bestätigung — Schließung wird in Echtzeit nach vorne geschoben.

09 — Kurze Lücken

Warum manche Lücken nicht eintreten

Zwischen zwei Schließungen gibt es manchmal eine kurze Öffnung — eine Brief Gap. Sie entsteht, wenn das Stellwerk die Fahrstraße umstellen muss, zum Beispiel von Nord auf Süd. Je nach Zugkombination dauert das unterschiedlich lang: 75s bei zwei Durchfahrern, 45s bei zwei Haltezügen, oder nur 25s wenn ein Haltezug von einem Durchfahrer gefolgt wird.

Beispiel: S6 fährt ab, dann kommt Durchfahrer
Modell berechnet 45s Lücke zwischen den Schließungen
S6 Halt
45s
Durchfahrer
Offen
Realität: Stellwerk lässt Durchfahrer zuerst — Lücke fällt weg
Durchfahrer + S6 — durchgehend geschlossen
Offen

Das Modell berechnet diese Lücken — aber nicht jede berechnete Lücke entsteht auch in der Realität. Zwei Gründe machen die Vorhersage schwierig:

Stellwerk-Priorität: Das Modell sortiert Züge nach Fahrplanzeit. Das Stellwerk aber gibt Durchfahrern (z.B. ICE, FlixTrain) Vorrang — sie bekommen die Fahrstraße zuerst, auch wenn eine S-Bahn planmäßig früher dran wäre. Diese betriebliche Reihenfolge ist aus Fahrplandaten nicht ablesbar. Wenn das Stellwerk Züge anders sortiert als der Fahrplan, verschieben sich Lücken — oder fallen ganz weg.

Deshalb zeigt die App eine Lücke nur an, wenn sie mindestens 60–180 Sekunden lang ist. Dieser Schwellenwert wird laufend über eure Votes kalibriert: Werden zu viele Lücken gemeldet, die nicht eintreten, steigt er automatisch. So lernt das System über die Zeit, welche Lücken zuverlässig genug sind, um sie anzuzeigen.

10 — Echtzeitdaten

Wie frisch sind die Daten wirklich?

Alle Verspätungs- und Statusdaten stammen aus dem IRIS-System der Deutschen Bahn. Dieses System liefert Updates in diskreten Intervallen — nicht als kontinuierlichen Datenstrom.

In der Praxis bedeutet das: Ein Zug kann um 18:12 noch mit +5 Minuten Verspätung gemeldet sein — und zwei Minuten später plötzlich auf +18 Minuten springen. Dazwischen arbeitet die Prognose mit dem letzten bekannten Wert.

So sieht das in der App aus
18:12 — App zeigt Prognose (Zug hat +5 min)
Offen
Geschlossen
Offen
18:1018:2018:30
18:14 — IRIS-Update: Zug jetzt +18 min
18:14 — App verschiebt Schließung automatisch
Offen
Geschlossen
18:1018:2018:30
Schranke offen Schranke geschlossen Verschoben durch Update

Deshalb kann es vorkommen, dass sich eine Schließung in der App plötzlich verschiebt — das Modell hat neue IRIS-Daten erhalten und passt die Prognose in Echtzeit an. Je größer der Verspätungssprung, desto deutlicher die Verschiebung.

11 — Ehrliche Grenzen

Die größte Grenze: Güterzüge

Ein Thema bleibt besonders schwierig: Güterzüge. Sie tauchen in keiner öffentlichen Fahrplan-API auf. Wenn ein Güterzug die Schranke schließt, gibt es keine Datenquelle, die das vorher ankündigt.

⚠️
Das einzige Signal ist: Die Schranke ist zu, aber die App zeigt keinen Zug. Genau in diesem Moment ist ein „Stimmt nicht“-Vote besonders wertvoll. Denn daraus kann die App mit der Zeit Muster erkennen.
Mustererkennung über 90 Tage

Das System sammelt alle „Stimmt nicht“-Votes, bei denen die App keinen Zug als Ursache kennt. Daraus baut es eine Heatmap pro Wochentag und Stunde auf — ein 7×24-Raster, das zeigt, wann Güterzüge regelmäßig fahren.

6h
8h
10h
12h
14h
16h
18h
20h
Mo
Di
Mi
Do
Fr
Sa
So
Wenig
Viele Anomalien

Je mehr Daten gesammelt werden, desto klarer werden die Muster. Nach 90 Tagen erkennt das System zum Beispiel, dass mittwochs gegen 18 Uhr regelmäßig ein Güterzug fährt — und baut diese Schließung dann automatisch in die Prognose ein, auch ohne Fahrplandaten.

Aktuell: Die Heatmap wird täglich neu berechnet. Jeder Vote ohne erkennbaren Zug fließt als Datenpunkt ein — mit Wochentag, Uhrzeit und Richtung. Je länger die Community votet, desto zuverlässiger werden die Güterzug-Prognosen.
12 — Ausblick & Mitmachen

Woran gerade gearbeitet wird

Im Hintergrund laufen aktuell mehrere Experimente parallel — unter anderem ein Vergleich verschiedener Kalibrierungsmethoden, um herauszufinden, welche Methode bei welchem Zugtyp und welcher Tageszeit am besten funktioniert.

Nicht alles lässt sich allein über Votes abbilden. Wenn euch etwas auffällt — ein Zug der dauerhaft fehlt, ein wiederkehrender Fehler, oder eine Idee — gibt es dafür jetzt einen direkten Weg:

Danke fürs Mitmachen.

Jeder Vote macht die App ein Stück besser.

Zurück zur Schrankenprognose