|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Tutorial del Internet de las Cosas con el ESP8266
Juan Antonio Villalpando

Volver al índice del tutorial

____________________________

305.- ESP8266-12E D1 R2. Servidor web. Página web.

_________________________________
6.- Servidor Web. Muestra una página web.

- Muestra una página web en un navegador.

- Los Botones no realizan ninguna función en este ejemplo.

- Al pulsar los Botones mostrará en la dirección del navegador una palabra o letra, pero no tendrá ninguna otra función.

- Observa cómo la imagen está obtenida de otro servidor (hotlink).

pagina_web.ino

// Juan A. Villalpando.
// KIO4.COM
// Saldrá una página web con cuatro botones.
// Los botones no hacen ejecutan nada.
#include <ESP8266WiFi.h>
 
const char* ssid = "Nombre_de_tu_Red_WiFi";
const char* password = "Clave_WiFi";

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
 
// Conecta a la red wifi.
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Conectado con WiFi.");
 
  // Inicio del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado.");
 
  // Esta es la IP
  Serial.print("Esta es la IP para conectar: ");
  Serial.print("http://");
  Serial.println(WiFi.localIP());
}
 
void loop() {
  // Consulta si se ha conectado algún cliente.
  WiFiClient client = server.available();
  if (!client) { // Si no hay cliente...
    return;      // No siga leyendo el código.
  }
  
  Serial.print("Nuevo cliente: ");
  Serial.println(client.remoteIP());
  
  // Espera hasta que el cliente envíe datos.
  while(!client.available()){ delay(1); }

  String req = client.readStringUntil('\r');
  Serial.println(req); // Datos enviados por cliente.

  // Página WEB. ///////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Importante.
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><meta charset=utf-8></head>");
  client.println("<body><center><font face='Arial'>");
  client.println("<h1>Servidor web con ESP8266.</h1>");
  client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>");
  client.println("<h3>Página web.</h3>");
  client.println("<br><br>");
  client.println("<img src='http://iesromerovargas.com/kio42.png'><br>");
  client.println("<a href='juan'><button>Juan </button></a>");
  client.println("<a href='antonio'><button>Antonio </button></a>"); 
  client.println("<a href='a'><button>Envía la letra a</button></a>");
  client.println("<a href='b'><button>Envía la letra b</button></a>"); 
  client.println("</font></center></body></html>");

  Serial.print("Cliente desconectado: ");
  Serial.println(client.remoteIP());
  client.flush();
  client.stop();
}  	

- Si no te funciona el código anterior, prueba anular las dos últimas líneas de flush() y stop()


	  // client.flush(); 
	  // client.stop();

___________________________________
- Este sería el código HTML de la página web:

pagina_web.htm

HTTP/1.1 200 OK
Content-Type: text/html

<!DOCTYPE HTML>
<html>
<head><meta charset=utf-8></head>
<body>
<center>
<font face='Arial'>
<h1>Servidor web con ESP8266.</h1>
<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>
<h3>Página web.</h3>
<br><br>
<img src='http://iesromerovargas.com/kio42.png'><br>
<a href='juan'><button>Juan </button></a>
<a href='antonio'><button>Antonio </button></a>
<a href='a'><button>Envía la letra a</button></a>
<a href='b'><button>Envía la letra b</button></a>
</font>
</center>
</body>
</html>
			

____________________________________
- Comentarios.

- En el Monitor Serie saldrá la IP del servidor.

- Cada vez que conecte un usuario observaremos en el Monitor Serie:

Nuevo cliente: 192.168.1.2
GET /juan HTTP/1.1
Cliente desconectado: 192.168.1.2

- Si la última línea no es "Cliente desconectado ", se ha bloqueado el servidor.

- Esta línea la he puesto para distinguir cuando solo envía la IP de cuando envía la IP y luego datos. Si la elimina, deberá seguir funcionando.

 
	  // Espera hasta que el cliente envíe datos. 
        while(!client.available()){ delay(1); }

____________________
- favicon.ico

- Algunos navegadores como el Chrome, realiza dos veces la petición de favicon.ico, por eso los verás en el Monitor Serie. Con el Firefox no ocurrirá.

GET /favicon.ico HTTP/1.1

- Podemos poner un favicon.ico de esta manera:

...
client.println("<head><meta charset=utf-8>");
client.println("<link rel='shortcut icon' href='http://tudominio.com/imagenes/favicon.ico'></head>");
...

- Otra manera de poner el favicon.ico es crear la imagen directamente con bytes.

...
client.println("<head><meta charset=utf-8>");
client.println("<link rel='icon' href='data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAS0lEQVR42s2SMQ4AIAjE+P+ncSYdasgNXMJgcyIIlVKPIKdvioAXyWBeJmVpqRZKWtj9QWAKZyWll50b8IcL9JUeQF50n28ckyb0ADG8RLwp05YBAAAAAElFTkSuQmCC' type='image/x-png' /></head>");

...

- Tomamos un icono y lo subimos a la siguiente web:

- Generador de bytes de base64 de un icono: https://www.base64-image.de/

- Con el favicon.ico se bloquea mucho el servidor.

- Fíjate en el uso de la comilla simple y la comilla doble.

____________________________________
- Propuesta.

- Modifica el código para el texto contenido en los Botones (y los Botones) sea de mayor tamaño.

____________________________________

- A veces el Chrome se bloquea, podemos borrar el contenido, entrando en "Inspeccionar" desde la página bloqueda y pulsando Clear:

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información