microWebSrv2
El microcontrolador ESP32 utilizado como servidor, tiene la capacidad de recibir peticiones de los clientes, ejecutar las acciones oportunas en el backend y devolver una respuesta. Es por ese motivo, por el que se convierte en una de las formas más prácticas para gestionar cualquier proyecto.
Para construir un servidor robusto y eficiente es necesaria una buena librería, que de respuesta de forma sencilla e intuitiva a las necesidades del programador y optimice los recursos del microcontrolador. Aquí es donde entra en juego microWebSrv2, al cumplir estos requisitos. Sus puntos más fuertes son los siguientes:
- Arquitectura asíncrona, que permite procesar solicitudes concurrentes muy rápido.
- Admite cualquier tipo de solicitud como GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH, …
- Puede manejar solicitudes de AjAX para interactuar rápidamente con una aplicación web.
- Envía y recibe objetos JSON y permite usarlos para crear un estilo API RESTful.
- Permite utilizar módulos adicionales para ampliar las funcionalidades del servidor. Dispone del módulo WebSockets para intercambiar mensajes en tiempo real a traves de WS y el módulo PyhtmlTemplate para crear páginas .pyhtml.
- Aumenta la velocidad de carga, al permitir automáticamente a los clientes almacenar en caché los archivos estáticos.
- Reduce la cantidad de conexiones persistentes por cliente con el modo de mantenimiento de soporte –keep-alive-.
- Puede responder a una solicitud de archivos con multitud de extensiones (.jpg, .txt, .pdf, .rar, .zip, .css, js…), como contenido sobre la marcha -on the fly- o como archivo adjunto –attachment– para descargar.
CARGA DE LA LIBRERÍA Y DE LOS EJEMPLOS EN EL MICROCONTROLADOR
La librería microWebSrv2 está disponible en GitHub, junto con su documentación y ejemplos de uso. El fichero MicroWebSrv2-master.zip, con la última versión, se puede descargar desde el enlace.
Una vez descomprimido se podrá ver que incluye (entre otros) los directorios /MicroWebSrv2, /www y el fichero main.py:
- El directorio /MicroWebSrv2 contiene la librería.
- El directorio /www y el fichero main.py contienen los ejemplos de uso.
Para utilizar la librería habrá que copiarla al directorio /lib del microcontrolador (es el directorio en el que el intérprete buscará –por defecto– los módulos y librerías complementarios para poder utilizarlos).
Si no existe el directorio /lib (no aparece en el apartado Micropython device de la ventana Archivos), se puede crear desde Thonny haciendo clic sobre ese apartado, con el botón derecho del ratón y después haciendo clic en Nuevo directorio… Por último en la ventana de New directory se deberá escribir lib y hacer clic en OK.
La copia de la librería se realizará siguiendo estos pasos:
- Se hará doble clic sobre el directorio /lib para entrar dentro de él (en el apartado Micropython device de la ventana Archivos).
- En el apartado Este computador de la ventana Archivos se buscará el directorio recién descomprimido /MicroWebSrv2, desplazándose por el árbol.
- Sobre el nombre del directorio /MicroWebSrv2 se hará clic con el botón derecho y clic en Subir a /lib.
El directorio /www, que contiene las páginas Web de los ejemplos de uso, se copiará en el directorio raíz siguiendo estos pasos:
- Se hará doble clic sobre Micropython device (en el apartado Micropython device de la ventana Archivos), para volver al directorio raíz.
- En el apartado Este computador de la ventana Archivos se buscará el directorio /www.
- Sobre el nombre del directorio /www se hará clic con el botón derecho y clic en Subir a /.
El fichero main.py, que es el fichero de Python para gestionar los ejemplos de uso, se copiará en el directorio raíz siguiendo los mismos pasos.
MODIFICACIONES A REALIZAR EN main.py PARA PODER UTILIZAR LOS EJEMPLOS
Una vez cargada la librería y los ejemplos en el microcontrolador para utilizarlos será necesario hacer unas pequeñas modificaciones en el fichero main.py.
Para abrirlo bastará hacer doble click sobre él, en el apartado Micropython device de la ventana Archivos.
CONEXIÓN WIFI
Para que ESP32 (servidor) y los clientes puedan conectarse, es necesario que sea en el ámbito de una red WiFi. Las opciones posibles son:
- Que el ESP32 se conecte como Station (Estación) a la red WiFi a través de un Access Point (Punto de Acceso) , al que también se conecten los clientes.
- Que el ESP32 genere una red WiFi funcionando como Access Point, al que se conectan los clientes.
- Que el ESP32 establezca una conexión mixta: Station. + Acces Point
La primera de las tres opciones es la más sencilla y práctica. A continuación se escribe el código que se debe añadir al principio del fichero main.py para establecer la conexión con el Access Point.
# FUNCIÓN PARA ESTABLECER LA CONEXIÓN WIFI (STATION) def do_connect(SSID, PASSWORD): import network # importa el módulo network global sta_if sta_if = network.WLAN(network.STA_IF) # instancia el objeto -sta_if- para realizar la conexión en modo STA if not sta_if.isconnected(): # si no existe conexión... sta_if.active(True) # activa el interfaz STA del ESP32 sta_if.connect(SSID, PASSWORD) # inicia la conexión con el AP print('Conectando a la red', SSID +"...") while not sta_if.isconnected(): # ...si no se ha establecido la conexión... pass # ...repite el bucle... print('Configuración de red (IP/netmask/gw/DNS):', sta_if.ifconfig()) do_connect("<nombre_de_red>","<clave_de_red>") # PONER nombre/clave_de_red RED PARA CONECTAR
El aspecto del fichero una vez copiado será el siguiente:
ACCESO A LAS PÁGINAS WEB (directorio /www)
Siempre es necesario indicar la carpeta en la que se localizan los ficheros Web a utilizar (salvo que se localicen en el directorio raíz del microcontrolador). Se hará modificando la propiedad RootPath del objeto en el que se instancia el servidor (mws2).
En este caso, al localizarse en la carpeta /www, se debe añadir la línea mws2.RootPath = «/www» después de la línea mws2 = MicroWebSrv2.
PUESTA EN FUNCIONAMIENTO
Una vez realizados los cambios, el script se puede ejecutar con garantía de funcionamiento.
Para acceder a los ejemplos se debe escribir la dirección IP que le asigna el router al microcontrolador en un navegador (Google Chrome, Mozzilla, Microsoft Edge, etc.).
La dirección se puede localizar en la ventana del intérprete (Shell).
Así será como se vea, una página Web en la que se muestran ejemplos de uso de MicroWebSrv2.
2 Comments
Leave your reply.