Introducción a la librería WiFiManager.

Para la familia ESP.

INTRODUCCIÓN.

En el mundo del IoT que utiliza los populares ESP8266 disponen de WiFi y debe saber que, para conectar una placa como ESP8266 o NodeMCU a una red WiFi, tenemos que empezar por configurar en el programa o código, un cierto nivel de seguridad los parámetros de red SSID y el Password de la red a la que conectarnos. En otras palabras, en el setup(), configuramos el ESP8266 como cliente WiFi en modo estación (STA), iniciando la conexión a la que le pasamos el nombre de nuestra red y la contraseña, veamos.

Verificamos y cargamos el programa en el ESP, y si todo es correcto el proyecto queda en funcionamiento. Este proceso a la larga presenta un inconveniente ¿qué sucede si uno de estos dos parámetros cambia? o sea, si nos vamos a otro lugar con otra red WiFi. En cualquiera de estos casos nos saltará un error que nos impide la normal conexión.

Entonces, tenemos que modificar y cargar de nuevo el programa, cada vez que cambiamos de red WiFi a la que se ha de conectar, repetiremos la operación, no es que sea un problema insalvable. Aunque sería más práctico no tener que cambiar el programa y volverlo a cargar.

También yo he realizado algunas pruebas conectando el ESP8266 a una red local utilizando credenciales codificadas con métodos que almacenan el SSID y el Password de una red, pero no es muy conveniente ni práctico para los proyectos acabados. Sería mejor poder elegir la red a usar en tiempo de ejecución. Eso es exactamente lo que nos aporta la librería WifiManager y otras similares que por el momento no veremos aquí.

Alguien dijo: Por lo general, uno debe programar la lógica de su sistema, implementar la comunicación, implementar el control y crear la infraestructura para ejecutar todo esto. Aunque hay sistemas que resuelven algunos de estos problemas, ya sea de código abierto o comercial, son complejos de programar.

En todas las compañías que ofertan estas posibilidades, usted siempre tiene que registrarse, para lo cual tiene que ingresar datos relevantes sobre usted. Hay una opción que no necesita depender de estas empresas, con crear un AP (Punto de Acceso) y así poder conectarse a la red.

Esta es una razón más que interesante para utilizar la librería WifiManager.

LIBRERÍA WIFIMANAGER.

Efectivamente, ese mismo problema lo había padecido entre otros, un tal Tzapu, al que se le ocurrió crear una librería que sirve precisamente para resolver el problema, se trata de una librería que nos permite dotar a los dispositivos del IoT de algo más de libertad, las pruebas de Tzapu ya eran registradas en 2015.

La librería WiFiManager es una librería de código abierto que permite configurar los parámetros de una red WiFi desde un móvil en un ESP8266, de forma rápida sin cargar un nuevo código y además tiene otras funcionalidades. Esta librería, no necesitamos descargarla ya viene integrada en el Gestor de bibliotecas de Arduino.


Fig. 1 Gestor de librerías WiFiManager.

Como de costumbre, analicemos un caso. Cuando nos llevamos el proyecto basado en el ESP8266 a otro sitio donde hay otra red WiFi, como se ha dicho, tenemos que editar el código y modificar el SSID y el Password de la nueva red WiFi. En esta ocasión considero que usted tiene conocimientos suficientes de los entornos Arduino y ESP8266. Si lo cree necesario puede leer el contenido de la documentación de ESP8266 Arduino Core, para salir de dudas.


Fig. 2 Pinout del nodeMCU-ESP12

Librerías que se debe incluir en el boceto:

EL CÓDIGO

La autoría del código pertenece a Fernando Koyanagi, al que saludo y agradezco su trabajo desde esta página.

Abra el monitor serial y debe obtener un resultado similar al mostrado en la figura.


Fig. 3 Monitor AutoConnect

Cuando se realiza una conexión exitosa, el ESP8266 recuerda las credenciales e intenta conectarse a la misma red la próxima vez. Si no puede conectarse, usa el modo AP para mostrar la página de conexión nuevamente.

WifiManager usa el modo de punto de acceso y el modo de estación juntos. Utiliza el modo AP para la página de conexión que está disponible bajo la red propia del ESP8266 y en una dirección IP conocida (192.168.4.1) y luego usa el modo STA para conectarse a la red local.

Cuando está conectado a Internet y cuando está conectado a la red del dispositivo ESP, cualquier solicitud a cualquier nombre de dominio se redirige a este nombre de dominio en el dispositivo. La dirección IP 192.168.1.4 también funciona pero no existe en Internet.

La librería WiFiManager permite que el ESP8266 se conecte a la red local WiFi preconfigurada. En el caso de que no pueda realizar la conexión guardada previamente, pasa al modo de punto de acceso (AP), activa un portal cautivo, un servidor DNS y un servidor web (IP predeterminado 192.168.4.1). Entonces, desde cualquier dispositivo con WiFi, se conecta a ese punto de acceso. La siguiente es una vista desde un móvil.


Fig. 4 Portal cautivo.

Así, mediante el portal cautivo y el servidor DNS, se obtendrá un tipo de ventana emergente como la mostrada, que nos permite elegir y configurar una red. Pulse sobre el botón Configure WiFi , se mostrarán las redes a su alcance, elija una e ingrese la contraseña de la red elegida y haga clic en guardar, sin necesidad de editar una sola línea de código. Si tiene éxito, le devuelve el control a su aplicación, si no, vuelva a conectarse a AP y reconfigure.


Fig. 5 Listado de redes.

