Zum hauptinhalt springen

Auf der Suche nach Corona im Berliner Untergrund

Titelbild

In Bussen und Bahnen steckt man sich nicht mit Corona an, behaupten die Verkehrsunternehmen immer wieder1 und starten Werbekampagnen zum “wieder einsteigen”. Das erscheint auf den ersten Blick irrational, da ÖPNV-Umgebungen viele Merkmale aufweisen, die laut RKI das Infektionsrisiko erhöhen: viele Menschen, geringe Abstände, geschlossene Räume.

Die Verbünde begründen ihr Vertrauen in die Sicherheit des ÖPNV damit, dass nur ein Bruchteil der ans RKI gemeldeten Infektionsorte Bus und Bahn betreffen.

Allerdings konnten die Gesundheitsämter mehr als 75% der Übertragungsorte gar nicht ermitteln.

Der ÖPNV ist ein idealer “versteckter” Übertragungsort: Viele Zufallsbegegnungen mit ständig wechselnden, unbekannten Menschen. Es ist damit unmöglich, ein Kontakttagebuch zu führen und diese Kontakte dem Gesundheitsamt mitzuteilen.

Um die tatsächliche Gefahr einschätzen zu können, überlegten wir uns also, wie wir bessere Daten über Coronafälle im ÖPNV erfassen können.

Nach kurzer Überlegung, uns selbst in die Bahn zu stellen und die Leute zu fragen, ob sie Corona haben und dabei unsere Gesundheit zu gefährden, hatten wir eine sehr viel bessere Idee…

Corona-Warn-App

Ein Ansatz, um potentielle Infektionswege unter fremden Menschen zu erfassen, ist das Contact Tracing über die Corona-Warn-App.

Das funktioniert auf zwei Arten:

Als Sender generiert die App einmal pro Tag eine neue, sehr lange, zufällige Zahl und speichert diese für die nächsten 14 Tage. Aus dieser täglichen Zahl wird nun etwa alle 15 Minuten nach einem öffentlich bekanntem Algorithmus eine Ableitung generiert (mit der man nicht auf die Originalzahl zurückschließen kann) und diese in regelmäßigen Abständen ausgesendet.
Wenn Nutzer*innen nun einen positiven Coronatest bekommen und das in der App melden, werden die 14 letzten Tageszahlen hochgeladen und alle anderen können sie sich herunterladen.

Als Empfänger hört die App die ganze Zeit auf die ausgesendeten Signale der anderen Apps und speichert diese für 14 Tage. Mindestens einmal täglich lädt sie alle verfügbaren Tageszahlen herunter und verwendet den öffentlich bekannten Algorithmus, um daraus die gleichen Ableitungen zu generieren und diese mit den empfangenen Signalen zu vergleichen. Findet sie hier zwei gleiche Zahlenfolgen, fand ein Risikokontakt statt, der dann in der App angezeigt wird.

Alle Daten, die älter als 14 Tage sind, werden automatisch gelöscht. So kann man sehr datensparsam und anonym Risikobegegnungen erkennen – auch im ÖPNV und an anderen Orten, wo sich viele unbekannte Menschen zufällig begegnen.


Wie viele Risikokontakte würde also ein Smartphone mit Corona-Warn-App ermitteln, das dauerhaft in einer Berliner U-Bahn liegen würde?

Vermutlich nur sehr wenige, weil es bald mitgenommen oder zerstört würde. Spätestens nach 2-3 Tagen wäre auch der Akku leer und wir müssten den U-Bahnwagen im kompletten Liniennetz wiederfinden, um das Smartphone zu bergen und die Daten auswerten zu können.

Selbst wenn wir all das akzeptieren oder verhindern könnten, hätten wir noch ein Problem: Die Angaben der Corona-Warn-App lassen in ihrem Detailgrad sehr zu wünschen übrig. Beispielsweise wird nur der Tag der letzten Risikobegegnung angezeigt.

Alles muss man selber machen…

Das Kontaktprotokoll der Corona-Warn-App basiert auf Bluetooth Low Energy (BLE). Diese Technik ist nicht nur in Smartphones verbaut, sondern es gibt auch sehr günstige Mikrocontroller mit eingebautem BLE-Modul – also klein, kostengünstig und stromsparend.

Vor uns lag nun die Aufgabe, ein eigenes Messgerät zu bauen und die relevanten Funktionen der App nachzuprogrammieren.

