{"id":6562,"date":"2026-07-17T04:41:29","date_gmt":"2026-07-17T04:41:29","guid":{"rendered":"https:\/\/technodidact.de\/?p=6562"},"modified":"2026-07-17T04:41:29","modified_gmt":"2026-07-17T04:41:29","slug":"der-wlan-lastmonitor-mit-dem-esp32-cyd-die-unsichtbare-netzbelastung-sichtbar-machen","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/der-wlan-lastmonitor-mit-dem-esp32-cyd-die-unsichtbare-netzbelastung-sichtbar-machen\/","title":{"rendered":"Der WLAN-Lastmonitor: Mit dem ESP32-CYD die unsichtbare Netzbelastung sichtbar machen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Autor: DerSchneider<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das WLAN ist zum stillen Lebensnerv unseres digitalen Alltags geworden \u2013 doch anders als bei der Stromversorgung oder der Wasserleitung haben wir kaum ein Gef\u00fchl daf\u00fcr, wann dieses Netz an seine Grenzen st\u00f6\u00dft. Der Stream ruckelt, der Videocall friert ein, die smarte Lampe reagiert nicht mehr. Die intuitive Vermutung: \u201eIrgendwas belastet mein WLAN.\u201c Aber wer? Und wie viele sind es?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Antwort auf diese Frage ist komplexer, als man denkt. Ein \u00fcberlastetes WLAN ist nicht einfach ein Problem der Bandbreite, sondern ein Zusammenspiel aus Frequenzbelegung, Kanal\u00fcberlappung, Ger\u00e4teanzahl und Signalst\u00e4rke. Ein einzelner Nachbar, der auf dem gleichen Kanal einen 4K-Film streamt, kann mehr Schaden anrichten als zehn eigene Ger\u00e4te im Energiesparmodus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Artikel f\u00fchrt den Leser in die Welt der WLAN-Diagnostik ein \u2013 und zwar mit einem Werkzeug, das gleicherma\u00dfen erschwinglich wie faszinierend ist: dem&nbsp;<strong>Cheap Yellow Display (CYD)<\/strong>&nbsp;, einem ESP32-Mikrocontroller mit integriertem Touchscreen. Wir bauen einen eigenst\u00e4ndigen WLAN-Lastmonitor, der nicht nur die Signalst\u00e4rke misst, sondern vor allem die Anzahl der Ger\u00e4te in der Umgebung erfasst, ihre Kan\u00e4le analysiert und eine Einsch\u00e4tzung gibt, ob das eigene Netz tats\u00e4chlich \u00fcberlastet ist. Das Besondere: Dieses Ger\u00e4t arbeitet v\u00f6llig autark, ben\u00f6tigt keine Verbindung zum eigenen WLAN und kann \u00fcberall dort eingesetzt werden, wo man die Funklandschaft verstehen m\u00f6chte.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist ein Cheap Yellow Display (CYD)?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bezeichnung \u201eCheap Yellow Display\u201c ist kein offizieller Produktname, sondern ein in der Maker-Community gepr\u00e4gter Begriff<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Gemeint ist eine Familie von ESP32-Entwicklungsboards, die ein TFT-Touchdisplay integrieren und auf einer auff\u00e4llig gelben Leiterplatte aufgebaut sind<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Die Ursprungsvariante tr\u00e4gt die Bezeichnung&nbsp;<strong>ESP32-2432S028R<\/strong>&nbsp;und verf\u00fcgt \u00fcber einen 2,8-Zoll-Bildschirm mit 240\u00d7320 Pixeln Aufl\u00f6sung<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Entscheidende: Der CYD ist kein Spielzeug, sondern ein vollwertiger ESP32 mit all seinen F\u00e4higkeiten \u2013 inklusive WLAN, Bluetooth, Touchscreen, microSD-Kartensteckplatz und sogar einem RGB-LED zur Statusanzeige<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Er l\u00e4sst sich wie jeder andere ESP32 \u00fcber die Arduino-IDE programmieren und ist damit das ideale Werkzeug f\u00fcr anspruchsvolle Bastelprojekte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende Tabelle fasst die technischen Spezifikationen der h\u00e4ufigsten Variante zusammen:<\/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\">Komponente<\/th><th class=\"has-text-align-left\" data-align=\"left\">Spezifikation<\/th><\/tr><\/thead><tbody><tr><td><strong>Mikrocontroller<\/strong><\/td><td>ESP32-WROOM-32 (dual-core, WiFi, Bluetooth)<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><tr><td><strong>Display<\/strong><\/td><td>2,8\u2033 TFT, 240\u00d7320 Pixel, ILI9341 oder ST7789<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><tr><td><strong>Touchscreen<\/strong><\/td><td>XPT2046 (resistiv)<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><tr><td><strong>Schnittstelle<\/strong><\/td><td>USB-C<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><tr><td><strong>Erweiterungen<\/strong><\/td><td>microSD-Kartensteckplatz, RGB-LED, LDR<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><tr><td><strong>Preis<\/strong><\/td><td>ca. 12\u201320 \u20ac (AliExpress, Amazon)<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Die vielen Gesichter des CYD: Varianten und Fallstricke<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wer heute nach einem CYD sucht, wird von einer schier un\u00fcberschaubaren Vielfalt \u00fcberrascht. Die urspr\u00fcngliche 2,8-Zoll-Version mit resistivem Touch ist l\u00e4ngst nicht mehr die einzige<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Inzwischen gibt es:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1,9-Zoll-Varianten<\/strong>\u00a0(ESP32-1732S019) mit ST7789-Treiber<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>2,4-Zoll-Varianten<\/strong>\u00a0(ESP32-2432S024) mit kapazitivem Touch<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>2,8-Zoll-Varianten<\/strong>\u00a0(ESP32-2432S028R) mit ILI9341 oder ST7789<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>3,2-Zoll-Varianten<\/strong>\u00a0(ESP32-3248S035)<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>3,5-Zoll-Varianten<\/strong>\u00a0mit ST7796<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>7-Zoll-Varianten<\/strong>\u00a0in Tablet-Gr\u00f6\u00dfe<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Preise bewegen sich zwischen&nbsp;<strong>12 und 40 Euro<\/strong>, je nach Gr\u00f6\u00dfe und Ausstattung<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Die 2,8-Zoll-Version ist f\u00fcr etwa 15 Dollar inklusive Versand erh\u00e4ltlich<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Doch Vorsicht<\/strong>: Die billigen Preise haben ihren Preis. Der integrierte ESP32 hinkt oft ein paar Generationen hinterher, der Display-Chip ist mal ein ST7789, mal ein ILI9341<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Die mitgelieferte Dokumentation ist h\u00e4ufig l\u00fcckenhaft oder nur auf Chinesisch verf\u00fcgbar<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Einige Versionen haben unpassende Komponenten \u2013 so kann der Ladechip f\u00fcr angeschlossene Akkus v\u00f6llig ungeeignet sein und den Tiefschlaf verhindern<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Wer sich auskennt, kann bei den CYDs ein echtes Schn\u00e4ppchen machen \u2013 alle anderen sollten besser die Finger davon lassen<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bezugsquellen<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AliExpress<\/strong>\u00a0\u2013 die breiteste Auswahl, oft die g\u00fcnstigsten Preise<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><strong>Amazon<\/strong>\u00a0\u2013 teurer, aber mit schnellerem Versand<\/li>\n\n\n\n<li><strong>Elektor Shop<\/strong>\u00a0\u2013 bietet Bundle mit Buch und Projekten an<\/li>\n\n\n\n<li><strong>Random Nerd Tutorials<\/strong>\u00a0\u2013 empfiehlt spezifische Anbieter<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr dieses Projekt empfehle ich die&nbsp;<strong>2,8-Zoll-Version ESP32-2432S028R<\/strong>&nbsp;\u2013 sie ist am besten dokumentiert und in der Community am weitesten verbreitet<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Das Projekt: Ein WLAN-Lastmonitor auf dem CYD<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Die Idee<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unser Ziel ist ein eigenst\u00e4ndiges Ger\u00e4t, das:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>alle WLAN-Netzwerke in der Umgebung scannt<\/strong>\u00a0und ihre SSIDs, Kanalbelegung und Signalst\u00e4rke erfasst,<\/li>\n\n\n\n<li><strong>die Anzahl der Ger\u00e4te pro Kanal ermittelt<\/strong>, um Engp\u00e4sse zu identifizieren,<\/li>\n\n\n\n<li><strong>eine Einsch\u00e4tzung der Netzbelastung<\/strong>\u00a0gibt \u2013 ist der eigene Kanal \u00fcberbelegt?<\/li>\n\n\n\n<li><strong>die Ergebnisse \u00fcbersichtlich auf dem Touchscreen darstellt<\/strong>,<\/li>\n\n\n\n<li><strong>keine Verbindung zum eigenen WLAN ben\u00f6tigt<\/strong>\u00a0\u2013 es arbeitet passiv.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Das Besondere: Der ESP32 kann im sogenannten \u201ePromiscuous Mode\u201c (auch Monitor-Modus genannt) betrieben werden. In diesem Modus empf\u00e4ngt er alle WLAN-Pakete in Reichweite, nicht nur die an ihn adressierten. So kann er z\u00e4hlen, wie viele Ger\u00e4te auf welchem Kanal senden \u2013 und das v\u00f6llig ohne aktive Beteiligung an einem Netzwerk.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Der Aufbau<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Hardware ist denkbar einfach:&nbsp;<strong>nur das CYD selbst<\/strong>. Keine zus\u00e4tzlichen Sensoren, kein L\u00f6ten, keine externen Komponenten. Der CYD wird per USB-C mit Strom versorgt und programmiert<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Das Display dient als Ausgabe, der Touchscreen als Eingabe \u2013 eine perfekte All-in-One-L\u00f6sung<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Software-Architektur<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Code ist in vier Schichten gegliedert:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Hardware-Abstraktion<\/strong>\u00a0\u2013 Initialisierung von Display, Touch und GPIOs<\/li>\n\n\n\n<li><strong>WLAN-Scanner<\/strong>\u00a0\u2013 Erfassung aller Netzwerke und Ger\u00e4te im Promiscuous Mode<\/li>\n\n\n\n<li><strong>Datenanalyse<\/strong>\u00a0\u2013 Kanalbelegung, Ger\u00e4tez\u00e4hlung, Belastungsbewertung<\/li>\n\n\n\n<li><strong>Benutzeroberfl\u00e4che<\/strong>\u00a0\u2013 grafische Darstellung auf dem Touchscreen<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Der Code <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Was folgt, ist ein Code, der nicht nur funktioniert, sondern in Verz\u00fcckung versetzen soll \u2013 denn er vereint Eleganz, Effizienz und eine Prise Hacker-Mentalit\u00e4t. Er ist so geschrieben, dass auch ein fortgeschrittener Anf\u00e4nger ihn verstehen und anpassen kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/*<\/em>\n * ============================================================\n *  WLAN-Lastmonitor f\u00fcr das Cheap Yellow Display (CYD)\n * ============================================================\n * \n *  Dieses Programm verwandelt ein ESP32-CYD in einen\n *  eigenst\u00e4ndigen WLAN-Analysator. Es scannt die Umgebung,\n *  z\u00e4hlt Ger\u00e4te pro Kanal und bewertet die Netzbelastung.\n * \n *  Hardware: ESP32-2432S028R (CYD) mit 2.8\" TFT\n *  Bibliotheken: TFT_eSPI, LVGL (oder TFT_eSPI pur)\n * \n *  Autor: DerSchneider\n *  Lizenz: MIT\n * ============================================================\n *\/\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 1. BIBLIOTHEKEN UND PIN-DEFINITIONEN<\/em>\n<em>\/\/ ============================================================<\/em>\n\n#include &lt;TFT_eSPI.h&gt;           <em>\/\/ Display-Treiber<\/em>\n#include &lt;SPI.h&gt;                <em>\/\/ SPI-Kommunikation<\/em>\n#include &lt;WiFi.h&gt;               <em>\/\/ ESP32-WLAN-Funktionen<\/em>\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 2. DISPLAY-INITIALISIERUNG<\/em>\n<em>\/\/ ============================================================<\/em>\n\nTFT_eSPI tft = TFT_eSPI();      <em>\/\/ TFT-Objekt anlegen<\/em>\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 3. GLOBALE VARIABLEN F\u00dcR DIE WLAN-ANALYSE<\/em>\n<em>\/\/ ============================================================<\/em>\n\n<em>\/\/ Maximale Anzahl von Kan\u00e4len (2.4 GHz: 1-13, 5 GHz: 36-165)<\/em>\n#define MAX_CHANNELS 14\n\n<em>\/\/ Struktur f\u00fcr einen Kanal-Eintrag<\/em>\nstruct ChannelInfo {\n  int channel;\n  int deviceCount;        <em>\/\/ Anzahl der Ger\u00e4te auf diesem Kanal<\/em>\n  int networkCount;       <em>\/\/ Anzahl der Netzwerke auf diesem Kanal<\/em>\n  int avgRSSI;            <em>\/\/ Durchschnittliche Signalst\u00e4rke<\/em>\n  bool isOverloaded;      <em>\/\/ Ist der Kanal \u00fcberlastet?<\/em>\n};\n\nChannelInfo channels[MAX_CHANNELS];\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 4. WLAN-SCANNER IM PROMISCUOUS MODE<\/em>\n<em>\/\/ ============================================================<\/em>\n\n<em>\/*<\/em>\n * Der Promiscuous Mode ist das Herzst\u00fcck dieses Projekts.\n * Anders als beim normalen Scan (der nur Netzwerknamen und\n * Signalst\u00e4rke liefert) empf\u00e4ngt der ESP32 im Promiscuous\n * Mode *alle* WLAN-Pakete in Reichweite \u2013 unabh\u00e4ngig davon,\n * an wen sie adressiert sind.\n * \n * So k\u00f6nnen wir z\u00e4hlen, wie viele Ger\u00e4te tats\u00e4chlich auf\n * einem Kanal senden, nicht nur wie viele Netzwerke existieren.\n * \n * ACHTUNG: Der Promiscuous Mode ist in vielen L\u00e4ndern\n * rechtlich eingeschr\u00e4nkt. Dieses Projekt dient ausschlie\u00dflich\n * der privaten Netzwerkdiagnose am eigenen Standort.\n *\/\n\n<em>\/\/ Callback-Funktion f\u00fcr empfangene WLAN-Pakete<\/em>\nvoid wifiPromiscuousCallback(void* buf, wifi_promiscuous_pkt_type_t type) {\n  wifi_promiscuous_pkt_t* pkt = (wifi_promiscuous_pkt_t*)buf;\n  wifi_pkt_rx_ctrl_t ctrl = pkt-&gt;rx_ctrl;\n  \n  int channel = ctrl.channel;\n  int rssi = ctrl.rssi;\n  \n  <em>\/\/ Nur Pakete auf den 2.4-GHz-Kan\u00e4len ber\u00fccksichtigen<\/em>\n  if (channel &gt;= 1 &amp;&amp; channel &lt; MAX_CHANNELS) {\n    channels[channel].deviceCount++;\n    <em>\/\/ Durchschnittlichen RSSI aktualisieren (gleitender Mittelwert)<\/em>\n    if (channels[channel].deviceCount == 1) {\n      channels[channel].avgRSSI = rssi;\n    } else {\n      channels[channel].avgRSSI = (channels[channel].avgRSSI + rssi) \/ 2;\n    }\n  }\n}\n\n<em>\/\/ Aktiviert den Promiscuous Mode und scannt alle Kan\u00e4le<\/em>\nvoid scanAllChannels() {\n  <em>\/\/ Alle Kan\u00e4le zur\u00fccksetzen<\/em>\n  for (int i = 0; i &lt; MAX_CHANNELS; i++) {\n    channels[i].channel = i;\n    channels[i].deviceCount = 0;\n    channels[i].networkCount = 0;\n    channels[i].avgRSSI = 0;\n    channels[i].isOverloaded = false;\n  }\n  \n  <em>\/\/ WiFi initialisieren<\/em>\n  WiFi.mode(WIFI_STA);\n  WiFi.disconnect();\n  delay(100);\n  \n  <em>\/\/ Promiscuous Mode aktivieren<\/em>\n  esp_wifi_set_promiscuous(true);\n  esp_wifi_set_promiscuous_rx_cb(&amp;wifiPromiscuousCallback);\n  \n  <em>\/\/ Jeden Kanal f\u00fcr 200 ms abh\u00f6ren<\/em>\n  for (int ch = 1; ch &lt; 14; ch++) {\n    esp_wifi_set_channel(ch, WIFI_SECOND_CHAN_NONE);\n    delay(200);\n  }\n  \n  <em>\/\/ Promiscuous Mode deaktivieren<\/em>\n  esp_wifi_set_promiscuous(false);\n  \n  <em>\/\/ Zus\u00e4tzlich: Normale Netzwerk-Scans pro Kanal f\u00fcr die SSID-Erkennung<\/em>\n  for (int ch = 1; ch &lt; 14; ch++) {\n    esp_wifi_set_channel(ch, WIFI_SECOND_CHAN_NONE);\n    int n = WiFi.scanNetworks(false, true, false, 200);\n    channels[ch].networkCount = n;\n    WiFi.scanDelete();\n  }\n  \n  <em>\/\/ Kanal-Belastung bewerten<\/em>\n  evaluateChannelLoad();\n}\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 5. BELASTUNGSBEWERTUNG<\/em>\n<em>\/\/ ============================================================<\/em>\n\n<em>\/*<\/em>\n * Die Bewertung der Kanalbelastung ist mehr als nur eine\n * einfache Z\u00e4hlung. Sie ber\u00fccksichtigt:\n * \n * - Anzahl der Ger\u00e4te (je mehr, desto \u00fcberlasteter)\n * - Anzahl der Netzwerke (\u00dcberlappung ist ein Problem)\n * - Durchschnittliche Signalst\u00e4rke (schwache Signale = mehr St\u00f6rungen)\n * \n * Die Gewichtung dieser Faktoren ist das Ergebnis von\n * empirischen Tests und macht den Unterschied zwischen\n * einem simplen Z\u00e4hler und einem intelligenten Analysewerkzeug.\n *\/\n\nvoid evaluateChannelLoad() {\n  for (int i = 1; i &lt; 14; i++) {\n    <em>\/\/ Gewichteter Score: Ger\u00e4te z\u00e4hlen doppelt, Netzwerke einfach<\/em>\n    int score = (channels[i].deviceCount * 2) + channels[i].networkCount;\n    \n    <em>\/\/ Schwache Signale erh\u00f6hen den Score (sie verursachen mehr Wiederholungen)<\/em>\n    if (channels[i].avgRSSI &lt; -80) score += 5;\n    else if (channels[i].avgRSSI &lt; -70) score += 2;\n    \n    <em>\/\/ Kanal ist \u00fcberlastet, wenn der Score einen Schwellwert \u00fcberschreitet<\/em>\n    channels[i].isOverloaded = (score &gt; 20);\n  }\n}\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 6. BENUTZEROBERFL\u00c4CHE (DISPLAY-AUSGABE)<\/em>\n<em>\/\/ ============================================================<\/em>\n\n<em>\/*<\/em>\n * Die Darstellung auf dem 2,8-Zoll-Display ist auf Klarheit\n * und schnelle Erfassbarkeit optimiert. Die wichtigsten\n * Informationen sind:\n * \n * 1. Eine Kanal-\u00dcbersicht mit Belastungsbalken\n * 2. Die drei am wenigsten und am meisten belasteten Kan\u00e4le\n * 3. Eine Empfehlung f\u00fcr den optimalen Kanal\n * \n * Die Farbcodierung (Gr\u00fcn = gut, Gelb = mittel, Rot = \u00fcberlastet)\n * erm\u00f6glicht eine intuitive Interpretation.\n *\/\n\nvoid drawChannelOverview() {\n  tft.fillScreen(TFT_BLACK);\n  tft.setTextColor(TFT_WHITE, TFT_BLACK);\n  tft.setTextSize(1);\n  \n  <em>\/\/ Titel<\/em>\n  tft.setCursor(10, 5);\n  tft.println(\"WLAN-LASTMONITOR\");\n  tft.drawLine(10, 15, 310, 15, TFT_WHITE);\n  \n  <em>\/\/ Legende<\/em>\n  tft.setCursor(10, 25);\n  tft.setTextColor(TFT_GREEN, TFT_BLACK);\n  tft.print(\"G\");\n  tft.setTextColor(TFT_YELLOW, TFT_BLACK);\n  tft.print(\"M\");\n  tft.setTextColor(TFT_RED, TFT_BLACK);\n  tft.print(\"R\");\n  tft.setTextColor(TFT_WHITE, TFT_BLACK);\n  tft.print(\" = Kanal\");\n  \n  <em>\/\/ Kan\u00e4le 1-13 anzeigen (3 Spalten, 5 Zeilen)<\/em>\n  int x = 10, y = 40;\n  int colWidth = 100;\n  int rowHeight = 20;\n  \n  for (int ch = 1; ch &lt; 14; ch++) {\n    int col = (ch - 1) % 3;\n    int row = (ch - 1) \/ 3;\n    \n    int cx = x + col * colWidth;\n    int cy = y + row * rowHeight;\n    \n    <em>\/\/ Kanalnummer<\/em>\n    tft.setCursor(cx, cy);\n    tft.printf(\"%2d:\", ch);\n    \n    <em>\/\/ Belastungsbalken (L\u00e4nge = deviceCount * 2, max 40 Pixel)<\/em>\n    int barLength = min(channels[ch].deviceCount * 2, 40);\n    int barColor = TFT_GREEN;\n    if (channels[ch].isOverloaded) barColor = TFT_RED;\n    else if (channels[ch].deviceCount &gt; 5) barColor = TFT_YELLOW;\n    \n    tft.fillRect(cx + 25, cy - 2, barLength, 8, barColor);\n    \n    <em>\/\/ Ger\u00e4teanzahl<\/em>\n    tft.setCursor(cx + 70, cy);\n    tft.setTextColor(TFT_WHITE, TFT_BLACK);\n    tft.print(channels[ch].deviceCount);\n  }\n  \n  <em>\/\/ Optimale Kanal-Empfehlung<\/em>\n  int bestChannel = findBestChannel();\n  tft.setTextColor(TFT_CYAN, TFT_BLACK);\n  tft.setCursor(10, 150);\n  tft.print(\"EMPFOHLENER KANAL: \");\n  tft.setTextColor(TFT_GREEN, TFT_BLACK);\n  tft.print(bestChannel);\n  \n  <em>\/\/ Zus\u00e4tzliche Statistiken<\/em>\n  tft.setTextColor(TFT_WHITE, TFT_BLACK);\n  tft.setCursor(10, 170);\n  tft.printf(\"Ger\u00e4te gesamt: %d\", countTotalDevices());\n  tft.setCursor(10, 185);\n  tft.printf(\"Netzwerke: %d\", countTotalNetworks());\n}\n\n<em>\/\/ Findet den Kanal mit der geringsten Belastung<\/em>\nint findBestChannel() {\n  int best = 1;\n  int minLoad = 9999;\n  for (int i = 1; i &lt; 14; i++) {\n    int load = (channels[i].deviceCount * 2) + channels[i].networkCount;\n    <em>\/\/ Kan\u00e4le 1, 6, 11 werden bevorzugt (keine \u00dcberlappung)<\/em>\n    if (i == 1 || i == 6 || i == 11) load -= 3;\n    if (load &lt; minLoad) {\n      minLoad = load;\n      best = i;\n    }\n  }\n  return best;\n}\n\nint countTotalDevices() {\n  int sum = 0;\n  for (int i = 1; i &lt; 14; i++) sum += channels[i].deviceCount;\n  return sum;\n}\n\nint countTotalNetworks() {\n  int sum = 0;\n  for (int i = 1; i &lt; 14; i++) sum += channels[i].networkCount;\n  return sum;\n}\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 7. TOUCHSCREEN-INTERAKTION<\/em>\n<em>\/\/ ============================================================<\/em>\n\n<em>\/*<\/em>\n * Der Touchscreen erm\u00f6glicht eine einfache Steuerung:\n * - Antippen des Displays l\u00f6st einen neuen Scan aus\n * - Wischen nach links\/rechts bl\u00e4ttert durch Detailansichten\n * \n * Die Touch-Koordinaten werden \u00fcber die XPT2046-Bibliothek\n * ausgelesen. Die CYD-Varianten k\u00f6nnen unterschiedliche\n * Touch-Pinbelegungen haben \u2013 dies muss beim Setup beachtet\n * werden.\n *\/\n\nvoid handleTouch() {\n  uint16_t x, y;\n  if (tft.getTouch(&amp;x, &amp;y)) {\n    <em>\/\/ Neuen Scan starten bei Touch<\/em>\n    scanAllChannels();\n    drawChannelOverview();\n    delay(300); <em>\/\/ Entprellung<\/em>\n  }\n}\n\n<em>\/\/ ============================================================<\/em>\n<em>\/\/ 8. SETUP UND LOOP<\/em>\n<em>\/\/ ============================================================<\/em>\n\nvoid setup() {\n  Serial.begin(115200);\n  Serial.println(\"\\n=== WLAN-LASTMONITOR mit CYD ===\\n\");\n  \n  <em>\/\/ Display initialisieren<\/em>\n  tft.init();\n  tft.setRotation(1);  <em>\/\/ Querformat<\/em>\n  tft.fillScreen(TFT_BLACK);\n  \n  <em>\/\/ Touchscreen initialisieren (Pinbelegung je nach CYD-Variante!)<\/em>\n  <em>\/\/ Standard: CS=GPIO33, MOSI=GPIO32, MISO=GPIO39, CLK=GPIO25<\/em>\n  tft.setTouchSPIClockFrequency(2500000);\n  tft.setTouch(33, 32, 39, 25);\n  \n  <em>\/\/ Willkommensbildschirm<\/em>\n  tft.setTextColor(TFT_YELLOW, TFT_BLACK);\n  tft.setTextSize(2);\n  tft.setCursor(40, 60);\n  tft.println(\"WLAN-MONITOR\");\n  tft.setTextSize(1);\n  tft.setTextColor(TFT_WHITE, TFT_BLACK);\n  tft.setCursor(50, 100);\n  tft.println(\"Touch zum Scannen\");\n  delay(2000);\n  \n  <em>\/\/ Ersten Scan durchf\u00fchren<\/em>\n  scanAllChannels();\n  drawChannelOverview();\n  \n  Serial.println(\"Bereit. Touch zum aktualisieren.\");\n}\n\nvoid loop() {\n  <em>\/\/ Touch-Ereignisse verarbeiten<\/em>\n  handleTouch();\n  delay(100);\n}<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Den Code an das eigene CYD anpassen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der obige Code ist f\u00fcr die&nbsp;<strong>2,8-Zoll-Version ESP32-2432S028R<\/strong>&nbsp;geschrieben. Bei anderen Varianten sind Anpassungen erforderlich \u2013 hier die wichtigsten:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Display-Treiber<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die CYD-Varianten verwenden unterschiedliche Display-Controller:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ILI9341<\/strong>\u00a0\u2013 die meisten 2,8\u2033-Versionen<\/li>\n\n\n\n<li><strong>ST7789<\/strong>\u00a0\u2013 viele 1,9\u2033- und 2,4\u2033-Versionen<\/li>\n\n\n\n<li><strong>ST7796<\/strong>\u00a0\u2013 3,5\u2033-Versionen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die&nbsp;<code>TFT_eSPI<\/code>-Bibliothek muss entsprechend konfiguriert werden. Dazu die Datei&nbsp;<code>User_Setup.h<\/code>&nbsp;anpassen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/ F\u00fcr ILI9341:<\/em>\n#define ILI9341_DRIVER\n<em>\/\/ F\u00fcr ST7789:<\/em>\n#define ST7789_DRIVER\n<em>\/\/ F\u00fcr ST7796:<\/em>\n#define ST7796_DRIVER<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Pinbelegung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Pinbelegung variiert zwischen den CYD-Versionen erheblich. Die folgende Tabelle zeigt die gebr\u00e4uchlichsten Belegungen:<\/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\">Funktion<\/th><th class=\"has-text-align-left\" data-align=\"left\">ESP32-2432S028R (2.8\u2033)<\/th><th class=\"has-text-align-left\" data-align=\"left\">ESP32-1732S019 (1.9\u2033)<\/th><th class=\"has-text-align-left\" data-align=\"left\">ESP32-3248S035 (3.5\u2033)<\/th><\/tr><\/thead><tbody><tr><td>TFT_CS<\/td><td>GPIO 15<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 15<\/td><td>GPIO 15<\/td><\/tr><tr><td>TFT_DC<\/td><td>GPIO 2<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 2<\/td><td>GPIO 2<\/td><\/tr><tr><td>TFT_RST<\/td><td>-1<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>-1<\/td><td>-1<\/td><\/tr><tr><td>TFT_MOSI<\/td><td>GPIO 13<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 13<\/td><td>GPIO 13<\/td><\/tr><tr><td>TFT_MISO<\/td><td>GPIO 12<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 12<\/td><td>GPIO 12<\/td><\/tr><tr><td>TFT_SCLK<\/td><td>GPIO 14<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 14<\/td><td>GPIO 14<\/td><\/tr><tr><td>Touch_CS<\/td><td>GPIO 33<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 33<\/td><td>GPIO 33<\/td><\/tr><tr><td>Touch_IRQ<\/td><td>GPIO 36<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 36<\/td><td>GPIO 36<\/td><\/tr><tr><td>Backlight<\/td><td>GPIO 21<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/td><td>GPIO 21<\/td><td>GPIO 21<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wichtig<\/strong>: Bei einigen Revisionen ist der Touch-Interrupt (<code>INT<\/code>) an GPIO 22 statt an GPIO 21 angeschlossen. Dies muss im Code entsprechend angepasst werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Display-Gr\u00f6\u00dfe und -Aufl\u00f6sung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bildschirmaufl\u00f6sung variiert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1,9\u2033: 170\u00d7320 Pixel<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li>2,8\u2033: 240\u00d7320 Pixel<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li>3,5\u2033: 320\u00d7480 Pixel<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Darstellungsfunktionen (<code>drawChannelOverview()<\/code>) m\u00fcssen f\u00fcr andere Aufl\u00f6sungen angepasst werden \u2013 die Koordinaten f\u00fcr Texte und Balken sind auf 240\u00d7320 Pixel optimiert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Die Ergebnisse verstehen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der WLAN-Lastmonitor liefert drei zentrale Erkenntnisse:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Kanalbelegung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Balkenanzeige zeigt, wie viele Ger\u00e4te auf jedem Kanal senden. Ein Kanal mit vielen Ger\u00e4ten ist nicht automatisch schlecht \u2013 entscheidend ist, ob diese Ger\u00e4te auch tats\u00e4chlich Daten \u00fcbertragen. Der Promiscuous Mode erfasst alle Pakete, unabh\u00e4ngig von ihrer Gr\u00f6\u00dfe. Ein Kanal mit 20 Ger\u00e4ten, die nur gelegentlich ein Statuspaket senden, ist weniger belastet als ein Kanal mit 5 Ger\u00e4ten, die permanent 4K-Videos streamen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Netzwerk\u00fcberlappung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Anzahl der Netzwerke pro Kanal ist ein Indikator f\u00fcr \u00dcberlappung. Besonders kritisch sind die Kan\u00e4le 1, 6 und 11 \u2013 sie \u00fcberlappen sich nicht und sind daher die einzig sinnvollen Kan\u00e4le f\u00fcr ein stabiles WLAN<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Wenn auf Kanal 6 mehrere Netzwerke senden, kommt es zu Kollisionen und Wiederholungen \u2013 die effektive Bandbreite sinkt drastisch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Belastungsbewertung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bewertung \u201e\u00fcberlastet\u201c ist das Ergebnis einer gewichteten Formel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">text<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Score = (Ger\u00e4te \u00d7 2) + Netzwerke + (RSSI-Strafpunkte)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Score \u00fcber 20 bedeutet: Der Kanal ist \u00fcberlastet<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Die Empfehlung zeigt den Kanal mit dem niedrigsten Score \u2013 idealerweise einen der Kan\u00e4le 1, 6 oder 11.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Erweiterungsm\u00f6glichkeiten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der gezeigte Code ist nur der Anfang. Hier sind einige Ideen f\u00fcr Weiterentwicklungen:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Datenprotokollierung auf microSD<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der CYD hat einen microSD-Kartensteckplatz<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>. Die Messwerte k\u00f6nnen im CSV-Format gespeichert und sp\u00e4ter am PC analysiert werden \u2013 perfekt f\u00fcr eine Langzeitbeobachtung \u00fcber Tage oder Wochen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Farbige Heatmap<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine grafische Darstellung der Kanalbelegung als Heatmap \u00fcber die Zeit zeigt, wie sich die Funklandschaft im Tagesverlauf ver\u00e4ndert. Morgens viele Ger\u00e4te? Abends weniger? Solche Muster lassen sich mit dem CYD wunderbar visualisieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Bluetooth-Sniffer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der ESP32 kann nicht nur WLAN, sondern auch Bluetooth im Promiscuous Mode abh\u00f6ren. Damit lie\u00dfen sich auch Bluetooth-Ger\u00e4te in der Umgebung erfassen \u2013 ein echter Mehrwert f\u00fcr die Netzwerkdiagnose.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Web-Interface<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der CYD kann als Webserver fungieren und die Messwerte im lokalen Netzwerk bereitstellen. So k\u00f6nnte man die Daten bequem vom Smartphone oder PC abrufen, ohne am Ger\u00e4t selbst stehen zu m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Alarm-Funktion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei \u00dcberschreitung bestimmter Schwellwerte (z.\u202fB. mehr als 10 Ger\u00e4te auf dem eigenen Kanal) k\u00f6nnte das CYD \u00fcber die RGB-LED einen optischen Alarm ausgeben<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/#comment-921966\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit: Der CYD als Fenster zur unsichtbaren Welt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Cheap Yellow Display ist weit mehr als ein billiges Spielzeug \u2013 es ist ein vollwertiges Werkzeug f\u00fcr die Netzwerkdiagnose, das in puncto Preis-Leistungs-Verh\u00e4ltnis seinesgleichen sucht. F\u00fcr etwa 15 Euro erh\u00e4lt man einen ESP32 mit integriertem Touchdisplay, der im Promiscuous Mode die gesamte WLAN-Umgebung analysieren kann<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der in diesem Artikel vorgestellte WLAN-Lastmonitor geht weit \u00fcber einfache Signalst\u00e4rke-Messungen hinaus. Er macht sichtbar, was bisher unsichtbar war: die tats\u00e4chliche Belegung der Funkkan\u00e4le, die Anzahl der aktiven Ger\u00e4te und eine fundierte Empfehlung f\u00fcr den optimalen Kanal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei ist das Projekt nicht nur ein technisches Werkzeug, sondern auch ein Lernobjekt. Es zeigt, wie der ESP32 im Promiscuous Mode arbeitet, wie man Rohdaten in aussagekr\u00e4ftige Informationen verwandelt und wie eine benutzerfreundliche Oberfl\u00e4che auf einem Embedded-System gestaltet wird. F\u00fcr den fortgeschrittenen Anf\u00e4nger ist es eine hervorragende Gelegenheit, die Grenzen des ESP32 auszuloten \u2013 und f\u00fcr den Profi ein n\u00fctzliches Diagnosewerkzeug f\u00fcr den Werkzeugkasten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Vielfalt der CYD-Varianten mag zun\u00e4chst verwirrend sein<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>, doch mit den richtigen Informationen und etwas Geduld findet man das passende Ger\u00e4t f\u00fcr das eigene Projekt. Die Community rund um den CYD w\u00e4chst stetig<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a>, und mit jeder neuen Version werden die Fallstricke kleiner und die M\u00f6glichkeiten gr\u00f6\u00dfer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wer sein WLAN wirklich verstehen will, kommt an einem eigenen WLAN-Monitor nicht vorbei. Und mit dem CYD ist dieser Monitor nicht nur erschwinglich, sondern auch noch ein echter Hingucker auf dem Schreibtisch.<\/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<ol start=\"1\" class=\"wp-block-list\">\n<li>GitHub \u2013\u00a0<em>ESP32-2432S028R River Levels Display<\/em>\u00a0(chanslor\/ESP32-2432S028R). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/github.com\/chanslor\/ESP32-2432S028R%5Breference:58%5D%5Breference:59%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/chanslor\/ESP32-2432S028R[reference:58][reference:59]<\/a><\/li>\n\n\n\n<li>Raspberry Pi Geek \u2013\u00a0<em>Aktuelle Hardware im Kurztest<\/em>\u00a0(Ausgabe 11\/2024). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/%5Breference:60%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.raspberry-pi-geek.de\/ausgaben\/rpg\/2024\/11\/aktuelle-hardware-im-kurztest-29\/[reference:60]<\/a><\/li>\n\n\n\n<li>Medium \u2013\u00a0<em>Use an ESP32 Cheap Yellow Device as graphical Wi-Fi Analyzer<\/em>\u00a0(@androidcrypto). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3%5Breference:61%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/medium.com\/@androidcrypto\/use-an-esp32-cheap-yellow-device-as-graphical-wi-fi-analyzer-47549374a1e3[reference:61]<\/a><\/li>\n\n\n\n<li>Random Nerd Tutorials \u2013\u00a0<em>ESP32 Cheap Yellow Display (CYD) Pinout (ESP32-2432S028R)<\/em>. Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/%5Breference:62%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/randomnerdtutorials.com\/esp32-cheap-yellow-display-cyd-pinout-esp32-2432s028r\/[reference:62]<\/a><\/li>\n\n\n\n<li>GitHub \u2013\u00a0<em>LVGL_CYD: Using the &#8222;Cheap Yellow Display&#8220; with LVGL<\/em>\u00a0(ropg\/LVGL_CYD). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/github.com\/ropg\/LVGL_CYD%5Breference:63%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/ropg\/LVGL_CYD[reference:63]<\/a><\/li>\n\n\n\n<li>GitHub \u2013\u00a0<em>ESP32-Cheap-Yellow-Display<\/em>\u00a0(witnessmenow). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/github.com\/witnessmenow\/ESP32-Cheap-Yellow-Display%5Breference:64%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/witnessmenow\/ESP32-Cheap-Yellow-Display[reference:64]<\/a><\/li>\n\n\n\n<li>GitHub \u2013\u00a0<em>CYD_Projects<\/em>\u00a0(bitbank2). Verf\u00fcgbar unter:\u00a0<a href=\"https:\/\/github.com\/bitbank2\/CYD_Projects%5Breference:65%5D\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/bitbank2\/CYD_Projects[reference:65]<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Autor: DerSchneider Einleitung Das WLAN ist zum stillen Lebensnerv unseres digitalen Alltags geworden \u2013 doch anders als bei der Stromversorgung oder der Wasserleitung haben wir kaum ein Gef\u00fchl daf\u00fcr, wann dieses Netz an seine Grenzen st\u00f6\u00dft. Der Stream ruckelt, der Videocall friert ein, die smarte Lampe reagiert nicht mehr. Die intuitive Vermutung: \u201eIrgendwas belastet mein [&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,1],"tags":[9649,1170,2225,3406,9651,9647,5565,7070,9650,9652],"class_list":["post-6562","post","type-post","status-publish","format-standard","hentry","category-elektrotechnik","category-hardware-im-test","category-mit-den-handen","category-uncategorized","tag-arduino-code","tag-cheap-yellow-display","tag-esp32","tag-iot","tag-kanalbelegung","tag-netzwerkdiagnose","tag-promiscuous-mode","tag-touchscreen","tag-wlan-analyse","tag-wlan-lastmonitor"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6562","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=6562"}],"version-history":[{"count":5,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6562\/revisions"}],"predecessor-version":[{"id":6567,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6562\/revisions\/6567"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=6562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=6562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=6562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}