WiFi Extender (NAT-Router) mit ESP8266 und ESP32

WiFi Extender mit ESP8266 und ESP32

Sie stehen draußen im Vorgarten, bauen etwas, brauchen dringend ein Tutorial, weil sie nicht weiter wissen und wollen dieses im Internet suchen. Einfach mal schnell eine Info mit der Suchmaschine Ihres Vertrauens finden. Genau an diesem Ort sind natürlich die mobile Datenverbindung auf niedrigstem Niveau und das heimische WLAN außer Reichweite. Sie kennen das. Mir sind dann die ESPs in den Sinn gekommen, die man als Accesspoint einsetzen kann. Das Problem und auch die Lösung sind nicht unbedingt neu. Ich möchte an dieser Stelle meine Erfahrungen mit Ihnen teilen. Los geht’s.

Was wir benötigen

1

ESP32 oder ESP8266 Entwicklungsboard aus dem AZ-Shop

1

PC mit Internetverbindung

1

USB-Verbindungskabel

 

Moritz Spranger hatte in seinem Beitrag „ESP8266 WLAN-Mesh über 4 Nodes“ vor einigen Jahren bereits von solch einem ähnlichen Projekt berichtet. Für diese Lösung wird der ESP mit einer Firmware über ein externes Tool geflasht. Ich zeige den Ablauf später noch etwas genauer.

Ich gehe an dieser Stelle davon aus, dass Sie die Arduino IDE, sowie die Quellen für ESP8266 und ESP32 installiert haben. Wenn nicht, schauen Sie in den AZ-Blog. Dort wird es beschrieben. Ich empfehle an dieser Stelle, die Bibliotheken auf den neuesten Stand zu updaten.

ESP8266

Ich hatte zuerst begonnen, die Beispiel-Sketches in der Arduino IDE zu durchforsten (es muss dafür in der Arduino IDE unter Werkzeuge das verwendete Board eingestellt sein). Auf der Suche nach Accesspoints und Hotspots findet man unter ESP8266WiFi das Programm RangeExtender-NAPT. Dort müssen Sie nur die Zugangsdaten zu Ihrem WLAN-Netzwerk eintragen:

 #define STASSID "mynetwork"
 #define STAPSK "mynetworkpassword"
Laden Sie anschließend den Sketch auf den Mikrocontroller. In der Übersicht Ihrer WLAN-Netzwerke müsste nun der ESP auftauchen mit der Bezeichnung ihres Heimnetzwerkes und hinten angestelltem „extender“

[IHRWLANNAME]extender

Um sich damit zu verbinden, müssen Sie den gleichen WLAN-Key eingeben, wie für Ihr eigenes Netzwerk. Ich musste im Browser dann einige Versuche durchführen, bis die Internetverbindung funktionierte. Aber das tat es dann. Eigentlich ganz einfach.

Verbindung über ein Captive Portal

Es ist etwas umständlich, wenn man die Zugangsdaten in den Quellcode eintragen muss. Das ist mir persönlich zu unflexibel. Also hatte ich überlegt, einen Webserver aufzusetzen, der im Internetbrowser ein Eingabeformular anzeigt. Darüber möchte ich die Zugangsdaten eingeben. Da es im Internet nichts gibt, dass es nicht schon gibt, habe ich diese Lösung hier gefunden. Diese finde ich sehr komfortabel. Es sei darauf hingewiesen, dass im Seriellen Monitor die Zugangsdaten inklusive Passwort angezeigt werden. Diesen Sketch kann man direkt auf den ESP8266 laden, ohne etwas am Quellcode zu verändern. Anschließend sehen Sie in der Übersicht Ihrer WLAN-Netzwerke ein Gerät namens ESP gefolgt von einer Zeichenkette. Verbinden Sie sich damit (ohne Passwort) und rufen im Browser die IP 192.168.4.1 auf (diese Daten sehen sie auch im Seriellen Monitor der Arduino IDE). Es wird Ihnen dann ein Eingabeformular angezeigt, in das Sie die Zugangsdaten zu Ihrem WLAN-Netzwerk eintragen können. Außerdem können Sie den Namen des ESP-Netzwerks ändern und ein Passwort einstellen (was dringend empfohlen ist). Ich nutze hier auch das gleiche Passwort wie für mein Heimnetzwerk. Sind die Daten eingetragen, verbinden Sie sich mit dem ESP (falls Sie den Namen und das Passwort neu eingerichtet haben) und schon sollten Sie eine Verbindung zum Internet haben.