Außerdem brauchten wir noch eine Lösung, an die Daten zu kommen, während die Messgeräte U-Bahn fahren – um bei einem Verlust nicht komplett auf alle Messergebnisse verzichten zu müssen. Für eine regelmäßige Übertragung eignete sich das öffentliche WLAN der U-Bahnhöfe sehr gut.

Der Prototyp konnte nach etwa einer Woche Entwicklungszeit erfolgreich seine erste Testfahrt absolvieren.

So sehen die Messgeräte aus. Links installationsfertig verpackt, rechts in Einzelteilen.

So sehen die Messgeräte aus. Links installationsfertig verpackt, rechts in Einzelteilen.

Nach vielen Optimierungen konnten wir die Batterielaufzeit unserer Geräte auf durchschnittlich etwa 10 Tage erhöhen – weit mehr als mit einem Smartphone möglich gewesen wäre.

Wie genau wir das technisch gelöst haben, werden wir demnächst auch beschreiben. Das ist mindestens genauso spannend wie die Ergebnisse. Also abonniert den RSS-Feed und folgt auf Twitter

Immer eine Hand breit Sensor unterm Sitz

Bis Ende November hatten wir uns von der Funktionstüchtigkeit und Stabilität der Sensoren überzeugt, die Serverkomponente programmiert und ein effizientes Übertragungsprotokoll entwickelt, um aus aus den Tiefen des U-Bahn-Netzes kommunizieren zu können.

Jedes Messgerät wurde mit einer Mailadresse beklebt, damit ehrliche Finder*innen uns kontaktieren können2 und in mehreren nächtlichen Fahrten3 verteilten wir die Geräte. Dabei versuchten wir möglichst alle Linien gleichmäßig abzudecken.

Das hat nicht ideal geklappt, da die U-Bahnen gelegentlich die Linien wechseln, aber wir haben dabei eine Menge über das Berliner U-Bahnnetz gelernt, was auch noch mal einen eigenen Artikel wert wäre. Wusstet ihr zum Beispiel, dass nicht nur die Haltestellen, sondern auch die BVG-Betriebshöfe öffentlich nutzbares WLAN haben?

So fuhren 23 der kleinen Messgeräte von Ende November bis Anfang Januar durch den Berliner Untergrund, empfingen einmal pro Minute Corona-Warn-App Daten und sendeten die Messwerte regelmäßig an unseren Server.

Mit Gesamtkosten von etwa 400€ für Mikrocontroller (mehr Mikrocontroller als letztendlich verbaut), Werkzeuge und Verbrauchsmaterial sind wir trotzdem deutlich günstiger, als wenn wir die Messung mit Smartphones durchgeführt hätten. Die reinen Hardwarekosten pro Sensor liegen bei unter 8€. Kosten, bei denen Forschungseinrichtungen, Recherchenetzwerke oder Verkehrsunternehmen eine deutlich größere und damit repräsentativere Installation ermöglichen könnten.

Ein weiterer Vorteil der Eigenentwicklung ist, dass wir die rohen Daten sehen und sie so besser auswerten können.

Gegenüber einer rein Corona-Warn-App-basierten Lösung erfassen wir folgende zusätzliche Informationen:

  • exakter Zeitpunkt einer Messung
  • Dauer des Risikokontaktes
  • alle Signale der Corona-Warn-App, um zum Beispiel den Anteil der positiv gemeldeten in die Auswertung einbeziehen zu können
  • kein Zwangsfiltern von kurzen Begegnungen oder schwachem Signal
  • grobe Position der Messung (durch BVG WiFis)

Der Datenschutz ist weiterhin gewährleistet, da die übertragenen Daten ohnehin keine personenbezogenen Informationen enthalten.

Aussagekraft der Daten

Nachfolgend ein paar Einschränkungen zur Aussagekraft, die wir euch nicht verschweigen möchten:

  1. Die Wagen mit den Messgeräten waren nicht immer gleichzeitig auf allen Linien unterwegs oder standen zwischenzeitlich für mehrere Tage in Depots.

  2. Die Geräte waren innerhalb der Wagen aufgrund unterschiedlicher Fahrzeugtypen an unterschiedlichen Stellen verbaut. Das könnte die Abschirmung der Bluetooth-Signale beeinflusst haben. Eine Vergleichbarkeit zwischen Sensoren in unterschiedlichen Fahrzeugtypen wird damit erschwert.

  3. Außerdem lagen viele Feiertage in unserem Erfassungszeitraum von Ende November bis Anfang Januar und die Corona-Regelungen wurden mehrfach geändert.

  4. Genauso hat sich die Eröffnung der U5-Verlängerung in den Messergebnissen bemerkbar gemacht.

  5. Zusätzlich ist von einer Ungleichverteilung der Corona-Warn-App in den verschiedenen gesellschaftlichen Schichten und Risikogruppen auszugehen. Eventuell ist die Verbreitung der App in Berlin höher als im bundesweiten Durchschnitt, was man bei den späteren Rechenbeispielen im Hinterkopf behalten sollte.

  6. Zu beachten ist außerdem, dass die Sensoren in unseren Tests nur eine Sichtweite von etwa einer Wagenlänge hatten.

  7. Nicht zuletzt das führt zu der größten Einschränkung, dass 23 Messgeräte zu wenig sind, um wirklich aussagekräftige Erkenntnisse für 9 U-Bahn-Linien mit vielen hundert Zügen zu gewinnen. Für mehr hatten wir allerdings weder zeitliche noch finanzielle Kapazitäten.

Deshalb finden wir: Wenn Verkehrsunternehmen mit der Sicherheit im ÖPNV werben, dann sollte sich diese Aussage auf Fakten stützen, z.B. durch eigene Messungen – auch wenn die Anzahl der positiven Fälle allein noch nicht viel über Übertragungswahrscheinlichkeiten aussagt.

Zusätzlich könnten die Verkehrsunternehmen in ihren Zügen Luftqualitätswerte messen, beispielsweise CO2. Da ein hoher CO2-Gehalt auf schlechte Belüftung hinweist, können damit genauere Aussagen über das Übertragungsrisiko getroffen werden.

Die Verkehrsunternehmen hätten sogar noch mehr Vorteile: Mit der von uns genutzten Hardware könnte man Fahrzeugauslastungen in Echtzeit schätzen, was auch über die Pandemiebekämpfung hinaus sinnvoll sein könnte.

Wer sich von Verkehrsunternehmen dafür interessiert – wir helfen gerne, solche Systeme aufzubauen.

BVG, ihr liebt uns doch auch, oder?

BVG, ihr liebt uns doch auch, oder?

Datenvoodoo – nicht immer exakt, aber schön anzusehen

So fuhren unsere Messgeräte also etwas mehr als einen Monat durch die Tunnel der Hauptstadt und wir freuten uns täglich über die neu eintreffenden Daten.

Währenddessen glichen wir regelmäßig die Infektionsmeldungen auf dem Server der Corona-Warn-App mit unseren Daten ab und bereiteten die nun folgenden Auswertungen vor.


Im folgenden Bild sieht man, dass Begegnungen mit als infiziert gemeldeten Personen überwiegend unter einer Minute dauern. Das könnten Menschen sein, die sich beim Ein- oder Aussteigen oder auf der Suche nach einem Platz durch den Wagen bewegen. Vereinzelt konnten wir aber auch längere Mitfahrten von bis zu einer halben Stunde nachweisen.

Verteilung der Kontaktdauer infizierter Kontakte

Verteilung der Kontaktdauer infizierter Kontakte


Diese Karte zeigt, wie viele Messungen auf dem jeweiligen Streckenabschnitt durchgeführt wurden. Gut zu erkennen ist hier, dass die U8 und die U9 besser mit Messgeräten ausgestattet waren.

Wie oben bereits erwähnt, haben wir anfangs alle Linien mit Messgeräten gleichmäßig ausgestattet. Die ungleiche Zahl der Geräte ergab sich später, weil die Züge die Linien wechseln.

Anzahl der Messungen auf dem jeweiligen Streckenabschnitt

Anzahl der Messungen auf dem jeweiligen Streckenabschnitt

Der durch Bauarbeiten eingeschränkte Verkehr zwischen Kottbusser Tor und Warschauer Straße auf den Linien U1 und U3 ist gut sichtbar.

Ein Artefakt in den Messungen ist das südliche Ende der U9, zwischen Walther-Schreiber-Platz und Rathaus Steglitz. Dort konnten wir keine WLANs zur Positionsbestimmung empfangen und damit die Messungen nicht dem Streckenabschnitt zuordnen.


