Topics

Ich bin kein Engineer, habe aber mit Claude Code und einem Raspberry Pi ein KidsWiFi-Verwaltungssystem gebaut

  • column

Hallo! Ich bin Oga, Designerin und Operations-Managerin.
Ich bin seit 2015 bei der Firma und gehöre damit längst zu den Veteraninnen. In meinem Blog Yururoga schlüpfe ich gern in eine Gyaru-Rolle und schreibe dort Artikel, von denen man nicht so recht weiß, wem sie eigentlich nützen.
Diesmal wollte ich mich aber richtig reinhängen und etwas ernsthafter werden.

Vorab: Praktische Erfahrung als Engineer habe ich so gut wie keine.
Im Job sehe ich zwar ab und zu ein Terminal, schaue dabei aber höchstens auf vorbeiziehende Logs. Selbst Befehle einzutippen und damit etwas zu bauen, hielt ich für etwas, das nur »Leute, die das können« machen.
Und trotzdem habe ich es jetzt geschafft, mit dem Raspberry Pi von der Netzwerkkonfiguration bis zur Web-App alles selbst umzusetzen … Wenn der Bedarf groß genug ist, wächst man offenbar über sich hinaus.

Der Auslöser: das iPad-Problem der Kinder

Unsere Kinder benutzen das iPad ständig. Lässt man sie gewähren, nimmt das kein Ende.
Also wollte ich vor allem daran etwas ändern.

Genau zu dieser Zeit kam von der Firma der Auftrag: "Bau doch etwas, was dir gefällt, wie ein firmeninternes Hackathon-Projekt."
Bei Liberogic herrscht gerade ein regelrechter Claude-Code-Boom. Alle Mitarbeitenden arbeiten mit Claude als Partner, und im Büro ist im Moment richtig Entwicklungsfieber. Ich zahle 25 US-Dollar im Monat, manche Kolleg:innen nutzen aber noch teurere Pläne. Es herrscht eine Stimmung, in der alles "mit KI" gebaut wird.

»Ich wollte schon immer mal einen Raspberry Pi ausprobieren (einfach, weil das so cool aussieht).«
»Ich will das iPad-Problem wie ein Engineer lösen.«
»Ich möchte bei einem Hackathon etwas Greifbares vorweisen.«

Aus diesen drei Impulsen ist schließlich das Projekt entstanden: ein Verwaltungssystem, mit dem sich das WLAN für Kinder per Knopfdruck am Smartphone erzwungen ein- und ausschalten lässt.

Ich habe schon mal ein Terminal gesehen, aber Einrichtungen habe ich so gut wie nie vorgenommen.
Trotzdem habe ich es mit Unterstützung von Claude versucht, mich dabei immer wieder im Kreis gedreht und bin schließlich bis zu dieser "magischen Box" gekommen!

Schritt 1 — Einrichtung des Raspberry Pi

Vorbereitung mit dem Raspberry Pi Imager → SSH-Verbindung

Zuerst wird ein Betriebssystem auf den Raspberry Pi 4 installiert. Dazu installiert man den Raspberry Pi Imager (das offizielle Schreibprogramm) auf dem Mac und schreibt damit ein 64-Bit-Betriebssystem auf die MicroSD-Karte. Wichtig, aber leicht zu übersehen: In den Schreibeinstellungen sollte SSH aktiviert werden.

Den Raspberry Pi mit einem LAN-Kabel an den Router anschließen und einschalten. Danach genügt im Terminal des Mac dieser Befehl, um die Verbindung herzustellen.

terminal (Mac)

ssh [email protected]

Sobald im Terminal pi@raspberrypi:~ $ erscheint, war ich ehrlich begeistert. Als Nächstes wird das System aktualisiert.

sudo apt update && sudo apt upgrade -y

Schritt 2 — WLAN-Zugangspunkt einrichten

Konfiguration von hostapd / dnsmasq / iptables

Damit der Raspberry Pi als "WLAN-Zugangspunkt" arbeitet, werden zwei Softwarepakete installiert. hostapd sendet das WLAN-Signal, und dnsmasq verteilt IP-Adressen an die verbundenen Geräte.

sudo apt install hostapd dnsmasq

In den Konfigurationsdateien werden die SSID (der WLAN-Name) und das Passwort festgelegt. Zur besseren Übersicht wurde das Netzwerk "KidsWiFi" genannt.

/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(パスワード)
wpa_key_mgmt=WPA-PSK

Als Nächstes legen Sie den IP-Adressbereich fest, der an die verbundenen Geräte vergeben wird.

/etc/dnsmasq.conf

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

Zuletzt richten Sie IP-Forwarding und NAT ein, damit der Raspberry Pi als Vermittler ins Internet fungieren kann. Ohne diesen Schritt können Sie sich zwar mit KidsWiFi verbinden, aber nicht ins Internet gelangen.

