Ya sabemos como usar un cliente WiFi para conectarnos a Internet y poder recoger datos o ejecutar acciones sobre servidores con el ESP8266. Veamos ahora cómo configurar el ESP8266 como un servidor web y poder manejarlo remotamente.
Para ello veamos el ejemplo WiFiWebServer que podemos encontrar en Archivos – Ejemplos – ESP8266WiFi – WiFiWebServer.
Este ejemplo muestra cómo hacer un servidor web en el ESP8266 y mostrar una web una vez el ESP8266 se ha conectado a una red WiFi de un punto de acceso.
La clase server crea servidores que proporcionan información a los clientes conectados:
- Clase server: http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/server-class.html
- Ejemplos clase server http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/server-examples.html
Una vez conectado el ESP8266 a una wifi se inicia el servidor con server.begin(); y para saber la IP asignada uso la instrucción Serial.println(WiFi.localIP());
Dentro de loop, para saber cuando un cliente se conecta al servidor iniciado uso la instrucción WiFiClient client = server.available(); https://www.arduino.cc/en/Reference/WiFiServerAvailable y en la variable client corresponde al cliente conectado a nuestro servidor.
Una vez se ha conectado un cliente uso la instrucción String req = client.readStringUntil(‘\r’); donde guardo en req lo que manda el cliente que en este caso es el navegador que se ha conectado a nuestro ESP8266.
En función de la petición hecha, el ESP8266 enciende o apaga el led colocado en el pin 2.
- http://server_ip/gpio/0 apaga GPIO2
- http://server_ip/gpio/1 enciende GPIO2
Una vez ejecutada la acción solicitada manda la respuesta con una página web simple:
HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE HTML>
<html>
GPIO is now on
</html>
Ejercicio Propuesto: modifica el ejemplo para que encienda y apague el led integrado en la placa que es LED_BUILTIN y si sabes un poco de html, hacerlo con un botón mostrado por el servidor.
En este caso la web mostrada por el ESP8266 es:
<!DOCTYPE html>
<html>
<body>
<p>LED APAGADO</p>
<form action=»» method=»post»>
<input type=»submit» value=»Enciende Led» />
</form>
</body>
</html>
Cuando se solicita la web se hace mediante GET y cuando se pulsa el botón se hace mediante POST, de esta forma se diferencian las acciones. También se hace una función muestraWeb() encarga de mandar la web cuando se solicite.
Pingback: Saber Más Iniciación Arduino 2019 | Aprendiendo Arduino
Pingback: Saber Más Gestión de Proyectos con Arduino | Aprendiendo Arduino