Para volver a conectarse, tiene la opción de conectar un pulsador con una resistencia como se muestra en la figura 3, al pulsar vuelve a iniciarse en modo AP. Esta es una de las utilidades de esta librería, si prevemos que nuestro proyecto puede utilizar diferentes redes WiFi.


Fig. 6 Reconectar a AP.

Recapitulando: Con nuestro ESP8266 WiFi usando la librería WiFiManager, se crea un punto de acceso (AP), después mediante el portal cautivo y el servidor DNS, a través del IP predeterminado 192.168.4.1 nos mostrará una ventana emergente AutoConnectAP, así, obtenemos las redes locales accesibles, seleccionamos una y una vez configurada la guardamos, para en otra ocasión poder conectarnos a ella.

A continuación el ESP8266 se reiniciará e intentará conectarse a la red, funcionando en modo EST como estación y ya no como AP punto de acceso. Para volver iniciar en modo AP sólo, a través del botón de la figura anterior.

El ESP se inicia e intenta conectarse a un Punto de acceso guardado previamente, si esto no tiene éxito (o si no se guardó ninguna red anterior), el ESP pasa al modo de Punto de acceso y hace funcionar un DNS y un Servidor web (ip predeterminado 192.168.4.1). Ahora, utilizando cualquier dispositivo (computadora, teléfono, tableta) habilitado para WiFi con un navegador, conéctese al punto de acceso recién creado. Mediante el portal cautivo y al servidor DNS, obtendrá una ventana emergente u obtendrá cualquier dominio al que intente acceder redirigido al portal de configuración.

Observese que los ESP8266 y su familia no disponen de un hardware de seguridad que encripte la comunicación, sin embargo la librería WIFI incluye funciones de encriptación por software, por lo tanto podemos acceder de forma similar a los sitios HTTPS, con el inconveniente de ocupar sobre 20kB de memoria, lo que debe tenerse en cuenta.

FILTRO DE REDES.

Puede filtrar redes según la calidad de la señal y mostrar/ocultar redes duplicadas. Para filtrar redes de baja calidad de señal, puede indicar a WiFiManager que no muestre redes por debajo de un % de calidad arbitrario;

Con lo que no mostrará redes con un 10% de calidad de señal.

Además, puede eliminar o mostrar redes duplicadas (la opción predeterminada es eliminar). Utilice esta función para mostrar (u ocultar) todas las redes.

Cuando se realiza una conexión exitosa, el ESP8266 recuerda las credenciales e intenta conectarse a la misma red la próxima vez. Si no puede conectarse, usa el modo AP para mostrar la página de conexión nuevamente.

WifiManager usa el modo de punto de acceso y el modo de estación juntos. Utiliza el modo AP para la página de conexión que está disponible bajo la red propia del ESP8266 y en una dirección IP conocida (192.168.4.1) y luego usa el modo STA para conectarse a la red local.

SOLUCIÓN DE ALGUNOS PROBLEMAS.

Ante errores de compilación, la mayoría de las veces, es posible que deba instalar una versión más reciente o anterior del núcleo ESP8266 para Arduino, en mi experiencia desinstalé la versión 2.5.0 beta y volví a instalar la versión 2.4.1 y pude compilar sin problemas.

Si se conecta al punto de acceso de configuración creado pero el portal de configuración no se muestra, simplemente abra un navegador y escriba la IP del portal web, de forma predeterminada 192.168.4.1.

Personalmente he utilizado el siguiente código y se que funciona bien. Pruebe usted si consigue poner en servicio esta librería. Copie y guarde este código con un nombre, compile y suba a su ESP y compruebe su funcionalidad.

Si su boceto no se compila y devuelve un error similar a este:

Lo más probable es que esté utilizando Firmware Beta 2.5.0 para el ESP8266. Esta actualización rompe la compatibilidad con ArduinoHttpClient(que es utilizada por Adafruit IO, actualmente no es compatible con este firmware beta).

Para que funcione, bajaremos el firmware del ESP8266 a una versión estable, vaya a: Herramientas/ Tarjetas/ Administrador de tarjetas y seleccione la versión 2.4.2 de ESP8266 by ESP8266 Community, esto es así, en estos momentos.

 

Referencias.
  • http://pdacontroles.com/introduccion-libreria-wifimanager/
  • https://www.youtube.com/watch?v=8_R7nzvuVZI
  • https://texolab.net/2018/10/24/wifi-manager-para-esp8266/
  • https://programarfacil.com/esp8266/wifimanager-configura-wifi-esp8266/

Esto es todo, por este simple tutorial.

2 thoughts on “Introducción a la librería WiFiManager.”

  1. Hola,
    Muy buen articulo.
    Tambien sirve para el ESP32.
    En cambio me gustaria saber como modificar la ventana del punto de accesso. Me gustaria ponerla en Español y no en inglés.

    Como se puede hacer?

    Gracias por el consejo!!

    Antonio

    1. Hola Antonio PEREZ.
      En principio no hay ningún problema para poner en español la ventana del punto de acceso, eso sí, es un trabajo un tanto tedioso. Te recomiendo que hagas una copia de la librería oficial y a partir de eso, trata de modificar los segmentos de texto que se encuentran trecomillados por todo el código, por ej.

      DEBUG_WM(F("Connecting wifi with new parameters..."));
      DEBUG_WM(F("Conectar nuevos parámetros wifi"));

      En último lugar, si tienes algún problemas reemplazas la librería en cuestión y ‘arreglado’

      Saludos y cuidate.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.