# IPフォワーディングを永続化
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf

# NATの設定(eth0経由でインターネットに出られるようにする)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Bei jedem Neustart wechselte wlan0 in den Status DOWN. Ich habe deshalb eine systemd-Dienstdatei geschrieben, sodass die Netzwerkkonfiguration beim Start automatisch ausgeführt wird. Das Problem war gelöst, nachdem ich Claude mit „Warum funktioniert es schon wieder nicht!?“ um Hilfe gebeten hatte.

Als „KidsWiFi“ in der WLAN-Liste des Smartphones auftauchte und die Verbindung ins Internet funktionierte, schrieb ich im Chat spontan „Herr Lehrer, es hat geklappt!“ (und tatsächlich habe ich es getippt).

Schritt 3 — Eine Webanwendung für die Administrationsoberfläche erstellen

Implementierung einer Oberfläche zur Bedienung per Smartphone mit Python und Flask

Nachdem der WLAN-Access-Point steht, folgt als Nächstes die Administrationsoberfläche, über die sich das Netz vom Smartphone aus ein- und ausschalten lässt. Dafür verwende ich Flask, ein Webframework für Python, und betreibe auf dem Raspberry Pi einen Webserver. Ich habe zunächst in einer lokalen Mac-Umgebung entwickelt, die Funktion dort geprüft und den Code erst danach auf den Raspberry Pi übertragen.

Terminal (Mac) – Vorbereitung der Entwicklungsumgebung

python3 -m venv venv
source venv/bin/activate
pip install flask

Das Ein- und Ausschalten des WLANs funktioniert im Grunde so, dass lediglich die Verbindung ins Internet blockiert wird. Das WLAN-Signal von KidsWiFi wird dauerhaft gesendet. Mit iptables, der Linux-Firewall, wird jedoch gesteuert, ob Pakete ins Internet verworfen werden. Als Code betrachtet ist das erstaunlich einfach.

app.py (Auszug) – Kernlogik der WLAN-Steuerung

import subprocess

def enable_internet():
    # ブロックルールを削除 → インターネット解放
    subprocess.run([
        'sudo', 'iptables', '-D', 'FORWARD',
        '-i', 'wlan0', '-j', 'DROP'
    ], capture_output=True)

def disable_internet():
    # ブロックルールを追加 → インターネット遮断
    subprocess.run([
        'sudo', 'iptables', '-I', 'FORWARD',
        '-i', 'wlan0', '-j', 'DROP'
    ], capture_output=True)

Damit ist das Netz im Handumdrehen lahmgelegt. Mit einer einzigen Befehlszeile hängt sich das iPad eines Kindes auf. Ich hatte das Gefühl, eine ziemlich mächtige Fähigkeit in die Hand bekommen zu haben (auch wenn ich sie noch nicht richtig nutzen kann).

Die Oberflächen des Systems habe ich getrennt für Kinder und Eltern gestaltet.
Auf der Kinderoberfläche gibt es sogar eine Roulette-Funktion!
Eine einseitig festgelegte Zeitbegrenzung finden Kinder schließlich auch nicht toll. Die Idee dahinter: Ein Ergebnis, das sie selbst per Roulette ausgelost haben, akzeptieren sie vielleicht eher.
Das Ganze soll wie ein Spiel funktionieren: „Wie viel WLAN-Zeit gibt es heute?!“ Mit diesem Mechanismus wird die oft zermürbende Verhandlung darüber, wann der iPad-Konsum endet, in ein eher fröhliches Spiel verwandelt.

  • Bildschirm für Kinder
    → Das Roulette ergibt 30, 45 Minuten oder 1 Stunde.
    → Countdown der verbleibenden Zeit
    → Eine einstündige Abkühlphase nach Ablauf der Zeit
    → Gesamte Nutzungszeit
    → Verbleibende Roulette-Versuche werden angezeigt
  • Elternoberfläche (Dashboard)
    → Passwortschutz
    → Notfall-WLAN aus
    → Hausaufgabenmodus (vollständige Sperre)
    → Obergrenze für Roulette-Versuche
    → Zeitpunkt für erzwungene Abschaltung
    → Protokoll der Nutzungshistorie

Während der Entwicklung trat das Problem auf, dass iptables auf dem Mac nicht verfügbar ist und sich daher nicht testen lässt. Für den Mac habe ich deshalb eine Dummy-Funktion bereitgestellt, die lediglich eine print-Ausgabe erzeugt, damit die Funktion überprüft werden kann.
Solche Hänger nach dem Motto „Und jetzt?!“ habe ich ebenfalls alle gemeinsam mit Claude durchgesprochen.

