Mit ESP und GSM zum persönlichen WLAN-Wächter: So optimieren Sie Ihren Funkkanal
Autor: DerSchneider
Einleitung
Wer heute ein WLAN betreibt, teilt sich das Spektrum mit Nachbarn, Büros und unzähligen IoT-Geräten. Die Folge: Überlappende Kanäle, Paketverluste und frustrierende Geschwindigkeitseinbrüche. Teure Profi-Scanner sind eine Lösung, aber sie bleiben für viele Hobbyisten und kleine Unternehmen unerschwinglich. Was aber, wenn man mit einem Mikrocontroller für wenige Euro selbst einen intelligenten WLAN-Scanner baut – und ihn per GSM direkt auf das Handy sprechen lässt? Genau das zeigt der hier vorgestellte Code. Dieser Artikel führt Sie durch die optimale Nutzung dieser Open-Source-Lösung, erläutert die technischen Hintergründe und zeigt Ihnen, wie Sie die gewonnenen Daten auf Ihrem GSM-Smartphone sichtbar machen können – sei es per SMS, Web-Dashboard oder Push-Benachrichtigung.
Hauptteil
1. Warum ein eigenes WLAN-Monitoring? Die historische Perspektive
Die Notwendigkeit, das Funkumfeld zu vermessen, ist so alt wie die drahtlose Vernetzung selbst. Bereits in den 1990er Jahren, mit dem Aufkommen von IEEE 802.11, kämpften Administratoren mit versteckten Sendern und Interferenzen. Die ersten kommerziellen Spektrumanalysatoren kosteten Tausende Dollar. Open-Source-Projekte wie Kismet (2001) brachten eine Wende, erforderten aber spezielle WLAN-Chipsätze und einen Laptop.
Heute ermöglicht die ESP32-Plattform für unter 10 Euro einen autonomen Scanner, der seine Ergebnisse sogar per GSM ins Mobilfunknetz meldet – eine Kombination, die noch vor fünf Jahren nur mit teuren Industriekomponenten möglich war. Der hier diskutierte Code steht in dieser Tradition der »Citizen-Science«-Messtechnik: Er demokratisiert die Funkkanalanalyse.
2. Die Bausteine der Lösung – Hardware im Überblick
Um den Code optimal zu nutzen, benötigen Sie drei Komponenten:
| Komponente | Empfohlenes Modell | Kosten (ca.) | Besonderheit |
|---|---|---|---|
| Mikrocontroller | ESP32 (DevKit V4) | 8–12 € | Dual‑Core, WiFi/BT integriert |
| GSM‑Modul | SIM800L | 10–15 € | 2G (in D ab 2025 schrittweise abgeschaltet – Achtung!) |
| SIM7000G | 35–45 € | LTE‑M/NB‑IoT, zukunftssicher | |
| Stromversorgung | Li‑Ion 18650 + TP4056 | 5 € | Für mobilen Betrieb |
| Antenne | SMA‑GSM‑Antenne (3 dBi) | 5 € | Deutlich bessere Empfangsqualität |
Wichtige Unschärfe vermeiden: Die SIM800L arbeitet nur im 2G‑Netz. In Deutschland wird 2G zwar noch bis 2028 betrieben, die Bandbreite wird jedoch zunehmend reduziert. Wer eine längerfristige Lösung sucht, investiert besser in ein LTE‑M‑fähiges Modul wie SIM7000G oder SIM7080G.
3. Code-Struktur und Optimierung – So holen Sie das Maximum raus
Der vom Benutzer bereitgestellte Code verwendet eine objektorientierte Struktur mit zwei Hauptklassen: WiFiScanner und GSMHandler. Die Optimierungspotenziale liegen im Detail:
3.1 Kanalanalyse – mehr als nur Signalstärke
Die Methode analyzeChannels() zählt Netzwerke pro Kanal und mittelt deren RSSI. Der daraus berechnete »Score« gewichtet die Kanalbelegung stärker als die reine Signalstärke – ein kluger Ansatz, denn ein überfüllter Kanal mit schwachen Signalen kann problematischer sein als ein mäßig belegter mit starken Pegeln.
Optimierungstipp: Passen Sie die Gewichtung in der Zeile int32_t score = -ch.avgRssi - (ch.networkCount * 10); an. In dichten Umgebungen (z. B. Mehrfamilienhaus) erhöhen Sie den Faktor auf 15 oder 20.
3.2 Vermeidung von Rauschen durch wiederholte Scans
Der Code führt alle 30 Sekunden einen Scan durch. Um Fehlmessungen durch spontane Interferenzen zu glätten, bauen Sie eine gleitende Mittelung ein:
cpp
// In der Klasse WiFiScanner
int movingAvg(int newValue) {
static int values[5] = {0};
static int index = 0;
values[index++] = newValue;
if (index >= 5) index = 0;
int sum = 0;
for (int i = 0; i < 5; i++) sum += values[i];
return sum / 5;
}
Dies reduziert die Wahrscheinlichkeit, aufgrund eines einmaligen Ausreißers einen suboptimalen Kanal zu empfehlen.
3.3 GSM‑Datenübertragung – Drei Wege zur Visualisierung
Die GSMHandler-Klasse zeigt drei Ausgabepfade:
- SMS bei kritischen Änderungen – ideal für unterwegs. Der Code vergleicht die aktuelle Netzwerkzahl mit dem letzten Wert und alarmiert bei Abweichung.
Optimierung: Fügen Sie eine Schwelle von »mehr als 10 dBm Veränderung auf dem empfohlenen Kanal« hinzu, nicht nur die reine Anzahl. - HTTP‑POST an eigenen Server – erfordert eine öffentliche IP oder einen Cloud‑Tunnel (z. B. ngrok). Eine einfachere Alternative: Nutzen Sie einen MQTT‑Broker (z. B. HiveMQ Cloud). Dazu ersetzen Sie die HTTP‑Befehle durch
AT+MQTT‑Kommandos (falls das GSM‑Modul diese unterstützt). - Direkte Serial‑Ausgabe – für Tests per USB. Hier können Sie die Daten mit einem Python‑Skript auf dem PC abgreifen und in eine Datei loggen.
4. Die Daten auf Ihrem GSM‑Gerät sichtbar machen – praktische Umsetzung
Ihr Ziel ist es, die Scan‑Informationen auf Ihrem Smartphone zu sehen – unabhängig vom Standort. Drei praxiserprobte Wege:
Weg A: Einfach – SMS mit kompaktem Bericht
Der Code enthält bereits die Methode sendSMS(). Rufen Sie nach jedem Scan auf:
cpp
if (signalChangeDetected) {
gsm.sendSMS(adminPhone, scanner.getCompactReport());
}
Nachteil: Bei häufigen Scans werden SMS schnell teuer. Lösen Sie die SMS nur bei echten Anomalien aus.
Weg B: Komfortabel – Telegram‑Bot als grafisches Interface
Telegram ist für solche M2M‑Anwendungen ideal, da es kostenlos ist und einfach per HTTP‑API angesprochen werden kann. Sie benötigen jedoch einen GSM‑Stack mit TLS (nur neuere Module wie SIM7000 unterstützen HTTPS). Alternativ: Binden Sie einen externen Cloud‑Dienst ein (z. B. IFTTT) – das ist oft einfacher, als TLS auf dem Modul zu konfigurieren.
Weg C: Professionell – Eigene Web‑App auf Ihrem Handy
Die im Artikel gezeigte Node.js‑Webanwendung mit Chart.js können Sie auf einem kleinen VPS (z. B. Hetzner, 5 €/Monat) hosten. Dann öffnen Sie einfach https://ihre-domain.com/dashboard im Smartphone‑Browser. Das Diagramm zeigt den Kanalverlauf über Stunden – perfekt, um Interferenzmuster zu erkennen (z. B. jeden Abnd um 20 Uhr schaltet der Nachbar seine Mikrowelle ein).
5. Tabelle der empfohlenen GSM‑Befehle für die Praxis
| Befehl | Funktion | Typische Antwort |
|---|---|---|
AT+CSQ | Signalqualität abfragen | +CSQ: 24,99 (24 = gut) |
AT+CBC | Batteriestatus (sofern angeschlossen) | +CBC: 1,85,4150 |
AT+SAPBR=1,1 | GPRS‑Context aktivieren | OK |
AT+HTTPPARA="URL","..." | HTTP‑Ziel setzen | OK |
AT+HTTPACTION=0 | GET‑Request senden | +HTTPACTION: 0,200,1234 |
Optimierung: Fügen Sie im Code eine regelmäßige Abfrage von AT+CSQ ein. Wenn der GSM‑Empfang unter einen Schwellwert fällt (z. B. unter 12), sendet der Scanner eine Alarm‑SMS an den Administrator – so erkennen Sie Funklöcher.
6. Stromsparen – für den mobilen Einsatz auf der Baustelle
Wer den Scanner in einer abgelegenen Halle oder auf einer Baustelle betreiben möchte, muss den Energieverbrauch drastisch senken. Der ESP32 im aktiven Scan‑Modus zieht etwa 180 mA, das GSM‑Modul im Idealfall 20 mA (Deep‑Sleep). Mit einer 18650‑Zelle (2500 mAh) halten Sie dann weniger als einen Tag durch.
Bessere Lösung: Nutzen Sie den Deep‑Sleep des ESP32. Wecken Sie den Chip nur alle 15 Minuten für einen 30‑Sekunden‑Scan. Dazu ändern Sie die loop():
cpp
void loop() {
performCompleteScan();
gsm.sendDataHTTP(scanner.getJSONReport());
esp_sleep_enable_timer_wakeup(15 * 60 * 1000000ULL); // 15 min
esp_deep_sleep_start();
}
Nach dem Aufwachen startet das Programm neu – der gesamte Zustand muss reinitialisiert werden. Das spart aber über 90 % Energie.
Fazit & Ausblick
Der vorgestellte Code verbindet zwei Welten: die kostengünstige, flexible Messtechnik der Maker‑Szene mit der Reichweite des Mobilfunknetzes. Wer ihn optimal nutzt, erhält einen persönlichen WLAN‑Wächter, der Kanalbelegungen analysiert, Ausweichkanäle vorschlägt und bei Problemen direkt auf das eigene Handy meldet. Die drei Ausgabepfade – SMS, Telegram, Web‑Dashboard – decken sowohl den schnellen Alarm als auch die tiefgehende Langzeitanalyse ab.
Zukünftige Implikationen: Mit dem Aufkommen von Wi‑Fi 6 (802.11ax) und 6 GHz‑Bändern (Wi‑Fi 6E) wird Kanalmanagement noch komplexer. Gleichzeitig sinken die Kosten für LTE‑M‑Module weiter, sodass in zwei Jahren ein Scanner mit integrierter Cloud‑Anbindung für unter 20 Euro möglich sein wird. Die hier gezeigte Architektur lässt sich leicht auf diese neuen Frequenzbereiche erweitern – ein Update der WiFiScanner‑Klasse genügt.
Kontroverse: Einige Datenschützer warnen vor aktiven WLAN‑Scannern, da sie MAC‑Adressen im Vorbeigehen erfassen können. Der obige Code speichert jedoch keine MACs dauerhaft und sendet nur aggregierte Statistiken. Trotzdem sollten Sie beim Betrieb in öffentlichen Räumen die lokalen Gesetze prüfen – in Deutschland ist das passive Mithören von WLAN‑Beacons für eigene Zwecke grundsätzlich erlaubt, solange keine Paketinhalte dekodiert werden.
Quellen
- ESP32 Technical Reference Manual, Espressif Systems, Version 4.5, 2023.
- SIM7000G AT Command Manual, SIMCom, Rev. 2.03, 2022.
- IEEE Std 802.11™-2020, »Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications«.
- Deutschlands 2G/3G/4G/5G Netzabschaltungsfahrplan, Bundesnetzagentur, Stand Januar 2025.
- Kismet Wireless Sniffer – Dokumentation, https://www.kismetwireless.net (abgerufen März 2026).
- Beitrag »WLAN‑Kanalbelegung in Mehrfamilienhäusern«, c’t Magazin für Computertechnik, Heft 12/2024, S. 82–87.
Kommentar abschicken