Es geht noch etwas komfortabler

Wie Sie sehen, müssen Sie in das Eingabeformular den Namen Ihres Netzwerkes eingeben. Leider sind diese vom Hersteller meistens etwas lang formuliert. Also möchte ich den Sketch nun so ändern, dass mir die verfügbaren Netzwerke in einer Liste angezeigt werden. Dort möchte ich mein Netzwerk auswählen, statt den Namen einzutippen. Dafür habe ich den oben erwähnten Quellcode angepasst und das HTML-Formular so verändert, dass die WLAN-Netzwerke in der Nähe aufgelistet und mit einer Radiocheckbox versehen werden. So kann man einfach die Auswahl treffen, sein Passwort eingeben und sich verbinden. Hier der Quellcode:

 #if LWIP_FEATURES && !LWIP_IPV6
 
  #define HAVE_NETDUMP 0
 
  #include <ESP8266WiFi.h>
  #include <ESP8266WebServer.h>
  #include <lwip/napt.h>
  #include <lwip/dns.h>
  #include <LwipDhcpServer.h>
 
  #define NAPT 1000
  #define NAPT_PORT 10
 
  #if HAVE_NETDUMP
 
  #include <NetDump.h>
 
  void dump(int netif_idx, const char* data, size_t len, int out, int success) {
  (void)success;
    Serial.print(out ? F("out ") : F(" in "));
    Serial.printf("%d ", netif_idx);
 
    // optional filter example: if (netDump_is_ARP(data))
  {
      netDump(Serial, data, len);
      //netDumpHex(Serial, data, len);
  }
  }
  #endif
 
  // MY FUNCTIONS
  bool testwifi() {
    Serial.printf("\nTesting connection with '%s'\n", WiFi.SSID().c_str());
    int count = 0;
    digitalWrite(2,LOW);
    while (count < 20) {
      if (WiFi.status() == WL_CONNECTED) {
        Serial.printf("\nWiFi Connected! \nSTA: %s (dns: %s / %s)\n\n",
                      WiFi.localIP().toString().c_str(),
                      WiFi.dnsIP(0).toString().c_str(),
                      WiFi.dnsIP(1).toString().c_str());
 
        // give DNS servers to AP side
        dhcpSoftAP.dhcps_set_dns(0, WiFi.dnsIP(0));
        dhcpSoftAP.dhcps_set_dns(1, WiFi.dnsIP(1));
        digitalWrite(2,HIGH);
        return true;
    }
      Serial.print(".");
      delay(1000);
      count++;
  }
    Serial.printf("\nCan't connect to WiFi, connect to AP '%s' and configure...\n\n", WiFi.softAPSSID());
    return false;
  }
 
  // SERVER
  ESP8266WebServer server(80);
  String content;
  String networks[40];
 
  void serverconfig() {
    server.begin();
    int n = WiFi.scanNetworks();
 
    content = "<!DOCTYPE html><html lang='en'><meta name='viewport' content='width=device-width, initial-scale=1.0'>";
    content += "<head><title>ESP8266 Configuration Page</title></head>";
    content += "<body>";  
 
    if (WiFi.status() != WL_CONNECTED) {
      content += "<div>currently not connected</div>";
  }
    else {
      content += "<div>connected to: ";
      content += WiFi.SSID();
      content += " IP: ";
      content += WiFi.localIP().toString();
      content += "</div>";
  }
 
    content += "<div>";
   
    if (n == 0) {
      content += "<h1>No wireless networks found</h1>";
  }
     
    else {
      content += "<h1>Wireless Station Settings</h1>";
      content += "<form method='post'>";
      for (int i = 0; i < n; ++i) {
        networks[i] = WiFi.SSID(i);
        content += "<div>";
        content += "<input type=\"radio\" id=\"";
        content += String(i);
        content += "\" ";
        content += "name=\"SSIDs\" value=\"";
        content += String(i);
        content += "\">";
        content += "<label for=\"";
        content += String(i);
        content += "\"";
        content += ">";
        content += String(i + 1);
        content += ": ";
        content += WiFi.SSID(i);
        content += " (";
        content += String(WiFi.RSSI(i));
        content += ")";
        content += (WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*";
        content += "</label>";
        content += "</div>";
        delay(10);
    }
      content += "<label>Password:</label><br><input type='password' placeholder='********' name='stapsk' minlength=8 maxlength=63><br><small>Must be at least 8 characters or blank!</small><br><br>";
      content += "<button type='submit' formaction='stasettings'>Save Permanently</button><button type='submit' formaction='tempstasettings'>Save Temporarily (Until Reboot)</button>";
      content += "</form>";  
      content += "<h1>Wireless Access Point Settings</h1>";
      content += "<form method='post'>";
      content += "<label>SSID:</label><br><input name='apssid' placeholder='";
      content += WiFi.softAPSSID();
      content += "' length=32><br>";
      content += "<label>Password:</label><br><input type='password' placeholder='";
      content += WiFi.softAPPSK();
      content += "' name='appsk' minlength=8 maxlength=63><br><small>Must be at least 8 characters or blank!</small><br><br>";
      content += "<button type='submit' formaction='apsettings'>Save Permanently</button><button type='submit' formaction='tempapsettings'>Save Temporarily (Until Reboot)</button>";
      content += "</form>";
  }
 
    content += "<h1>Miscellaneous</h1>";
    content += "<form method='get' action='reboot'><input type='submit' value='Reboot'></form>";
    content += "<div>";
    server.on("/", []() {
      server.send(200, "text/html", content);
  });
 
    server.onNotFound([]() {
      server.send(404, "text/plain", "How the heck did you get here?");
  });
 
    server.on("/stasettings", []() {
      String temp = server.arg("SSIDs");
      int number = temp.toInt();
      String stassid = networks[number];
      String stapsk = server.arg("stapsk");
      if (stassid.length() > 0) {
        server.send(200, "text/plain", "Settings Recieved");
        Serial.printf("\n\nAttempting to connect to '%s' using password '%s' \n", stassid.c_str(), stapsk.c_str());
        WiFi.persistent(true);
        WiFi.begin(stassid, stapsk);
        testwifi();
    }
  });
 
    server.on("/tempstasettings", []() {
      String temp = server.arg("SSIDs");
      int number = temp.toInt();
      String stassid = networks[number];
      String stapsk = server.arg("stapsk");
      if (stassid.length() > 0) {
        server.send(200, "text/plain", "Settings Recieved");
        Serial.printf("\n\nAttempting to connect to '%s' using password '%s' \n", stassid.c_str(), stapsk.c_str());
        WiFi.persistent(false);
        WiFi.begin(stassid, stapsk);
        testwifi();
    }
  });
 
    server.on("/apsettings", []() {
      String apssid = server.arg("apssid");
      String appsk = server.arg("appsk");
      if (apssid.length() > 0) {
        server.send(200, "text/plain", "Settings Recieved");
        Serial.printf("\n\nSetting AP Credentials \nSSID: %s \nPassword: %s \n", apssid.c_str(), appsk.c_str());
        WiFi.persistent(true);
        WiFi.softAP(apssid, appsk);
    }
  });
 
    server.on("/tempapsettings", []() {
      String apssid = server.arg("apssid");
      String appsk = server.arg("appsk");
      if (apssid.length() > 0) {
        server.send(200, "text/plain", "Settings Recieved");
        Serial.printf("\n\nSetting Temporary AP Credentials \nSSID: %s \nPassword: %s \n", apssid.c_str(), appsk.c_str());
        WiFi.persistent(false);
        WiFi.softAP(apssid, appsk);
    }
  });
 
    server.on("/reboot", []() {
      server.send(200, "text/plain", "Rebooting now...");
      delay(5000);
      ESP.reset();
  });
  }
 
  void setup() {
    Serial.begin(115200);
    pinMode(2, OUTPUT);
    delay(1000);
    Serial.printf("\n\nNAPT Range extender\n");
    Serial.printf("Heap on start: %d\n", ESP.getFreeHeap());
 
  #if HAVE_NETDUMP
    phy_capture = dump;
  #endif
 
    WiFi.setPhyMode(WIFI_PHY_MODE_11N); // Set radio type to N
    WiFi.mode(WIFI_AP_STA);
    WiFi.persistent(false);
    WiFi.begin(); // Use stored credentials to connect to network
    testwifi();
    WiFi.softAPConfig(  // Set IP Address, Gateway and Subnet
      IPAddress(192, 168, 4, 1),
      IPAddress(192, 168, 4, 1),
      IPAddress(255, 255, 255, 0));
    WiFi.softAP(WiFi.softAPSSID(), WiFi.softAPPSK()); // Use stored credentials to create AP
 
    Serial.printf("Heap before: %d\n", ESP.getFreeHeap());
    err_t ret = ip_napt_init(NAPT, NAPT_PORT);
    Serial.printf("ip_napt_init(%d,%d): ret=%d (OK=%d)\n", NAPT, NAPT_PORT, (int)ret, (int)ERR_OK);
    if (ret == ERR_OK) {
      ret = ip_napt_enable_no(SOFTAP_IF, 1);
      Serial.printf("ip_napt_enable_no(SOFTAP_IF): ret=%d (OK=%d)\n", (int)ret, (int)ERR_OK);
      if (ret == ERR_OK) {
        Serial.printf("\nWiFi Network '%s' with Passowrd '%s' and IP '%s' is now setup\n", WiFi.softAPSSID(), WiFi.softAPPSK().c_str(), WiFi.softAPIP().toString().c_str());
    }
  }
    Serial.printf("Heap after napt init: %d\n", ESP.getFreeHeap());
    if (ret != ERR_OK) {
      Serial.printf("NAPT initialization failed\n");
  }
 
    serverconfig();
  }
 
  #else
 
  void setup() {
    Serial.begin(115200);
    Serial.printf("\n\nNAPT not supported in this configuration\n");
  }
 
  #endif
 
  void loop() {
    server.handleClient();
    if (WiFi.status() != WL_CONNECTED) {
      digitalWrite(2, LOW);
      delay(1000);
      digitalWrite(2, HIGH);
      delay(1000);
  }
    else {
      digitalWrite(2, HIGH);
  }
 }

Zwischenfazit

Dafür, dass ich letztendlich reichlich Zeit bis hierher investiert habe, funktioniert das mehr schlecht als recht. Ich habe die Geschwindigkeit gemessen und kam nur knapp über 1 Mbit/s. Das scheint ein generelles Problem zu sein, da es auch auf Github und im Forum von Espressif besprochen wurde. Eine Lösung dafür gibt es leider nicht.

ESP32 oder wie alles besser funktioniert

Laut meiner Recherchen ist es von Seiten Espressifs (der Hersteller des ESP-Chips) nicht vorgesehen, einen ESP32 als WiFi-Extender (WiFi NAT-Router) zu verwenden. Dementsprechend gibt es keine Portierung des Extender-Beispielsketches für den ESP32. Allerdings gibt es das Projekt von martin-ger auf Github, das bereits häufig verwendet wurde. Auch in unserem Blogbeitrag ESP8266 WLAN-Mesh über 4 Nodes (von Moritz Spranger) wird diese Variante genutzt.

Das Projekt ist auch für den ESP8266 verfügbar. Da ich dafür ebenfalls eine ordentliche Lösung suche, zeige ich hier beide Möglichkeiten.

Github Webseite für ESP8266

Github Webseite für ESP32


Unter Windows:

  • Es wird das ESP Flash Download Tool benötigt. Das können Sie hier herunterladen (in der Tabelle auf der rechten Seite den Downloadbutton betätigen)
  • Klicken Sie auf der Github Webseite (ESP8266 und ESP32) oben rechts auf den grünen Button „Code“ und laden dort alles als ZIP herunter.
  • Starten Sie das Flash Download Tool und wählen den ESP8266 oder ESP32 aus.
  • stellen Sie dann alles so ein wie auf dem folgenden Screenshot.

ESP8266:

ESP Tool

ESP32:

ESP Tool

  • Schließen Sie den ESP per USB an den Rechner an
  • Durch klicken auf den „…“ Button können Sie die BIN-Dateien auswählen. Die benötigten Daten finden Sie in der heruntergeladenen ZIP im Unterverzeichnis „Firmware“ (ESP8266) oder „build“ (ESP32).
  • In das Feld daneben tragen Sie die Speicheradressen ein. In diesem Fall „0x00000“ und „0x02000“ (ESP8266) oder „0x1000“, „0x10000“ und „0x8000“ (ESP32). Es handelt sich dabei um die Startadressen im Speicher des ESPs, an denen das Programm abgelegt wird.
  • Sollte kein COM-Port angezeigt werden, müssen Sie den passenden Treiber installieren (sollten Sie den ESP bereits über die Arduino IDE programmiert haben, sollte er auch hier erkannt werden). Die Nummer des COM-Ports kann für Sie eine andere sein.
  • Für einen ESP-01 verwenden Sie für FLASH SIZE "8Mbit" statt „32Mbit“ (ESP8266)
  • Starten Sie den Flash Vorgang

ESP8266:

ESP Tool

ESP32:

ESP Tool

Hinweis: Wie auch in der Arduino IDE müssen Sie hier den ESP32 in den Flash Modus durch Drücken der BOOT-Taste bringen. Halten Sie sie gedrückt und betätigen Sie dann den Start-Button.

ESP8266:

ESP Tool

ESP32:

ESP Tool

Nach dem erfolgreichen Flashvorgang trennen Sie kurz die USB-Verbindung zum ESP und starten Sie ihn dann neu, indem Sie den Stecker wieder verbinden (Eventuell reicht auch ein einfacher Reset).

Sie sollten dann nach wenigen Augenblicken ein neues WLAN-Netzwerk mit dem Namen „MyAP“ (ESP8266) oder „ESP32_NAT_Router“ (ESP32) sehen.

Verbinden Sie sich mit diesem Netzwerk und rufen dann im Internetbrowser die Adresse http://192.168.4.1/ auf. Sie sollten dann diese Übersicht sehen:

ESP8266:

Router Settings ESP8266

ESP32:

Router Settings ESP32

  • AP-Settings sind immer die Zugangsdaten für den ESP32. Zu Beginn ist hier kein Passwort eingestellt. Das sollten Sie ändern. Ich nutze an dieser Stelle (wie bereits vorher erwähnt) das gleiche Passwort, das auch in meinem Internetrouter eingestellt ist.
  • STA-Settings sind die Zugangsdaten zu Ihrem WLAN-Router.
  • Sollten Sie einen PC verwenden, können Sie mit der rechten Maustaste auf die Eigenschaften des Netzwerks klicken und dort das Passwort per Copy & Paste auf der Webseite eintragen. Man spart sich dann das abtippen langer Passwörter. Das muss man nur einmal machen. Danach läuft der ESP autark. (Das Passwort befindet sich dann im flüchtigen Speicher. Falls das für Sie ein sicherheitsrelevantes Problem ist, sollten Sie das Passwort händisch eintippen.)
  • Stellen Sie für den ESP8266 den Eintrag für Security auf WPA2!
  • Für den ESP32 können Sie zusätzliche eine statische IP-Adresse eintragen.

Es kann nicht schaden, nach dem Eintragen aller Settings den ESP neu zu starten. Für den Fall, dass keine Verbindung aufgebaut wird. Denken Sie daran, dass Sie (wahrscheinlich) für den ESP-Zugangspunkt ein Passwort vergeben haben. Sie müssen sich damit neu verbinden.

Unter Linux

Auf den Github Webseiten von martin-ger wird auch gezeigt, wie Sie die jeweiligen Programme unter Linux auf den ESP flashen:

Sie müssen dafür das esptool.py installieren (ausführlichere Infos erhalten Sie hier).

Starten Sie das Terminal und geben folgenden Befehl ein:

 $ pip install esptool

 

ESP8266

Im Terminal geben Sie diesen Befehl ein:

 $ esptool.py --port /dev/ttyUSB0 write_flash -fs 4MB -ff 80m -fm dio 0x00000 firmware/0x00000.bin 0x02000 firmware/0x02000.bin"

Sollten Sie nicht die gängigen ESP8266 wie NodeMCU oder D1 Mini verwenden, ändern Sie folgende Einträge in der Befehlszeile:

  • ESP-01: -fs 1MB
  • esp8285: -fs 1MB und -fm dout

ESP32

Denken Sie auch hier daran, den ESP32 in den FLASH Modus zu bringen (BOOT-Taste)!

Im Terminal geben Sie diesen Befehl ein:

 $ esptool.py --chip esp32 --port /dev/ttyUSB0 \
 --baud 115200 --before default_reset --after hard_reset write_flash \
 -z --flash_mode dio --flash_freq 40m --flash_size detect \
 0x1000 build/bootloader/bootloader.bin \
 0x10000 build/esp32_nat_router.bin \
 0x8000 build/partitions_example.bin

Sollten die Pfade ungültig sein, wurde das esptool eventuell nicht als PATH-Variable global eingetragen, oder sie befinden sich nicht im Hauptordner der heruntergeladenen Dateien. Sie können die Quellordner auch absolut angeben, indem Sie den kompletten Pfad statt nur „firmware“ bzw. „build“ angeben.

Unter Mac OS

Ich konnte das leider nicht testen. Der Flashvorgang für einen ESP8266 wird u.a. hier beschrieben. Die Einstellungen für das esptool sollten dann die gleichen sein, wie unter Linux

Fazit

Nachdem ich einige Sketches für die Arduino IDE ausprobiert habe, haben dann doch nur die Programme von martin-ger zufriedenstellend funktioniert (danke an dieser Stelle für diese Arbeit). Der Schritt über das ESP Flash Download Tool scheint nur etwas umständlicher, es kostet dann aber nur wenige Minuten mehr, als aus der Arduino IDE heraus. Wenn ich dann die Zeit vergleiche, die ich für das vorherige Programmieren in der Arduino IDE aufgebracht habe, war die letzte Variante auf jeden Fall die schnellere.

Die Internetverbindung des ESP8266 betrug ca. 5Mbit/s, für den ESP32 waren es ca. 16 Mbit/s. Letzterer bootet natürlich auch schneller. Der ESP8266 hatte ab und zu Verbindungsunterbrechungen.

Was die Reichweite angeht, hängt das stark von der Umgebung ab, in der Sie den ESP als NAT-Router einsetzen. In meinem Fall reichte es bis in den Vorgarten, wobei der Internetrouter im hinteren Teil des Hauses aufgestellt ist. Durch dicke Wände, oder über mehrere Etagen verkürzt sich die Reichweite und auch die Übertragungsgeschwindigkeit wird dann eventuell stark sinken. Testen Sie das selbst einmal aus.

Sollten Sie andere Möglichkeiten, oder sogar funktionierende Arduino Sketches zur Verfügung haben, würde ich mich freuen, wenn Sie diese mit uns zu teilen.

Wie Sie den ESP als mobilen Hotspot aus einem Akku mit Strom versorgen, können Sie u.a. aus diesem Blogbeitrag entnehmen. Das nur als abschließender Tipp.

Viel Spaß mit Ihrem (günstigen) WiFi Extender.

Andreas Wolter

für AZ-Delivery Blog

Esp-32Esp-8266Projekte für anfänger

5 Kommentare

HaJo

HaJo

Fast wäre ich verzweifelt – nach dem ich meinen ESP8266Mod-12F (AZ-Delivery D1 Mini) geflasht hatte, konnte ich wie beschrieben das WLAN-Netz MyApp aktivieren, ich konnte die AP-SSID und das Passwort ändern nur die Einbindung ins heimische Netz war nicht möglich (auch erkennbar in der ESP-Konfigurationsseite). Nach der Aufforderung Connect wurde der Inhalt in den Feldern SSID und Passwort des heimischen Netzes gelöscht. In meiner Fritzbox 7590 wurde auch nur unter “Kanälen” das neue WLAN-Netz angezeigt aber mit der korrekten Mac-Adresse. Alle Anstrengungen den ESP in das Netz der Fritzbox einzubinden schlug fehl.
Bei der Internetrecherche fand ich ein Tutorial für den Raspi, das sich mit dem ESP8266 als Repeater befasste. Der Autor hatte ähnliche Probleme. Als Lösung fand er folgenden Weg: Nur die Bindateien 0×02000 und 0×82000 flashen und den SPI-Mode DIO einstellen und siehe da, ich konnte endlich meinen ESP als Gerät in der Fritzbox registrieren: Gerätename ESP-xxxxxx (die letzten 6 Stellen der Mac-Adresse). Nun noch in der Konfigurationsseite die Checkbox “automesh” anklicken und erneut den Connect-Button anklicken (fehlt in der aktualisierten Seite der Haken, Haken erneut setzen und den Connect-Button erneut anklicken). Nun funktioniert auch der Repeater und wird in der Fritz!Box angezeigt. Der Name des neuen Repeaters kann beliebig gewählt werden. Die merkwürdige Darstellung in der Fritz!Box soll man ruhig übersehen, Hauptsache es funktioniert.

Andreas Wolter

Andreas Wolter

@Tester: genau das war das Problem. Es gibt keine .ino für den ESP32. Der Beitrag fasst sämtliche Erfahrungen zusammen, die ich gemacht habe, um die ESP32 bzw. ESP8266 als Extender zu nutzen. Ich hatte dabei massive Probleme und es funktionierte nichts so wie es sollte. Ich wollte versuchen, es nicht mit einem fertigen BIN zu lösen. Aber es ist aktuell die einzige brauchbare Möglichkeit. Der Quellcode ist offen, den finden Sie bei Github (Link im Beitrag).

Andreas Wolter

Andreas Wolter

@Norbert: Danke für den Hinweis. Ich habe das im Beitrag geändert und nun zur Downloadseite, statt zum Download selbst verlinkt.

Norbert

Norbert

Der Link für den ESP Flash Download hat sich geändert (neue Version)
https://www.espressif.com/sites/default/files/tools/flash_download_tool_3.9.0_0.zip

Tester

Tester

Das „einzige brauchbare“ ist das untere Programm, aber wo finde ich die .ino – Datei ? Fertige .bin Dateien helfen beim Testen/Weiterentwickeln nicht. Gute Zusammenfassung, aber das Programm ist seit 2 Jahren im Internet abrufbar.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi