WiFi Extender (NAT-Router) mit ESP8266 und ESP32 - AZ-Delivery

Extensor WiFi con ESP 8266 y esp32

Se pararon en el patio delantero, construyeron algo, y necesitaban desesperadamente un tutorial porque no sabían más y querían encontrarlo en Internet.Simplemente busque rápidamente usando un motor de búsqueda en el que confíe.Es aquí donde el nivel más bajo de conectividad móvil de datos y WLAN local está, por supuesto, fuera de alcance.Ya sabes.Luego pensé en ESP, que podría ser utilizado como punto de acceso.Los problemas y soluciones no son necesariamente nuevos.Me gustaría compartir mi experiencia con ustedes aquí.Empecemos.

Lo que necesitamos

1

Esp32 O ESP 8266 Development Board of Az Store

1

PC Conectado a Internet

1

Universal Serial Bus

 

Moritz spranger tiene un lugar en su contribuciónRedes WLAN en 4 nodos ESP 8266"Hace unos a ños, se informó de un proyecto similar. Para esta solución, esp flash firmware a través de una herramienta externa. Más tarde mostraré el proceso con más precisión.

Asumo que ya tiene instalado el IDE de arduino, as í como el código fuente para esp8266 y esp32. Si no, consulte el blog Az. Aquí está la descripción. Le sugiero que actualice la biblioteca en este momento.

ESP 8266

Empecé a navegar por el boceto de muestra en el IDE de arduino (que debe ser configurado bajo las herramientas usadas en el IDE de arduino). Esp8266wifi Programa Extensor de rango naptAquí, simplemente introduzca los datos de acceso a la red WLAN:

 « 35; definir stassid "mynetwork"
 35; define stapsk "mynetworkpassword"
A continuación, descargue el boceto en el Microcontrolador. En la visión general de la red WLAN, el ESP ahora debe mostrar el nombre de la red doméstica y el "extensor" en la parte posterior.

Extensor [ihrlaname]

Para conectarse a él, debe introducir la misma clave WLAN que su propia red. Luego tengo que hacer algunos intentos en mi navegador hasta que la conexión a Internet funcione. Pero más tarde funcionó. En realidad es muy simple.

Conexiones a través de portales de captura

Esto es un poco complicado cuando usted tiene que introducir los datos de acceso en el código fuente. Esto es demasiado inflexible para mí personalmente. Por lo tanto, estoy pensando en configurar un servidor Web para mostrar el formulario de entrada en el navegador de Internet. Quiero introducir datos de acceso sobre esto. No hay nada que no exista en Internet, por lo que La solución está aquí. Este boceto se puede subir directamente al ESP 8266 sin cambiar el código fuente. A continuación, verá un dispositivo llamado ESP en la visión general de la red WLAN, seguido de una líneaConéctelo (sin contraseña) e invoque IP en el navegador 192.168.4.1 Abierto (los datos también se pueden ver en el monitor serie del IDE arduino). A continuación, se muestra un formulario de entrada en el que puede introducir los datos de acceso a la red WLAN. También puede cambiar el nombre de la red ESP y establecer la contraseña (se recomienda encarecidamente)También utilizo la misma contraseña que mi red doméstica. Si ha introducido datos, póngase en contacto con ESP (si ha rediseñado el nombre y la contraseña), ya debe estar conectado a Internet.

Es más cómodo caminar

Como puede ver, debe introducir el nombre de la red en el formulario de entrada.Desafortunadamente, estos suelen ser desarrollados por los fabricantes durante algún tiempo.Por lo tanto, quiero cambiar el boceto para que pueda ver las redes disponibles en la lista.Aquí es donde voy a elegir la red en lugar de escribir un nombre.Para ello, modifiqué el código fuente mencionado anteriormente y cambié el formato HTML para listar las redes WLAN cerca, con una casilla de verificación de radio.De esta manera, sólo tiene que seleccionar, introducir una contraseña y conectarse.Aquí está el código fuente:

 Función if lwipLwip IPv6
 
  « 35; la definición tiene « u netdump 0
 
  « 35; incluye < esp8266wifi.h >
  « 35; incluye < esp8266webserver.h >
  « 35; incluye < lwip / napt.h >
  « 35; incluye < lwip / dns.h >
  « 35; incluye < lwipdhcpserver.h >
 
  « 35; definición napt 1000
  « 35; definir el puerto napt 'u 10
 
  Si tiene netdump
 
  « 35; incluye < netdump.h >
 
  Vacío Dumping(Int Netif IDX, Constante Coque de carbón Fecha, Código t Lang, Int Exterior, Int éxito) {
  (Vacío)éxito;
    Serialización.Imprimir(Exterior ? F("Salir") : F("En));
    Serialización.Printf("%d ", Netif IDX);
 
    Ejemplo de filtro opcional: if (netdump es ARP (datos))
  {
      Volcado de red(Serialización, Fecha, Lang);
      Netdumphex (serial, data, Len);
  }
  }
  #endif
 
  Mi función
  Booleano Testwifi() {
    Serialización.Printf("\ n probar la conexión a «% s» \ n", Red inalámbrica.SSID().Calle cu());
    Int Contar = 0;
    Escritura digital(2,Baja);
    Aunque (Contar < 20) {
      Si (Red inalámbrica.Posición() == Conexión WL) {
        Serialización.Printf("\ n if Connected! \ n server:% s (DNS:% S /% s) \ n \ n",
                      Red inalámbrica.Localización().Tostlin().Calle cu(),
                      Red inalámbrica.Dnsip(0).Tostlin().Calle cu(),
                      Red inalámbrica.Dnsip(1).Tostlin().Calle cu());
 
        Proporcionar el servidor DNS a la página AP
        Dhcpsoftap.Dhcps set DNS(0, Red inalámbrica.Dnsip(0));
        Dhcpsoftap.Dhcps set DNS(1, Red inalámbrica.Dnsip(1));
        Escritura digital(2,Alto);
        Return Real;
    }
      Serialización.Imprimir(".");
      Retraso(1000);
      Contar++;
  }
    Serialización.Printf(No se puede conectar a WiFi, Conéctese a AP «% s» y configure..., Red inalámbrica.Caramelo suave());
    Return Falso;
  }
 
  Servidor
  Servidor web esp8266 Servidor(80);
  String Contenido;
  String Red;[40];
 
  Vacío Servidor() {
    Servidor.Inicio();
    Int N = Red inalámbrica.Red de escaneo();
 
    Contenido = < html lang = 'en' > < meta name = 'ViewPort' Content = 'width = device width, initial scale = 1.0' >;
    Contenido += "< Head > < title > esp8266 Configuration page < / title > < / head >";
    Contenido += "< body >";  
 
    Si (Red inalámbrica.Posición() != Conexión WL) {
      Contenido += "< div > actualmente no conectado < / div >";
  }
    Tiempo estimado de despegue {
      Contenido += "< div > está conectado a:;
      Contenido += Red inalámbrica.SSID();
      Contenido += IP "IP":;
      Contenido += Red inalámbrica.Localización().Tostlin();
      Contenido += "< / div >";
  }
 
    Contenido += "< div >";
   
    Si (N == 0) {
      Contenido += "< h1 > red inalámbrica no encontrada < / h1 >";
  }
     
    Tiempo estimado de despegue {
      Contenido += "< h1 > configuración de la estación de radio < / h1 >";
      Contenido += "< form method = 'Post' >";
      Para (Int I = 0; I < N; ++I) {
        Red;[I] = Red inalámbrica.SSID(I);
        Contenido += "< div >";
        Contenido += "< input type =" Radio \ "id =";
        Contenido += String(I);
        Contenido += "\" ";
        Contenido += "Name = \ \" ssids \ "value =";
        Contenido += String(I);
        Contenido += "\">";
        Contenido += "< Label for =" ";
        Contenido += String(I);
        Contenido += "\"";
        Contenido += ">";
        Contenido += String(I + 1);
        Contenido += ": ";
        Contenido += Red inalámbrica.SSID(I);
        Contenido += " (";
        Contenido += String(Red inalámbrica.Relé de estado sólido(I));
        Contenido += ")";
        Contenido += (Red inalámbrica.Cifrado(I) == ENC type no) ? " " : "*";
        Contenido += "< / Label >";
        Contenido += "< / div >";
        Retraso(10);
    }
      Contenido += "< Label > Password: < / Label > < BR > < input type = 'password' placeholder = '* * * *' name = 'stapsk' minlength = 8 maxlength = 63 > < BR > < Small > Must contain at least 8 Characters or be empty!"Pequeño > < BR > < BR > ";
      Contenido += "< Button type = 'submit' Formation = 'stay settings' > Permanent Save < / Button > < Button type =' submit 'Formation =' tempstasettings' > Temporary Save (until restart) < / Button >";
      Contenido += "< / form >";  
      Contenido += "< h1 > configuración del punto de acceso inalámbrico < / h1 >";
      Contenido += "< form method = 'Post' >";
      Contenido += "< Label > SSID: < / Label > < BR > < input name = 'apsid' placeholder =";
      Contenido += Red inalámbrica.Caramelo suave();
      Contenido += "Longitud = 32 > < BR >";
      Contenido += "< Label > Password: < / Label > < BR > < input type = 'password' placeholder =";
      Contenido += Red inalámbrica.Software();
      Contenido += "La 'applsk' minlength = 8 maxlength = 63 > < BR > < Small > debe contener al menos 8 caracteres o estar vacía! < / small > < BR >";
      Contenido += "< Button type = 'submit' Formation = 'appsettings' > Permanent Save < / Button > < Button type =' submit 'Formation =' templap settings' > Temporary Save (until restart) < / Button >";
      Contenido += "< / form >";
  }
 
    Contenido += "< h1 > MISC < / h1 >";
    Contenido += "< form method = 'get' action = 'Reboot' > < input type = 'submit' value = 'Reboot' > < form >";
    Contenido += "< div >";
    Servidor.En("/", []() {
      Servidor.Enviar(200, "Texto / html", Contenido);
  });
 
    Servidor.No encontrado([]() {
      Servidor.Enviar(404, "Texto / texto plano", ¿Cómo diablos llegaste aquí?);
  });
 
    Servidor.En("/ configuración del Estado", []() {
      String Empleados temporales = Servidor.Enojado(SSID);
      Int Número = Empleados temporales.Toína();
      String Estasis = Red;[Número];
      String Alimentos básicos = Servidor.Enojado("Stapish");
      Si (Estasis.Longitud() > 0) {
        Servidor.Enviar(200, "Texto / texto plano", Configuración recibida.);
        Serialización.Printf("\ n \ n trying to connect to"% s "with password"% s "\ n", Estasis.Calle cu(), Alimentos básicos.Calle cu());
        Red inalámbrica.Persistente(Real);
        Red inalámbrica.Inicio(Estasis, Alimentos básicos);
        Testwifi();
    }
  });
 
    Servidor.En("/ configuración temporal", []() {
      String Empleados temporales = Servidor.Enojado(SSID);
      Int Número = Empleados temporales.Toína();
      String Estasis = Red;[Número];
      String Alimentos básicos = Servidor.Enojado("Stapish");
      Si (Estasis.Longitud() > 0) {
        Servidor.Enviar(200, "Texto / texto plano", Configuración recibida.);
        Serialización.Printf("\ n \ n trying to connect to"% s "with password"% s "\ n", Estasis.Calle cu(), Alimentos básicos.Calle cu());
        Red inalámbrica.Persistente(Falso);
        Red inalámbrica.Inicio(Estasis, Alimentos básicos);
        Testwifi();
    }
  });
 
    Servidor.En("/ configuración", []() {
      String Volar en el cielo = Servidor.Enojado("Apssid");
      String Appsk = Servidor.Enojado("Appsk");
      Si (Volar en el cielo.Longitud() > 0) {
        Servidor.Enviar(200, "Texto / texto plano", Configuración recibida.);
        Serialización.Printf("\ \ n \ \ nsetting AP credentials \ \ nssid:% s \ \ n Password:% s \", Volar en el cielo.Calle cu(), Appsk.Calle cu());
        Red inalámbrica.Persistente(Real);
        Red inalámbrica.AP suave(Volar en el cielo, Appsk);
    }
  });
 
    Servidor.En("/ configuración temporal", []() {
      String Volar en el cielo = Servidor.Enojado("Apssid");
      String Appsk = Servidor.Enojado("Appsk");
      Si (Volar en el cielo.Longitud() > 0) {
        Servidor.Enviar(200, "Texto / texto plano", Configuración recibida.);
        Serialización.Printf("\ \ n \ \ n setting Temporary AP credentials \ \ nssid:% s \ \ n Password:% s \", Volar en el cielo.Calle cu(), Appsk.Calle cu());
        Red inalámbrica.Persistente(Falso);
        Red inalámbrica.AP suave(Volar en el cielo, Appsk);
    }
  });
 
    Servidor.En("/ reinicio", []() {
      Servidor.Enviar(200, "Texto / texto plano", Reiniciando...);
      Retraso(5000);
      ESP.Reset();
  });
  }
 
  Vacío Configuración() {
    Serialización.Inicio(115200);
    Pinmode(2, Salida);
    Retraso(1000);
    Serialización.Printf("Extensor de rango de puertos");
    Serialización.Printf("Pila inicial:% d \ n", ESP.Getfreeheap());
 
  Si tiene netdump
    Captura de capa física = Dumping;
  #endif
 
    Red inalámbrica.Patrón de setas(Modo de capa física inalámbrica 11N); Establecer el tipo de radio a n
    Red inalámbrica.Patrón(AP inalámbrico);
    Red inalámbrica.Persistente(Falso);
    Red inalámbrica.Inicio(); Conectarse a la red usando credenciales almacenadas
    Testwifi();
    Red inalámbrica.Configuración del software(  Establecer direcciones IP, pasarelas y subredes
      Dirección IP(192, 168, 4, 1),
      Dirección IP(192, 168, 4, 1),
      Dirección IP(255, 255, 255, 0));
    Red inalámbrica.AP suave(Red inalámbrica.Caramelo suave(), Red inalámbrica.Software()); Crear AP usando credenciales almacenadas
 
    Serialización.Printf("Montón anterior:% d \ n", ESP.Getfreeheap());
    Ed University Correcto. = Pu estiramiento inicial(NAP, Puerto napt);
    Serialización.Printf(Inicialización IPU napt (% D,% d): Ret =% D (OK =% d) \ n, NAP, Puerto napt, (Int)Correcto., (Int)Vale);
    Si (Correcto. == Vale) {
      Correcto. = LP u tiempo habilitador(Soft AP IF, 1);
      Serialización.Printf("IP napt enable no (soft AP): Ret =% D (OK =% d) \ n", (Int)Correcto., (Int)Vale);
      Si (Correcto. == Vale) {
        Serialización.Printf("La red IFI «% s» con passowrd «% s» e IP «% s» está instalada ahora \ \ n", Red inalámbrica.Caramelo suave(), Red inalámbrica.Software().Calle cu(), Red inalámbrica.Softapi().Tostlin().Calle cu());
    }
  }
    Serialización.Printf("Montón inicializado por napt:% d \ n", ESP.Getfreeheap());
    Si (Correcto. != Vale) {
      Serialización.Printf(Falló la inicialización de napt);
  }
 
    Servidor();
  }
 
  #else
 
  Vacío Configuración() {
    Serialización.Inicio(115200);
    Serialización.Printf(Esta opción no está soportada en esta configuración);
  }
 
  #endif
 
  Vacío Ejecutar() {
    Servidor.Cliente manual();
    Si (Red inalámbrica.Posición() != Conexión WL) {
      Escritura digital(2, Baja);
      Retraso(1000);
      Escritura digital(2, Alto);
      Retraso(1000);
  }
    Tiempo estimado de despegue {
      Escritura digital(2, Alto);
  }
 }

Intermedio

El hecho de que finalmente haya invertido suficiente tiempo hasta ahora es peor que lo correcto.He medido la velocidad, y el resultado es s ólo cerca de 1 Mbit / S.Esto parece ser un problem a General, que también ha sido discutido por github y el Foro de expresión.Lamentablemente, no hay solución.

Esp32 o cómo funciona mejor

Según mi investigación, espressifs (fabricante de chips ESP) no planea utilizar esp32 como un extensor WiFi (router Nat WiFi).Por lo tanto, esp32 no tiene puertos para el boceto de muestra del extensor.Sin embargo, un proyecto es Martin ger en githubHa sido ampliamente utilizado.También en nuestro blog Redes WLAN en 4 nodos ESP 8266 (Moritz spranger) utiliza esta variante.

El proyecto también está disponible para ESP 8266.Debido a que también estoy buscando una solución adecuada, estoy aquí para introducir estas dos opciones.

Sitio github en ESP 8266

Sitio github de esp32


En Windows:

  • Se requiere una herramienta de descarga flash ESP.Puedes Aquí está.
  • Haga clic en el sitio github (ESP 8266 y esp32) en la esquina superior derecha del botón verde "Código" y descargue todo en formato zip.
  • Inicie la herramienta de descarga flash y seleccione esp8266 o esp32.
  • A continuación, establezca todo a la siguiente captura de pantalla.

ESP 8266:

Herramientas ESP

Esp32:

Herramientas ESP

  • Conectar ESP al ordenador a través de USB
  • Haga clic en el botón para seleccionar el archivo Bin. Los datos necesarios se pueden encontrar en zip descargado en el subdirectorio Firmware (ESP 8266) o build (esp32).
  • Introduzca la dirección de almacenamiento en la Caja junto a ella. En este caso, "0x00000" y "0x02000" (ESP 8266) o "0x1000", "0x10000" y "0x8000" (esp32). Estas son las direcciones iniciales en la memoria ESP del programa almacenado.
  • Si el puerto com no se muestra, es necesario instalar el controlador apropiado (que también debe ser reconocido aquí si ha programado ESP a través del IDE arduino). El número de Puerto com puede ser diferente.
  • Para ESP - 01, use "8mbit" en lugar de "32mbit" para indicar el tamaño de la memoria flash (ESP 8266).
  • Iniciar el proceso flash

ESP 8266:

Herramientas ESP

Esp32:

Herramientas ESP

Nota: en el IDE arduino, necesita poner esp32 en modo flash pulsando la tecla inicio. Mantenga pulsado y pulse el botón inicio.

ESP 8266:

Herramientas ESP

Esp32:

Herramientas ESP

Después de que el proceso flash tenga éxito, desconecte brevemente la conexión USB al ESP y reinicie a través de la conexión de enchufe de nuevo (tal vez simplemente reinicie).

En unos minutos, verá una nueva red WLAN llamada "myap" (ESP 8266) o "esp32" u Nat router (esp32).

Conecte a esta red e invoque esta dirección en su navegador de Internet http://192.168.4.1/ Usted debe ver la siguiente visión general:

ESP 8266:

Configuración del router esp8266

Esp32:

Configuración del router esp32

  • La configuración AP siempre ha sido los datos de acceso para esp32. Al principio, no se estableció ninguna contraseña aquí. Debe cambiar esta configuración. Utilizo la misma contraseña aquí que la establecida en el router de Internet (como se describe anteriormente).
  • La configuración sta es el acceso a los datos del router WLAN.
  • Si está utilizando un ordenador, puede hacer clic derecho en las propiedades de la red e introducir una contraseña copiando y pegando en el sitio web.Escriba una contraseña larga para ahorrar tiempo.Sólo tienes que hacerlo una vez.El ESP se ejecuta automáticamente.(A continuación, almacene la contraseña en memoria volátil. Si este es su problema de Seguridad, escriba la contraseña manualmente.)
  • ¡A ñadir una entrada de Seguridad a la wpa2 de esp8266!
  • También puede introducir la dirección IP estática de esp32.

Reiniciar ESP después de introducir todos los ajustes no hará daño.Por si no hay conexión.Recuerde que ha asignado (posiblemente) una contraseña para el punto de acceso ESP.Tienes que reconectarlo.

Bajo linux

En la página github de Martin ger, también se muestra cómo flash programas bajo linux en esp:

Necesita instalar esptool.py (para más detalles) Aquí está.).

Inicie el terminal e introduzca el siguiente comando:

 $PIP Instalar esptool

 

ESP 8266

Introduzca el siguiente comando en el terminal:

 $esptoolP Puerto Dev / ttyusb0 write flash F 4mb F 80 metros Modulación de frecuencia Dio 0x00000 firmware / 0x00000.bin 0x02000 firmware / 0x02000.bin"

Si no utiliza el esp8266 común, como nodemcu o D1 mini, cambie la siguiente entrada en la línea de comandos:

  • Esp - 01: FS 1mb
  • ESP 8285: FS 1mb Y FM dout

Esp32

¡Recuerde poner esp32 en modo flash (tecla de inicio)!

Introduzca el siguiente comando en el terminal:

 $esptoolP Chip Esp32 Puerto Dev / ttyusb0
 Porter 115200 Antes Reinicio predeterminado / u Después Reinicio duro escribir memoria flash
 Con Modo flash Dios Frecuencia de destello 40 metros Tamaño del flash Detección
 0x1000 build / bootloader / bootloader.bin
 0x10000 build / esp32 Wet router. Bin
 0x8000 build / partition - u example.bin

Si la ruta no es válida, esptool puede no ser introducido globalmente como una variable de ruta, o puede no estar en la carpeta principal del archivo de descarga. También puede especificar absolutamente la carpeta fuente especificando la ruta completa en lugar de "firmware" o "build".

Bajo Mac OS

Desafortunadamente, no puedo probarlo. Aquí está. La configuración de esptool debe ser la misma que la configuración bajo linux

Conclusión

Después de probar algunos bocetos del IDE de arduino, sólo Martins El trabajo es satisfactorio (gracias por su trabajo)Los pasos de la herramienta de descarga flash ESP pueden parecer un poco más complejos, pero sólo toma unos minutos más que el uso del IDE de arduino. Si comparo el tiempo pasado en la programación del IDE de arduino, la última versión debe ser más rápida.

El ESP 8266 se conecta a Internet a una velocidad de aproximadamente 5 Mbit / S, mientras que el esp32 se conecta a una velocidad de aproximadamente 16 Mbit / S. por supuesto, este último también se inicia más rápido. El ESP 8266 se desconecta ocasionalmente.

En términos de alcance, esto depende en gran medida del entorno en el que utilice el ESP como router Nat. En mi caso, se extiende hasta el jardín delantero y el router de Internet se encuentra detrás de la casa. A través de paredes gruesas o pisos, el alcance y la velocidad de transmisión se acortan.Entonces podrías caerte fuerte.

Si tiene otras opciones, o incluso puede crear bocetos de arduino, estaré encantado de compartirlas con nosotros.

Cómo alimentar el ESP a través de la batería como un punto caliente móvil puede: Este blog Toma.Este es sólo el último Consejo.

Diviértete con un extensor WiFi (barato).

Andreas Walter.

Az delivery Blog

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

34 comentarios

Joe

Joe

Ich habe mal einen weiteren D1 R32 programmiert und die RSSI-Werte der beiden Boards verglichen. Das neue Board liefert bedeutend bessere RSSI-Werte. Das erste Board hatte schon nach wenigen Metern Abstand zum Router Verbindungsabrisse. Mit dem neuen Board funktioniert die Verbindung auch durch Wände, über Stockwerke und auch nach draussen ohne Verbindungsabrisse. Und das Ganze mit einer alles andere als idealen Printantenne. Das vermeidet das leidige Problem mit einem Extender zwischen Sensorboard und Heimrouter. Offensichtlich gibt es erhebliche Qualitätsunterschiede bei diesen Modulen.
Ich habe im Übrigen auch verschiedene Tipps, die so im Netz kursieren ausprobiert. Hat aber alles nichts gebracht.
Vielleicht hilft diese Info Anderen weiter, bevor sie verzweifeln.
Schade ist, dass es das D1 R32-Board im Arduino-Format nicht mit einem Anschluß für eine externe Antenne gibt.
Gruß Joe.

Joe

Joe

Ich hab mir die Website von Reichelt auch mal angesehen. Die beschreiben praktisch die gleiche Vorgehensweise, wie Sie hier auf der Seite. Schade, dass das so nicht funktioniert. Ich wollte eigentlich vermeiden, einen kommerziellen WIFI-Extender einzusetzen. Vermutlich bleibt aber keine andere Möglichkeit.
Vielen Dank für die Info.
Gruß Joe

Andreas Wolter

Andreas Wolter

@Joe: das ist ein interessanter Fall. Ich hatte den NAT als Extender verwendet. Also hatte ich mich mit dem NAT verbunden, der seinerseits mit dem Router verbunden war.
Die Kette war also Router → NAT → PC.
Ihre Kette ist PC → Router → NAT → D1 R32

Wenn sich alle Geräte verbinden können, vermute ich, dass ein Forwarder nicht korrekt eingerichtet ist, der die Daten weiterleitet. Es könnte auch an den unterschiedlichen IP-Adressräumen liegen, aber genau das soll der NAT ja überbrücken.
Ich befürchte, dass ich nicht weiterhelfen kann, da es sich um ein geschlossenes System handelt, dass man von Github runterladen kann.
Sie könnten aber mal versuchen, im Router einen Forwarder einzurichten. Normalerweise ist der jedoch dafür gedacht, von außen über das Internet in das Intranet weiterzuleiten.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Joe

Joe

Hallo nochmal.
Ich habe die ESP32 Software von martin-ger und das Flash-Tool von der Expressif website unter Windows verwendet und die Daten entsprechend in die NAT-Config-Maske eingetragen. Es funktioniert alles so, wie auf der Website hier beschrieben, ausser dass ich mit dem PC via Fritzbox und NAT nicht auf das D1 R32 zugreifen kann. Der Zugriff funktioniert nur, wenn ich mich per WLAN direkt am NAT anmelde.
Gruß Joe

Andreas Wolter

Andreas Wolter

@Joe Kilo: welche der oben aufgeführten Varianten haben Sie verwendet?

Grüße,
Andreas Wolter
AZ-Delivery Blog

Joe Kilo

Joe Kilo

Hallo,
Habe den NAT Router nach obiger Anweisung auf einem ESP32 DEV-Kit V1 eingerichtet. Damit versuche ich ein D1 R32-Modul zu erreichen, dass die Globalstrahlung misst und ausserhalb der Reichweite der Fritzbox ist. Der NAT ist an der Fritzbox angemeldet, eingerichtet und auch erreichbar. Der D1 R32 kommuniziert mit der NAT und ich erreiche ihn auch direkt über die Fritzbox, wenn er angemeldet ist. Nur über den NAT ist er nicht zu erreichen.
Es sind meine ersten Versuche mit den ESP32-Modulen und weiß nicht, was da nicht passt. Hat jemand eine Idee?
Vielen Dank, Joe

Mark

Mark

Hi everyone. thank you for share.
I tested the router function through Arduino IDE using martin-ger github repository and it work fine. But… Im trying to connect the same ESP8266 (as router) to SinricPro o conrol one light at same time that NAT routing. Routing work fine but SinricPro client no connect, but oher ESP8266 connected to this ESP (on AP network) connect fine to cloud SinricPro. So… look like some NAT rule to itself (ESP8266 NAT Router) is missing or something like that. Do you know something about it? Im searching everywere but dont find nothing.

Konrad

Konrad

Hallo nochmal,

Bitte mein Kommentar von gestern löschen.. Ich habe das Problem gefunden. Man muss im Flash download tool den ESP32 (und nicht die c2, s2, c3…) Versionen anklicken und den Hinweis auf UART einfach übersehen, da man den USB danach noch eingeben kann.
Trotzdem Danke.

Übrigens hat die Verbindung mit der Garage nun perfekt geklappt mit dem ESP32.
Jetzt stellt sich bei mir nur die Frage wie ich über VPN auf den ESP32 extender komme. Aber das ist hier ja nicht der Punkt.

Grüße

Konrad

Konrad

Konrad

Konrad

Hallo,
Die ESP8266 Version mit Arduino IDE hat geklappt. Leider um 2 Meter zu kurz.
Habe dann versucht mit dem ESP32 und dem Flash download Tool Version 3.9.5 die oben genannten Daten von Github hochzuladen. Ich bekomme die Fehlermeldung:
2-sync fail und ich soll die Daten vom ESP32 mit irgendwelchen strapping pins prüfen. (Habe auch den boot / EN Knopf in unterschiedlichen Varianten gedrückt)
Ich verstehe gerade nur Bahnhof.
Kann mir da jemand helfen, was ich falsch mache?
Der ESP32 ist ein Produkt von AZ (ESP32 Dev Kit C V4)

DAnke schon mal im Voraus.

Konrad

Andreas Wolter

Andreas Wolter

@Richi: ich bezweifle, dass man daran etwas ändern kann. Es handelt sich um externe Projekte, von denen man nur fertige BINs herunterladen und flashen kann. Ich muss daher also auf die verlinkten Github-Seiten verweisen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Richi

Richi

Wie ist die WiFi-Power eingestellt und wie kann man diese ändern?

Andreas Wolter

Andreas Wolter

@Mr. T: Danke für den Hinweis. Das schaue ich mir an und werde es eventuell als Update hier in den Beitrag einfügen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Mr.T

Mr.T

Sehr schöner Beitrag, ich bin während des Auspobierens und der Recherche anscheinend auf ein Folgeprojekt für den ESP32 gestoßen:
https://github.com/dchristl/esp32_nat_router_extended
Das sieht hübscher aus, hat mehr Features und wird auch imho besser gepflegt, zumindest kommen regelmäßig Releases.

Matze

Matze

Also es tut mir wirklich leid. Ich habe alle kombinationen durchprobiert. Einmal mit nen ESP32-S und einmal mit nem ESP32 Wroover-D. Etweder fehlermeldunf 5 mit nem chip error oder fehlermeldung 2 Sync error. Zudem ist in der zip keine “partition_examble.bin” ebensowenig wie eine “esp32_nat_router.bin” vorhanden dafür eine Partition und eine firmware .bin. Ebenso lässt sich bei dem Flasher keine flashzize einstellen. Es tut mir wirklich leid für all die Mühe die ihr euch gemacht habt, aber es funktioniert nicht. Und ja, ich war im Flash mode.

Andreas Wolter

Andreas Wolter

@Ronald: dazu würde ich erst einmal auf diesen Beitrag verweisen:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp-als-w-lan-router

Theoretisch sollte es gehen, da man sich über das Captive Portal mit dem jeweiligen Access Point verbindet.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Ronald

Ronald

hallo, die Sache mit dem NAT-Router funktioniert einwandfrei. ist es damit auch möglich mehrere Router hintereinander zu schalten um grössere Entfernung (bei sehr dicken Wänden) zu erreichen ? meiner Vorstellung nach musste dann Router 1 mit der Cam 1 bei Router 2 angemeldet sein und Router 2 an Router 3 an welchen ich dann meinen Monitor für die Cam ( an Router 1 ) sehen kann ?… und auch noch Cam an Router 2.. etc.. ??sind meine Vorstellungen sinnvoll und möglich ?
Eine Cam und ein Router geht jedenfalls sehr gut

Andreas Wolter

Andreas Wolter

@irgendjemand: ich habe versucht, das im Entwicklerrepository zu recherchieren. Ich konnte keine konkrete Lösung finden. Es scheint allerdings generell Probleme mit VOIP in Verbindung mit NAT Routern zu geben: https://www.voip-information.de/nat-und-voip.php

irgendjemand

irgendjemand

Moin,
ich wollte den Verstärker für meine VoIP-ESP Klingel benutzten… geht nur nicht :(. Kann man über einen ESP Verstärker kein VoIP nutzten oder mache ich etwas falsch, weil ohne den Verstärker geht es.

Andreas Wolter

Andreas Wolter

@Tino: mein Kollege hat die Repeater Firmware auf der ESP32 Cam getestet (siehe Kommentar weiter unten). In die Firmware kann man leider nicht so einfach weiteren Code hineinschreiben. Sie ist wirklich nur als Repeater gedacht.

Leider gibt es keine brauchbaren Codes für den Repeater, den man über die Arduino IDE programmiert. Dann könnte man da etwas zusammenfügen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Tino

Tino

Hi.. ich bin Anfänger..
Ist es möglich das Board gleichzeitig mit dem Kamera Code und gleichzeitig dem WiFi repeater Code (mit Kamera Modul) zu betreiben.. also zwei Fliegen mit einer Klappe.. also die Integration von zwei Scripten. wäre halt effizient.. ???!!

Andreas Wolter

Andreas Wolter

@keinProfi: mein Kollege Gerald Lechner hat das für Sie getestet:

Ich habe die Firmware am ESP32-Cam getestet. Hat problemlos funktioniert. Ein Seed-Test direkt neben dem ESP32 ergab Download 5Mbit/s upload 400kbit/s. In einem anderen Raum etwa 15m entfernt vom ESP32 mit Wänden dazwischen Download 250kbit/s Upload 70kbit/s.

KeinProfi

KeinProfi

Kann das ganze eigentlich auch für das esp 32 ai thinker board funktionieren (esp32 cam)?

Andreas Wolter

Andreas Wolter

@GeSe: da es ein fertiges BIN ist, dass auf den MC geladen wird, kann man das selbst leider nicht auf dem MC anzeigen lassen (also eine Liste mit connected clients).
So bleibt erst einmal nur die Möglichkeit, auf den Geräten selbst die IP anzuzeigen. Auf dem Smartphone müsste das über die WLAN-Einstellungn gehen. Im Betriebssystem geht das entweder in der Taskleiste über das WLAN-Symbol in den Eigenschaften oder in der Commandozeile mit dem Befehl ifconfig (Linux) oder ipconfig (Windows).

GeSe

GeSe

Tolle Anleitung, mein erster repeater ist eingerichtet und alles hat mit wenigen Versuchen funktioniert.
Gibt es eine Möglichkeit herauszufinden, welche IP Adresse die mit dem repeater verbundenen Geräte erhalten haben?
Gruß Gerd

Robert

Robert

@ Andreas Wolter

Danke für die Antwort.
Noch etwas genauer zu meiner Config.
Ich benutze einen ESP32 und hab es nach eurer Anleitung durchgeführt.

Sollte es da also mit %5F funktionieren, bis jetzt hatte ich _ und %5f versucht, leider kein Erfolg. Werde es nun mit %5F demnächst versuchen.

Danke!

Andreas Wolter

Andreas Wolter

@Robert:
Das hängt davon ab, welchen Repeater (Arduino Sketch oder Binary) und auf welchem ESP Sie es verwenden. Sie können versuchen, den HTML Platzhalter zu setzen: “_” (ohne Anführungszeichen). Eine komplette Liste finden Sie hier: https://www.nationalfinder.com/html/char-asc.htm
Ansonsten müsste Ihre Methode mit %b eigentlich %2B sein, denn das ist der Hex Code für ein Plus. Dementsprechend müsste %5F den Unterstrich ersetzen.

Grüße,
Andreas Wolter

Robert

Robert

Eine super Sache der repeater.

Ein Problem hab ich aber, in der SSID ist das underline _ Zeichen vorhanden. Das + muss mit %b ersetz werden, womit das _?
Ich finde leider nichts. Mit %5f wird die SSID nicht erkannt.

HaJo

HaJo

Soeben habe ich einen ESP32 Devkit C V2 geflasht. Hat alles von Anfang an alles, wie erwartet, funktioniert. Sogar das Einbinden in die Fritzbox war ein Kinderspiel. Vielleicht liegen die Probleme (s. u.) in der Architektur des “D1 Mini NodeMcu mit ESP8266-12F WLAN Modul” sowie der Programmierung dieses µP. Das zu prüfen bin ich noch nicht in der Lage (Anfänger, obwohl pensioniert ;-) ). Aber ich habe nun für meinen Garten (2000 m²) einen (oder mehrere) Router, so dass ich mein neues Gewächshaus steuern kann. Übrigens war ich erstaunt über die Wlan-Reichweite des D1 Mini NodeMCU. Auf der Hälfte des Weges streiken unsere ( und die unserer Enkel und Kinder ebenso) Smartphones (WLAN) während der D1 Mini am Ende des Gartens (ca. 60 m) noch mit einer Geschwindigkeit von 2 Mbit per WLAN ohne einen Router sendete.

HaJo

HaJo

Ich muss mich für den Kommentar vom 30.09.2021 entschuldigen. In dem Stress hatte ich vor dem beschriebenen Flashen vergessen, vor dem Flashen den Erase-Button zu drücken. Somit war natürlich beim Flashen der 0×02000-bin und der 0×82000-bin noch die 0×00000-bin vorhanden. Werden nur die beiden ersten Bins nach Erase geflasht, funktioniert die Configuration nicht!
Obwohl ich einmalig meinen ESP8266-Natrouter zum Laufen gebracht habe, war der Vorgang nicht reproduzierbar, da auf der Configurationsseite es mir nicht gelang, erneut die Daten dauerhaft einzutragen. Um die beiden D1 Mini NodeMcu mit ESP8266-12F WLAN Module zu testen, ob sie fehlerhaft sind, habe ich diese mit ESPEasy geflasht. Zunächst hatte ich ebenfalls keinen Erfolg (getestet mit einer Version aus 2019). Nach dem ich die aktuelle Version vom 15.10.2021 geflasht hatte, lief alles wie am Schnürchen. Ich habe zwar jetzt keinen Router :-(( dafür aber einen AP, den meine Fritzbox nach der Configuration sofort erkannte und mit dem ich nun wunderbar nach allen Regeln der Kunst spielen kann. Wer ESPEasy selber ausprobieren möchte, empfehle ich:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp-easy
und ff. Die aktuelle Zip-Datei kann unter:
https://github.com/letscontrolit/ESPEasy/releases/tag/mega-20211005
heruntergeladen werden.
Nochmals Entschuldigung für meinem Kommentar vom 30.09.2021. Aber ich war so happy, dass es nun – leider nur einmalig – funktionierte, dass ich es an der notwendigen Sorgfalt fehlen ließ.

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.

Deja un comentario

Todos los comentarios son moderados antes de ser publicados