Aus Raspberry Pi Geek 07/2025

Raspberry Pi als Access Point mit Captive Portal (Seite 2)

Bevor wir mit den ersten Tests beginnen, starten wir alle veränderten Dienste noch einmal neu (Listing 3) und warten nach dem Restart des NetworkManagers einige Sekunden. Es kann sonst passieren, dass das Interface, an das sich Apache binden möchte, noch nicht wieder verfügbar ist.

Listing 3

Restart

$ sudo systemctl restart NetworkManager
$ sudo systemctl restart apache2

Tests

Für unseren ersten Test verwenden wir ein Notebook und verbinden uns mit dem WLAN AP. Nachdem wir uns dort angemeldet haben, geben wir im Browser die Adresse http://10.42.0.1 ein. Hier sollte die Startseite von Apache erscheinen (Abbildung 4).

Abbildung 4: Dank der Umleitung erscheint immer die Startseite von Apache2, egal, welche URL Sie eingeben.

Abbildung 4: Dank der Umleitung erscheint immer die Startseite von Apache2, egal, welche URL Sie eingeben.

Unabhängig davon, welche URL man jetzt im Webbrowser eingibt, es sollte stets die Startseite von Apache erscheinen. Ist das der Fall, funktioniert das Captive Portal wie geplant und leitet wunschgemäß alle HTTP-Anfragen um.

Fehlersuche

Wo gehobelt wird, fallen Späne. Daher möchte Ihnen der Autor ein paar Tipps mit an die Hand geben, die bei der Fehlersuche helfen. Viele Fehler im Netzwerk lassen sich anfangs nur schwer eingrenzen. Es ist immer eine gute Idee, als Erstes nachzuschauen, ob alle Geräte die erwarteten IP-Adressen verwenden. Der Aufruf ip a zeigt alle Interfaces mit ihrer IP-Konfiguration an.

Um herauszufinden, welche Dienste aktuell auf welches Interface gebunden sind, hilft die Kommando-Pipe netstat -an | grep -i LISTEN | grep -i tcp. Sie überprüft, ob die entsprechenden Dienste auf den Interfaces laufen, die wir dafür vorgesehen haben. Unter Raspberry Pi OS rufen Sie die System-Logfiles mit dem Kommando journalctl auf. Die Tabelle “Nützliche Journalctl-Parameter” zeigt eine Übersicht.

Kommando

Wirkung

journalctl -f

Anzeige des Systemprotokolls (wie tail -f)

journalctl -u Dienst

Protokoll für einen bestimmten Dienst

journalctl -b

Protokoll für den letzten Bootvorgang

man journalctl

Hilfeseiten von Journalctl

Bei der Erstkonfiguration haben wir selbst einen Fehler eingebaut: Durch das generelle Weiterleiten aller DNS-Anfragen an die IP-Adresse 10.42.0.1 fehlt auf dem RasPi eine funktionierende Namensauflösung. Tools wie Apt oder Pip finden daher ihre Quellen nicht mehr.

Um die Namensauflösung temporär wiederherzustellen, kommentieren wir die Regel address=/#/10.42.0.1 in der Konfigurationsdatei redirect.conf aus und starten den Network Manager mit sudo systemctl restart NetworkManager neu. Um den Redirect wieder zu aktivieren, entfernen wir die Auskommentierung wieder.

RGB-LEDs

Um eine schicke Möglichkeit zu haben, Statusinformationen über das Spiel nach außen zu geben, verwenden wir zwölf 8-Millimeter-WS2812-LEDs, die wir in den 3D-gedruckten Deckel montieren. Wir schalten alle Dioden in Reihe, verbinden also den DOUT (Digital Output) jeder LED mit dem DIN (Digital Input) der folgenden. An den MOSI-Pin des Raspberry Pi (GPIO10, Pin 19) schließen wir den DIN der ersten LED an. Die Dioden verwenden ein sehr spezielles Datenübertragungsverfahren. Daher setzen wir hier die Python-Bibliothek WS2812 [5] ein, die uns bei der Arbeit unterstützt.

Als Spannungsversorgung für die LEDs verwenden wir die 3,3 Volt des Raspberry Pi, die wir an GND und VDD aller LEDs anschließen. Das ist zwar nicht der Betriebsmodus, den das Datenblatt empfiehlt, aber es klappt in unserem Fall problemlos. Wir verwenden die LEDs an der SPI-Schnittstelle. Das erlaubt es, die Programme zum Ansteuern ohne Root-Berechtigungen laufen zu lassen. Das Pinout der Dioden zeigt Abbildung 5. Achten Sie beim Einlöten der LEDs darauf, dass das Gehäuse später noch richtig schließt.

Abbildung 5: Das Pinout der WS2812-LEDs. Die digitalen Ein- und Ausgänge der Dioden müssen Sie in dieser Konfiguration jeweils miteinander verbinden.

Abbildung 5: Das Pinout der WS2812-LEDs. Die digitalen Ein- und Ausgänge der Dioden müssen Sie in dieser Konfiguration jeweils miteinander verbinden.

Virtuelle Python-Umgebung

Mit den Kommandos aus Listing 4 installieren wir die Bibliothek in eine virtuelle Python-Umgebung und aktivieren die SPI-Schnittstelle. Dazu aktivieren wir vorab, wie beschrieben, temporär die Namensauflösung, sonst findet Pip seine Installationsquellen nicht.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben