{"id":2685,"date":"2026-03-28T11:49:22","date_gmt":"2026-03-28T10:49:22","guid":{"rendered":"https:\/\/g7itchme.wordpress.com\/?p=2685"},"modified":"2026-03-28T11:49:22","modified_gmt":"2026-03-28T10:49:22","slug":"der-unsichtbare-wachter-im-eigenheim-ein-esp8266-als-wlan-monitor","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/der-unsichtbare-wachter-im-eigenheim-ein-esp8266-als-wlan-monitor\/","title":{"rendered":"Der unsichtbare W\u00e4chter im Eigenheim: Ein ESP8266 als WLAN-Monitor"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Einleitung: Die Tyrannei der Unsichtbarkeit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Drahtlose Netze durchdringen unseren Alltag so selbstverst\u00e4ndlich wie die Luft zum Atmen. Dass ein Funksignal jederzeit verf\u00fcgbar ist, gilt l\u00e4ngst als Grundrecht digitaler Existenz \u2013 doch kaum jemand wei\u00df, ob dieses Signal tats\u00e4chlich stark, stabil oder \u00fcberhaupt noch vorhanden ist. Die Leidensgeschichten sind bekannt: das Videotelefonat, das w\u00e4hrend der entscheidenden Aussage einfriert; der Smart-Home-Sensor, der nachts pl\u00f6tzlich nicht mehr reagiert; der Homeoffice-Arbeitsplatz, der nach einem Router-Neustart den Zugang zum Firmennetzwerk verweigert. Die Ursache bleibt meist unsichtbar, das Problem ungreifbar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier setzt ein bemerkenswertes Bastelprojekt an, das in seiner Einfachheit und Tiefe exemplarisch f\u00fcr die Maker-Kultur der 2020er-Jahre steht: ein WLAN-Monitor, der auf dem winzigen Mikrocontroller ESP8266 basiert, zwei definierte Netzwerke \u00fcberwacht, deren Signalst\u00e4rke permanent anzeigt und bei Unterschreitung einer Schwelle Alarm schl\u00e4gt. Was auf den ersten Blick wie eine nostalgische Spielerei mit einem mittlerweile veralteten Chip wirkt, entpuppt sich bei n\u00e4herer Betrachtung als Lehrst\u00fcck \u00fcber die grundlegenden Prinzipien drahtloser Kommunikation, \u00fcber die Kultur des Selberbauens und \u00fcber die Frage, wer eigentlich die Kontrolle \u00fcber die eigenen digitalen Lebensadern besitzt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Historischer Kontext: Vom Spektrumanalysator zum Steckbrett<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Noch vor einem Jahrzehnt w\u00e4re ein solches Vorhaben undenkbar gewesen. Professionelle WLAN-Monitore geh\u00f6rten zur teuren Ausstattung von Netzwerkadministratoren oder Elektrotechnik-Laboren. Ger\u00e4te wie der&nbsp;<em>Fluke Networks AirCheck<\/em>&nbsp;kosteten mehrere tausend Euro, waren sperrig und bedurften einer Einarbeitung, die weit \u00fcber das Wissen eines Heim\u2011IT\u2011Interessierten hinausging. Die Signalst\u00e4rke eines WLANs zu messen bedeutete, entweder in teure Spektrumanalysatoren zu investieren oder sich mit den rudiment\u00e4ren Bordmitteln des Betriebssystems zu begn\u00fcgen, die kaum mehr als einen groben Balken anzeigten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Wendepunkt kam mit der Einf\u00fchrung des ESP8266 im Jahr 2014. Erstmals stand ein Mikrocontroller mit integriertem WLAN f\u00fcr weniger als f\u00fcnf Euro zur Verf\u00fcgung \u2013 eine disruptive Entwicklung, die der Maker-Bewegung eine v\u00f6llig neue Dimension er\u00f6ffnete. Pl\u00f6tzlich konnte jeder Bastler ein Ger\u00e4t mit Internetanbindung bauen, ohne sich in komplexe Funkmodul\u2011Technik einarbeiten zu m\u00fcssen. Die Community um den ESP8266 wuchs rasant; Bibliotheken wie die&nbsp;<em>ESP8266WiFi<\/em>-Bibliothek machten es m\u00f6glich, nicht nur als Client auf Netzwerke zuzugreifen, sondern auch selbst als Access Point aufzutreten oder umfangreiche WLAN-Scans durchzuf\u00fchren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das hier vorgestellte Projekt nutzt genau diese F\u00e4higkeiten: Es kombiniert die Scan-Funktion zur kontinuierlichen \u00dcberwachung der Signalst\u00e4rke mit einem eigenen Access Point, \u00fcber den der Benutzer das Ger\u00e4t konfigurieren kann. Es ist ein Paradebeispiel daf\u00fcr, wie aus einem einfachen Chip ein komplexes Messinstrument wird \u2013 und wie sich die einstige Dom\u00e4ne der Profis in die H\u00e4nde von Hobbyisten verlagert hat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technische Tiefe: Der Code als lebendiges Dokument<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der zugrunde liegende Quellcode (in der Arduino-IDE f\u00fcr den ESP8266) ist mehr als nur eine Aneinanderreihung von Befehlen. Er spiegelt die ganze Bandbreite der Herausforderungen wider, die mit der Entwicklung robuster eingebetteter Systeme verbunden sind.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Datenintegrit\u00e4t durch CRC32<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Besonders bemerkenswert ist der Einsatz einer CRC32-Pr\u00fcfsumme f\u00fcr die in EEPROM gespeicherten Einstellungen. Im Gegensatz zu vielen Hobby-Projekten, die die Konfiguration einfach ohne Absicherung in den nichtfl\u00fcchtigen Speicher schreiben, wird hier sichergestellt, dass besch\u00e4digte Daten erkannt und automatisch zur\u00fcckgesetzt werden. Dies ist nicht nur eine akademische \u00dcbung: Spannungsabf\u00e4lle w\u00e4hrend des Schreibens oder Alterungsprozesse des EEPROMs k\u00f6nnen durchaus zu Bitfehlern f\u00fchren. Ein System, das im Fehlerfall einfach neu startet und die Defaultwerte l\u00e4dt, ist ungleich zuverl\u00e4ssiger als eines, das mit inkonsistenten Einstellungen in einen undefinierten Zustand ger\u00e4t.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Fallstricke der WLAN-Messtechnik<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Ein wiederkehrendes Problem bei der Entwicklung war die Tatsache, dass der ESP8266 nicht gleichzeitig als Access Point und als WLAN-Scanner arbeiten kann. In der Scan-Phase ist der Access Point kurzzeitig nicht sichtbar. Dies f\u00fchrt zu dem bekannten Effekt, dass der Monitor im Webinterface nicht st\u00e4ndig erreichbar ist. Statt dies als Bug zu betrachten, haben die Entwickler daraus eine Design-Entscheidung gemacht: Der Access Point ist bewusst nur in den Pausen zwischen den Scans aktiv. Wer das Ger\u00e4t konfigurieren m\u00f6chte, muss also entweder w\u00e4hrend einer Scan-Pause verbinden oder das Scan-Intervall so gro\u00df w\u00e4hlen (etwa 60 Sekunden), dass der Access Point ausreichend lang pr\u00e4sent ist. Diese L\u00f6sung ist ein sch\u00f6nes Beispiel daf\u00fcr, dass gute Embedded-Entwicklung oft in der Akzeptanz von Hardware-Limitationen besteht, nicht in deren Verleugnung.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Kanalanalyse als intelligenter Mehrwert<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Der Code f\u00fchrt nicht nur einen einfachen Scan nach den beiden konfigurierten Netzwerken durch, sondern analysiert gleichzeitig die Belegung der WLAN-Kan\u00e4le (1\u201313). Es wird die Anzahl der Netzwerke pro Kanal erfasst und ein Mittelwert ihrer Signalst\u00e4rke gebildet. Anschlie\u00dfend wird ein Score berechnet, der aus der Anzahl der Netzwerke und der Signalst\u00e4rke besteht, um den am wenigsten gest\u00f6rten Kanal zu ermitteln. Das Ergebnis wird auf dem Display und im Webinterface ausgegeben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Funktion ist weit mehr als eine Spielerei. WLAN-St\u00f6rungen durch Nachbarnetzwerke sind eine der Hauptursachen f\u00fcr instabile Verbindungen. Die Empfehlung eines Kanals, der wenig belegt ist, kann die Performance erheblich verbessern \u2013 und das ohne teure Analyse-Tools. In den Beispiel-Logs wurde nach einem Scan Kanal 2 als optimal ausgewiesen, w\u00e4hrend Kanal 5 sechs Netzwerke aufwies. Das entspricht exakt den Empfehlungen der Netzwerktechnik, die auf nicht \u00fcberlappenden Kan\u00e4len (1, 6, 11) beharrt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Praxis und Fallstricke: Die Realit\u00e4t der Hardware<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der Inbetriebnahme des Monitors zeigten sich typische Probleme, die jedem Maker vertraut sind:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Problem<\/th><th class=\"has-text-align-left\" data-align=\"left\">Ursache<\/th><th class=\"has-text-align-left\" data-align=\"left\">L\u00f6sung<\/th><\/tr><\/thead><tbody><tr><td>Access Point wird nicht angezeigt<\/td><td>Scan-Intervall zu kurz, AP nur in Pausen sichtbar<\/td><td>Intervall auf &gt;30 s erh\u00f6hen oder w\u00e4hrend Scan-Pause verbinden<\/td><\/tr><tr><td>Keine serielle Ausgabe<\/td><td>Falscher USB-Treiber (CH340\/CP2102)<\/td><td>Treiber aktualisieren, anderen USB-Port nutzen<\/td><\/tr><tr><td>Display bleibt dunkel<\/td><td>I2C-Adresse oder Pinbelegung falsch<\/td><td>Adresse pr\u00fcfen (meist 0x3C oder 0x3D), Pins auf D5 (SCL) \/ D6 (SDA) legen<\/td><\/tr><tr><td>Netzwerke werden nicht erkannt<\/td><td>Case\u2011sensitiver Vergleich im Code<\/td><td>Auf&nbsp;<code>equalsIgnoreCase()<\/code>&nbsp;umgestellt, damit Gro\u00df-\/Kleinschreibung egal ist<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Tabelle zeigt, dass viele vermeintliche Softwarefehler auf Hardware\u2011 oder Konfigurationsprobleme zur\u00fcckgehen. Der ESP8266 ist kein Allesk\u00f6nner; seine Pins haben spezielle Funktionen (z.\u202fB. m\u00fcssen die I2C-Pins f\u00fcr das Display genau den definierten GPIOs entsprechen). Der Code selbst ist oft weniger die Fehlerquelle als die Umgebung, in der er l\u00e4uft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kulturelle Einordnung: Die Ethik des Heim-Monitorings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber die technischen Aspekte hinaus wirft das Projekt eine interessante Frage auf: Warum baut jemand einen eigenen WLAN-Monitor, wenn es doch zahllose Apps und Programme gibt, die \u00e4hnliches leisten? Die Antwort liegt in der grundlegenden Haltung der Maker-Bewegung: Selbstbestimmung und Transparenz. Eine Smartphone-App zeigt zwar die aktuelle Signalst\u00e4rke an, aber sie ist auf das Betriebssystem angewiesen, l\u00e4uft im Hintergrund und teilt oft Daten mit dem Hersteller. Ein eigenes Ger\u00e4t hingegen ist autonom, bleibt im eigenen Netzwerk und funktioniert unabh\u00e4ngig von propriet\u00e4rer Software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gleichzeitig ber\u00fchrt das Projekt eine ethische Dimension: Die F\u00e4higkeit, jederzeit die Signalst\u00e4rke zweier fremder Netzwerke zu \u00fcberwachen, k\u00f6nnte durchaus in die N\u00e4he von \u00dcberwachung r\u00fccken. Hier wird sie jedoch zweckgebunden eingesetzt: Der Nutzer \u00fcberwacht seine eigenen Netzwerke, um Verbindungsabbr\u00fcche zu diagnostizieren. Das ist ein Akt der Selbsterm\u00e4chtigung, nicht der Fremdkontrolle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit und Ausblick: Wohin steuert die Maker-Bewegung?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der ESP8266 gilt heute vielen als veraltet; sein Nachfolger ESP32 bietet mehr Leistung, zwei Kerne und Bluetooth. Dennoch bleibt der ESP8266 der bevorzugte Chip f\u00fcr einfache, stromsparende IoT\u2011Projekte. Sein Erfolg hat eine ganze Generation von Entwicklern gepr\u00e4gt und gezeigt, dass komplexe Netzwerktechnik nicht das Privileg von Profis sein muss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das hier vorgestellte Projekt ist mehr als nur eine technische Spielerei. Es dokumentiert den Wandel von passiven Konsumenten digitaler Infrastruktur zu aktiven Gestaltern. Wer versteht, wie WLAN funktioniert, wie Signalst\u00e4rke gemessen wird und welche Fallstricke lauern, kann gezielt Gegenma\u00dfnahmen ergreifen \u2013 und ist nicht mehr auf die vagen Aussagen von Support-Hotlines angewiesen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Zukunft solcher Monitoringsysteme liegt in der Vernetzung. Denkbar w\u00e4ren mehrere, verteilte ESP8266, die gemeinsam ein Hausnetz \u00fcberwachen, oder die Integration mit Home-Assistant, um bei schlechtem Signal automatisch einen Repeater zu aktivieren. Auch die Analyse \u00fcber l\u00e4ngere Zeitr\u00e4ume w\u00e4re wertvoll: Statt nur einen Momentwert anzuzeigen, k\u00f6nnte der Monitor Verlaufskurven zeichnen und so wiederkehrende St\u00f6rungen identifizieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Doch auch in seiner aktuellen Form ist der WLAN-Monitor ein beeindruckendes Beispiel daf\u00fcr, wie ein handels\u00fcblicher Mikrocontroller mit wenigen Euro Materialkosten und einem durchdachten Programm zu einem n\u00fctzlichen Werkzeug werden kann \u2013 f\u00fcr alle, die endlich wissen wollen, was in ihren unsichtbaren Netzen wirklich geschieht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Anhang: Vollst\u00e4ndiger Quellcode f\u00fcr den ESP8266-WLAN-Monitor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">cpp<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;U8g2lib.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;ESP8266WiFi.h&gt;\n#include &lt;ESP8266WebServer.h&gt;\n#include &lt;EEPROM.h&gt;\n\n<em>\/\/ OLED Display (I2C) mit konfigurierbaren Pins<\/em>\n#define OLED_SCL 14    <em>\/\/ D5 auf NodeMCU<\/em>\n#define OLED_SDA 12    <em>\/\/ D6 auf NodeMCU<\/em>\n#define OLED_RESET U8X8_PIN_NONE\nU8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, OLED_SCL, OLED_SDA, OLED_RESET);\n\n<em>\/\/ Web Server mit Authentifizierung<\/em>\nESP8266WebServer server(80);\nString www_username = \"admin\";\nString www_password = \"monitor123\"; <em>\/\/ Bitte \u00e4ndern!<\/em>\n\n<em>\/\/ EEPROM Adressen<\/em>\n#define EEPROM_SIZE 512\n#define ADDR_SSID1 0\n#define ADDR_SSID2 32\n#define ADDR_SCAN_INT 64\n#define ADDR_THRESHOLD 68\n#define ADDR_AP_PASSWORD 72\n#define ADDR_CRC 124\n#define ADDR_WEB_PASSWORD 128\n#define ADDR_CONFIG_VERSION 156\n\n#define CONFIG_VERSION 2\n\n<em>\/\/ Standardwerte<\/em>\nString network1 = \"FRITZI\";\nString network2 = \"Smu\";\nint scanInterval = 10;\nint alarmThreshold = -80;\nString apPassword = \"wlanmonitor\";\nString webPassword = \"monitor123\";\n\n<em>\/\/ Status<\/em>\nint rssi1 = -100;\nint rssi2 = -100;\nbool found1 = false;\nbool found2 = false;\nunsigned long lastScan = 0;\nbool alarmActive = false;\nint scanCount = 0;\nint bestChannel = 1;\nunsigned long lastAPCheck = 0;\nbool apActive = true;\n\n<em>\/\/ Animation<\/em>\nint animPos = 0;\nunsigned long lastAnimUpdate = 0;\n\n<em>\/\/ Signalqualit\u00e4t mit erweiterter Skala<\/em>\nString getSignalQuality(int rssi) {\n  if (rssi &gt;= -50) return \"AUSGEZEICHNET\";\n  if (rssi &gt;= -60) return \"SEHR GUT\";\n  if (rssi &gt;= -70) return \"GUT\";\n  if (rssi &gt;= -80) return \"MITTEL\";\n  if (rssi &gt;= -90) return \"SCHLECHT\";\n  if (rssi &gt;= -100) return \"SEHR SCHLECHT\";\n  return \"KEIN SIGNAL\";\n}\n\nint getSignalPercentage(int rssi) {\n  if (rssi &gt;= -50) return 100;\n  if (rssi &lt;= -100) return 0;\n  return map(rssi, -100, -50, 0, 100);\n}\n\n<em>\/\/ CRC32 Berechnung<\/em>\nuint32_t calculateCRC32(const uint8_t *data, size_t length) {\n  uint32_t crc = 0xffffffff;\n  while (length--) {\n    uint8_t c = *data++;\n    for (uint32_t i = 0x80; i &gt; 0; i &gt;&gt;= 1) {\n      bool bit = crc &amp; 0x80000000;\n      if (c &amp; i) bit = !bit;\n      crc &lt;&lt;= 1;\n      if (bit) crc ^= 0x04c11db7;\n    }\n  }\n  return crc;\n}\n\n<em>\/\/ EEPROM Reset<\/em>\nvoid resetEEPROM() {\n  Serial.println(\"EEPROM wird zur\u00fcckgesetzt...\");\n  EEPROM.begin(EEPROM_SIZE);\n  for (int i = 0; i &lt; EEPROM_SIZE; i++) EEPROM.write(i, 0);\n  String default1 = \"FRITZI\", default2 = \"Smu\", defaultAPPass = \"wlanmonitor\", defaultWebPass = \"monitor123\";\n  for (int i = 0; i &lt; 32; i++) {\n    EEPROM.write(ADDR_SSID1 + i, i &lt; default1.length() ? default1[i] : 0);\n    EEPROM.write(ADDR_SSID2 + i, i &lt; default2.length() ? default2[i] : 0);\n    EEPROM.write(ADDR_AP_PASSWORD + i, i &lt; defaultAPPass.length() ? defaultAPPass[i] : 0);\n    EEPROM.write(ADDR_WEB_PASSWORD + i, i &lt; defaultWebPass.length() ? defaultWebPass[i] : 0);\n  }\n  EEPROM.put(ADDR_SCAN_INT, 10);\n  EEPROM.put(ADDR_THRESHOLD, -80);\n  EEPROM.put(ADDR_CONFIG_VERSION, CONFIG_VERSION);\n  uint32_t crc = calculateCRC32(EEPROM.getDataPtr(), ADDR_CRC - 4);\n  EEPROM.put(ADDR_CRC, crc);\n  EEPROM.commit();\n  EEPROM.end();\n  network1 = default1; network2 = default2;\n  apPassword = defaultAPPass; webPassword = defaultWebPass;\n  scanInterval = 10; alarmThreshold = -80;\n  www_password = defaultWebPass;\n  Serial.println(\"EEPROM zur\u00fcckgesetzt auf Standardwerte\");\n}\n\n<em>\/\/ EEPROM laden mit CRC-Validierung<\/em>\nbool loadSettings() {\n  EEPROM.begin(EEPROM_SIZE);\n  int savedVersion;\n  EEPROM.get(ADDR_CONFIG_VERSION, savedVersion);\n  if (savedVersion != CONFIG_VERSION) {\n    Serial.println(\"Alte Konfigurationsversion, setze zur\u00fcck\");\n    EEPROM.end(); resetEEPROM(); return true;\n  }\n  uint32_t savedCRC, calculatedCRC = calculateCRC32(EEPROM.getDataPtr(), ADDR_CRC - 4);\n  EEPROM.get(ADDR_CRC, savedCRC);\n  if (savedCRC != calculatedCRC) {\n    Serial.println(\"CRC-Fehler! EEPROM-Daten korrupt.\");\n    EEPROM.end(); return false;\n  }\n  <em>\/\/ Netzwerk 1<\/em>\n  network1 = \"\";\n  for (int i = 0; i &lt; 32; i++) {\n    char c = EEPROM.read(ADDR_SSID1 + i);\n    if (c == 0) break;\n    if (c &lt; 32 || c &gt; 126) { network1 = \"FRITZI\"; break; }\n    network1 += c;\n  }\n  <em>\/\/ Netzwerk 2, AP Passwort, Web Passwort analog...<\/em>\n  <em>\/\/ (Aus Platzgr\u00fcnden hier gek\u00fcrzt; vollst\u00e4ndige Logik im Original)<\/em>\n  <em>\/\/ ...<\/em>\n  EEPROM.end();\n  www_password = webPassword;\n  return true;\n}\n\n<em>\/\/ Weitere Funktionen (saveSettings, analyzeChannels, scanWifi, updateDisplay, etc.)<\/em>\n<em>\/\/ sind im vollst\u00e4ndigen Code enthalten und werden hier nicht nochmals ausgef\u00fchrt.<\/em>\n\nvoid setup() {\n  Serial.begin(115200);\n  u8g2.begin();\n  loadSettings();\n  WiFi.mode(WIFI_AP);\n  String apName = \"WLAN-Monitor-\" + String(ESP.getChipId());\n  if (apPassword.length() &gt; 0) WiFi.softAP(apName.c_str(), apPassword.c_str());\n  else WiFi.softAP(apName.c_str());\n  server.on(\"\/\", handleRoot);\n  server.on(\"\/save\", handleSave);\n  server.on(\"\/scan\", handleScan);\n  server.on(\"\/reset\", handleReset);\n  server.on(\"\/reboot\", handleReboot);\n  server.begin();\n  scanWifi();\n  updateDisplay();\n  lastScan = millis();\n}\n\nvoid loop() {\n  server.handleClient();\n  if (millis() - lastScan &gt;= scanInterval * 1000UL) {\n    scanWifi();\n    updateDisplay();\n    lastScan = millis();\n  }\n  delay(100);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(Hinweis: Aus Gr\u00fcnden der \u00dcbersichtlichkeit wurden Teile des Codes (z.\u202fB. die Webseiten-Generierung, die vollst\u00e4ndige EEPROM-Logik und die Scan-Funktionen) hier nur angedeutet. Der vollst\u00e4ndige Quellcode ist unter [GitHub-Link] verf\u00fcgbar oder kann beim Autor angefordert werden.)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Espressif Systems<\/strong>: ESP8266 Technical Reference Manual, 2021.<\/li>\n\n\n\n<li><strong>Arduino Reference<\/strong>: ESP8266WiFi Library Documentation, abgerufen M\u00e4rz 2025.<\/li>\n\n\n\n<li><strong>U8g2 Library by olikraus<\/strong>: Dokumentation und Beispielsammlung, GitHub.<\/li>\n\n\n\n<li><strong>Bratzel, S.<\/strong>:\u00a0<em>Die Maker-Bewegung: Neugr\u00fcndung einer Industriekultur?<\/em>\u00a0In: Technikgeschichte, Bd. 84, 2017, S. 215\u2013238.<\/li>\n\n\n\n<li><strong>IEEE Standard 802.11-2020<\/strong>: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.<\/li>\n\n\n\n<li><strong>Heise Medien GmbH &amp; Co. KG<\/strong>: Artikel zur WLAN\u2011Kanalwahl, c\u2019t 12\/2022, S. 142\u2013145.<\/li>\n\n\n\n<li><strong>OpenWrt Project<\/strong>: Dokumentation zur WLAN\u2011Analyse mit eingebetteten Systemen,\u00a0<a href=\"https:\/\/openwrt.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">openwrt.org<\/a>,\u00a0abgerufen M\u00e4rz 2025.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Kategorisierung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>hardware-im-test<\/strong><\/li>\n\n\n\n<li><strong>elektrotechnik<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Schlagworte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ESP8266, WLAN-Monitoring, Maker-Kultur, Signalanalyse, Elektrotechnik, Open-Source-Hardware, Netzwerksicherheit<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einleitung: Die Tyrannei der Unsichtbarkeit Drahtlose Netze durchdringen unseren Alltag so selbstverst\u00e4ndlich wie die Luft zum Atmen. Dass ein Funksignal jederzeit verf\u00fcgbar ist, gilt l\u00e4ngst als Grundrecht digitaler Existenz \u2013 doch kaum jemand wei\u00df, ob dieses Signal tats\u00e4chlich stark, stabil oder \u00fcberhaupt noch vorhanden ist. Die Leidensgeschichten sind bekannt: das Videotelefonat, das w\u00e4hrend der entscheidenden [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42,45,26],"tags":[2237,4296,4872,5108,6340,7814],"class_list":["post-2685","post","type-post","status-publish","format-standard","hentry","category-elektrotechnik","category-hardware-im-test","category-mit-den-handen","tag-esp8266","tag-maker-kultur","tag-netzwerksicherheit","tag-open-source-hardware","tag-signalanalyse","tag-wlan-monitoring"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=2685"}],"version-history":[{"count":0,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2685\/revisions"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=2685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=2685"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=2685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}