Übrigens: Da ich eigentlich Designer bin, dachte ich beim Warten auf die Ausgabe, ich müsste das Layout der Oberflächen selbst gestalten. Umso überraschter war ich, dass die Ergebnisse so sauber aussahen. Nachbearbeitung war kaum nötig.
Das ist irgendwie ein bisschen ärgerlich, irgendwie aber auch erfreulich.

Schritt 4 – Deployment auf dem Raspberry Pi und automatischer Start

Dateiübertragung per SCP → Registrierung als systemd-Dienst

Die fertigen Dateien übertragen Sie vom Mac auf den Raspberry Pi. Mit dem Befehl scp geht das in einem Schritt.

Terminal (Mac) – Übertragung auf den Raspberry Pi

scp -r templates app.py [email protected]:~/wifi-manager/

Da es mühsam ist, Flask nach jedem Neustart manuell zu starten, schreibe ich eine systemd-Dienstdatei für den automatischen Start. Das Ziel ist ein Zustand, in dem sich alles von selbst startet, sobald der Strom eingeschaltet wird.

/etc/systemd/system/wifi-manager.service

[Unit]
Description=WiFi Manager
After=network.target wifi-setup.service

[Service]
ExecStartPre=/bin/bash -c 'echo > /home/pi/wifi-manager/state.json'
ExecStartPre=iptables -F FORWARD
ExecStart=/usr/bin/python3 /home/pi/wifi-manager/app.py
WorkingDirectory=/home/pi/wifi-manager
Restart=always
User=root

[Install]
WantedBy=multi-user.target
# サービスを有効化して起動
sudo systemctl enable wifi-manager
sudo systemctl start wifi-manager

Jetzt läuft alles, sobald der Strom eingeschaltet wird. Wenn man im Browser des Smartphones http://192.168.4.1:5000 aufruft, öffnet sich der Roulette-Bildschirm. Wow, es hat tatsächlich funktioniert.

Was ich dabei gedacht habe

Dass ich als Nicht-Ingenieurin die Netzwerkeinstellungen bis hin zu Python vollständig umsetzen konnte, lag zweifellos daran, dass ich den Prozess im
Dialog mit Claude gestalten konnte. Hängt man fest, gibt man die Fehlermeldung einfach unverändert ein. Fragt man „Was muss ich als Nächstes tun?“, erhält man eine Schritt-für-Schritt-Anleitung. Fragt man „Warum passiert das?“, wird es verständlich erklärt.

Man liest viel davon, dass Ingenieure mit KI in rasantem Tempo entwickeln. Doch auch für die kleinen, aber drängenden Probleme des Alltags ist KI ein starker Partner.

„Eine Idee, die man sich ausdenkt, wird unabhängig von Unternehmensgröße und persönlichen Fähigkeiten Wirklichkeit“ –
genau diese Demokratisierung des Machens konnte ich am eigenen Leib erfahren, und das war die größte Erkenntnis.

Und das eigentliche Problem mit dem iPad meines Sohnes? Ehrlich gesagt ist es noch nicht gelöst.

Das System läuft einwandfrei. Jetzt liegt es wohl an meinem Umgang als Mutter. Ich gebe mein Bestes!

Über den Autor

Lebt in Fukushima und liefert sich täglich einen Kampf mit ihrem sehr aktiven Sohn. Als Designerin mit Kunsthochschulabschluss und Operations-Managerin setzt sie ihre Sensibilität für Gestaltung ein und arbeitet mit vollem Einsatz. Ihre Stärken: Anpassungsfähigkeit und Reaktionsschnelligkeit, geschult durch die Erziehung.

Oga

Designerin / Betriebsmanagerin

Artikel dieses Teammitglieds ansehen

Verlässliches Team und schnelle Reaktionsfähigkeit sind unsere Stärken

Bei Liberogic werden wir von unseren Kunden hoch geschätzt, da unsere erfahrenen Mitarbeiter Projekte proaktiv vorantreiben.
Wir achten darauf, Projektmanager und Direktoren gezielt einzusetzen, damit das gesamte Projekt reibungslos verläuft. Um unnötige Kostensteigerungen durch Vollzeitbindung zu vermeiden, verteilen wir Ressourcen passgenau. Zudem sind wir für unsere Geschwindigkeit bekannt, vom Verständnis der Anforderungen bis zur Erstellung und Einreichung von Angeboten.

Hinweis: Wir bieten keine SES-typischen Vor-Ort-Einsätze an. Wir bitten um Ihr Verständnis.

Sie können nahezu alle gängigen Tools für Projektmanagement und Chat nutzen, darunter Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex und viele weitere.

Sprechen Sie uns gerne auf Ihre Herausforderungen im Web an.

Fallstudien