Beamersteuerung Bochum Hbf.
Ein vollständig von mir entwickeltes Python-System steuerte mehrere Beamer entlang der U-Bahn-Gleise anhand realer Zugbewegungen.
Entlang der U-Bahn-Gleise im Bochumer Hauptbahnhof waren mehrere Beamer installiert. Ihre Bildfreigabe sollte sich automatisch an ein- und ausfahrende Züge anpassen. Dafür mussten Signale aus der physischen Umgebung zuverlässig in zeitlich abgestimmte Aktionen übersetzt werden.
Mehrere Lichtschranken lieferten nur einzelne Beobachtungen. Aus ihrer Reihenfolge musste die Anwendung ableiten, ob sich ein Zug im Gleis befand, in welche Richtung er fuhr und welchen Abschnitt er gerade belegte. Ich entwickelte dafür ein Zustandsmodell für beide Fahrtrichtungen, unmittelbar aufeinanderfolgende Züge und Fahrten mit unterschiedlichen Ausfahrten.
Abhängig von Position und Fahrtrichtung ließen sich für jeden Beamer eigene Verzögerungen konfigurieren. Die Shutter wurden dadurch entlang des Gleises zum passenden Zeitpunkt geschlossen und nach der Ausfahrt wieder geöffnet. Beim Programmstart blieb die Bildausgabe gesperrt, bis ein verwertbarer Zustand vorlag oder die festgelegte Initialisierung abgeschlossen war.
Die Lichtschranken waren über einen IFM-IO-Link-Master angebunden, dessen Zustände die Anwendung über HTTP und JSON abfragte. Die Beamer wurden per PJLink gesteuert. Neben Shutter und Stromzustand überwachte das System auch das Eingangssignal und erkannte über wechselnde Bildbereiche, ob auf den angeschlossenen Wiedergabesystemen tatsächlich Bildaktivität vorhanden war.
Gleis-, Beamer- und Bildaktivitätsdaten wurden regelmäßig unter einer gemeinsamen Monitoring-ID in MySQL gespeichert. Tägliche Protokolle und Fehlerbenachrichtigungen machten den Zustand aus der Ferne nachvollziehbar und lieferten die Grundlage für gezielte Diagnose.
Der Einsatzort war schwer zugänglich. Verbindungsabbrüche, Neustarts und unvollständige Signale behandelte ich deshalb als normale Betriebszustände. War der IO-Link-Master nicht erreichbar, sperrte die Anwendung kontrolliert die Bildausgabe, versuchte die Verbindung wiederherzustellen und nahm den Betrieb anschließend sicher wieder auf.
Ich verantwortete die Software vollständig: Architektur, Zustands- und Steuerungslogik, Implementierung, Tests, Remote-Inbetriebnahme, Erweiterungen und Produktionssupport. Die Anforderungen, Hardware und Installation vor Ort kamen vom Auftraggeber; die komplette Softwarelösung lag bei mir.
Nach der Inbetriebnahme im Juli 2022 wertete ich reale Zugbewegungen und Produktionsprotokolle aus und passte die Steuerung an die Beobachtungen im Betrieb an. Spätere Versionen spielte ich remote ein und behob unter anderem Probleme in Datenbankverbindungen, PJLink-Kommunikation, Desktop-Überwachung und Geräteerreichbarkeit.
Die Lösung wurde über mehrere Jahre produktiv eingesetzt, unterstützt und weiterentwickelt. Das Projekt verbindet für mich hardwarenahe Integration, fehlertolerante Software und vollständige Verantwortung für ein System, das außerhalb einer kontrollierten Entwicklungsumgebung zuverlässig funktionieren musste.