Im Anschluss rechnen wir mit vielen Zahlen, die auch von offiziellen Stellen nur geschätzt oder angenommen werden können. Auch die Aussagekraft unserer eigenen Zahlen ist nur begrenzt. So sind die Ergebnisse dieser “wir haben das mal auf dem Bierdeckel berechnet”-Methode mit Vorsicht zu genießen. Trotzdem gehen wir davon aus, dass die Größenordnungen annähernd den realen Zahlen entsprechen.

Man könnte auch sagen: Nicht alles, was folgt, ist falsch.

Da unsere Messungen nur in der Berliner U-Bahn erfolgten und wir keine Vergleichsmessungen an anderen Orten vorgenommen haben, können wir genauso wenig wie die Verkehrsunternehmen eine wirklich faktenbasierte Aussage darüber treffen, welche Rolle der ÖPNV in der Coronapandemie spielt.


Auf der folgenden Karte ist der Prozentsatz der Fahrten pro Streckenabschnitt markiert, auf dem wir ein als infiziert gemeldetes Signal empfangen haben.

Auf einigen Streckenabschnitten sieht es so aus, als gäbe es keine Infektionsgefahr. Dieser Eindruck kommt daher, dass wir insgesamt zu wenige Messungen haben. Das bedeutet nicht, dass es dort immer sicher ist.

Auch mögen unsere Höchstwerte von 1,6% wenig wirken, allerdings fallen hier noch ein paar weitere Faktoren ins Gewicht. So werden geschätzt nur 10-15% aller positiven Tests auch in der Corona-Warn-App gemeldet (damit wären wir also bei 10,6% bis 16% Wahrscheinlichkeit).
Hinzu kommt noch die Dunkelziffer mit geschätztem Faktor von mindestens 3 in Berlin für den entsprechenden Zeitraum.
Und schon sind wir bei einer theoretischen Wahrscheinlichkeit von über 30% (31,8% bis 48%), dass sich eine mit Corona infizierte Person in der Nähe befindet.

Anteil der Fahrten mit Infizierten-Messung pro Streckenabschnitt

Anteil der Fahrten mit Infizierten-Messung pro Streckenabschnitt


Insgesamt wurden 0,1% der empfangenen Signale später als infiziert gemeldet. Das bedeutet, das jede tausendste Person ein als (später) infiziert gemeldetes Signal sendete.

Das hört sich wieder wenig an, in U-Bahnwagen sitzt man allerdings meist nicht allein, sodass sich dieses Risiko mit der Anzahl der Personen multipliziert.

Wenn man außerdem bedenkt, dass nur etwa die Hälfte4 der positiv getesteten Nutzer*innen der Corona-Warn-App ihr Ergebnis über die App teilt und weiter von einer Dunkelziffer vom Faktor 3 ausgeht erhöht sich die Wahrscheinlichkeit rein rechnerisch auf 0,6% pro Person in der Nähe.

Wir möchten es nochmal explizit betonen: Die Zahlen sind mit viel Vorsicht zu genießen, aber die Daumenregel “In jeder vollen U-Bahn sitzt statistisch eine infizierte Person” bleibt.

Diese Karte Zeigt die Verteilung der 0,1% Positivsignale über das gesamte U-Bahnnetz

Diese Karte Zeigt die Verteilung der 0,1% Positivsignale über das gesamte U-Bahnnetz


Gern hätten wir die zeitliche Verteilung der infizierten Kontakte ausgewertet, im Verhältnis zu allen erfassten Kontakten.
So hätten wir beispielsweise sehen können, ob unter Schul- und Berufspendler*innen die Infiziertenrate höher ist als bei den oft verdächtigten Partygänger*innen am Freitag- oder Samstagabend. Da wir aber insgesamt nur knapp über 50 Coronafälle gemessen haben, können wir die Daten hier nicht sinnvoll interpretieren.

Als Beispiel, warum jegliche Interpretation dieser Daten unseriös wäre, zeigen wir hier 2 Grafiken, die jeweils die gleichen Daten auf gerade bzw. ungerade Stunden aggregiert darstellen:

Wo sind die Daten?

Wir haben die Daten nun veröffentlicht und dokumentiert.

Wie funktioniert die Technik dahinter?

Wir werden demnächst einen Artikel veröffentlichen, in dem wir genauer beschreiben, wie die Messgeräte funktionieren und welche spannenden Herausforderungen wir bei der Entwicklung überwinden mussten. Für alle, die jetzt schon neugierig sind oder das Projekt nachbauen wollen, haben wir den Sourcecode für die Messgeräte und die Serverkomponente veröffentlicht.

Vor allem wenn ihr ein Verkehrsunternehmen seid, stehen wir gern für einen (Video)call zur Verfügung, um auch technisch sehr genau zu erklären, wie wir vorgegangen sind und wie ihr das genauso und noch besser hinbekommt. Unsere Kontaktdaten kennt ihr ja.

Schlussgedanken

Die Corona-Warn-App spielt bei der Pandemiebekämpfung eine untergeordnete Rolle. Wer jedoch behauptet, das liege am zu hohen Datenschutz, lügt oder hat keine Ahnung, wovon er spricht.

Unsere Analysen zeigen, welche Erkenntnisse auch mit einem datensparsamen, dezentralen Ansatz möglich sind. Die Wirkungslosigkeit liegt an der geringen Nutzung, nicht angeschlossenen Laboren und kaputten Prozessen.

Menschen, die behaupten, man müsse da jetzt GPS oder sonstige Trackingmethoden einbauen, bewirken auch bloß eine noch größere Skepsis. Genau solche Aussagen führen zu noch geringerer Akzeptanz.

Für die Zukunft: Eine magische App allein löst nicht all eure Probleme!

Und übrigens: Wer im Homeoffice arbeitet oder Distanzunterricht bekommt, muss auch nicht den ÖPNV benutzen. #MachtDieBuerosZu #LasstDieSchulenUndKitasZu

Die komplette Entwicklung haben wir in unserer Freizeit, neben Brötchenjob und allgemeiner Pandemie-Erschöpfung gemacht und die ca. 400€ Material, Werkzeug und Hardware aus unserer eigenen Tasche bezahlt.
Wenn dir gefällt was wir tun und du uns dabei unterstützen willst, damit wir noch mehr solchen oder ganz anderen Quatsch machen können, kannst du dir unsere Unterstützungsseite ansehen. Es schlummern noch viele weitere Projektideen.

Wenn wir Fehler gemacht haben, ihr Verbesserungsvorschläge oder Feedback habt oder “Geheimwissen” anbieten könnt, lasst es uns wissen. Unsere Kontaktdaten findet ihr auf der entsprechenden Seite.

Update 1: Dauer zwischen Kontakt und Positivmeldung

Wenn wir betrachten, an welchem Tag die Tageszahlen veröffentlicht wurden und wann wir die Signale empfangen haben, können wir berechnen, wie lange nach dem Kontakt die Positivmeldung erfolgte:

Besonders interessant ist hier ein Eintrag mit 0 Tagen. Wir haben um circa 7:30 Uhr einen Kontakt gemessen, am nächsten Morgen wurde der Schlüssel dann als positiv gemeldet. Ob das die Fahrt zum Testzentrum war?

Update 2

Weil es Missverständnisse gab: Wir können natürlich keine Aussage über Ansteckungen oder Ansteckungswahrscheinlichkeiten machen, sondern nur über die Anwesenheit von infizierten Personen.

Um es noch mal hervorzuheben: Die errechneten Zahlen spiegeln auch in etwa die durchschnittlichen Zahlen des RKIs aus diesem Zeitraum wieder. Es deutet also, wenig überraschend, nichts darauf hin, dass im ÖPNV anteilig mehr oder weniger Menschen infiziert sind. Es sind insgesamt viele Menschen infiziert und im ÖPNV trifft man einfach auf viele Menschen.


  1. Teilweise mit sehr fragwürdigen Überschriften, bei denen von niedrigem Infektionsrisiko gesprochen wird, dann im Artikel aber nur das Unfallrisiko im Vergleich zum Auto besprochen wird ↩︎

  2. leider meldete sich niemand, obwohl wir Hinweise darauf haben, dass mehrere Messgeräte von BVG-Mitarbeitenden gefunden wurden ↩︎

  3. ein Hoch auf die Maskenpflicht! 😷 😃 ↩︎

  4. Die 50% beziehen sich auf die positiven Test unter den Menschen, welche die App benutzen. Da diese Zahl von der Gesamtzahl der App-Installationen abhängt, kann diese Zahl nur geschätzt werden. Wir verwenden hier die Schätzungen des RKI. Die 10%-15% aus der Rechnung darüber beziehen sich auf das Verhältnis zwischen der Gesamtzahl aller positiven Tests und den in der App gemeldeten. ↩︎