Tutorial del Internet de las Cosas y Bluetooth con el ESP8266
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
315.- ESP8266 D1 R2. Cliente de un servidor web instalado en el ordenador.
- Vamos a instalar un pequeñísimo servidor web en nuestro ordenador.
- Este servidor tendrá una página web llamada dato.htm su contenido será la frase: Hola amigo.
- El Wemos entrará en esa página web y mostrará en el Monitor Serie esa frase.
- [Más adelante cuando veamos las pantalla LCD, mostrará la frase en la pantalla LCD]
_____________________________________________________________
1.- Instalación de un Servidor web en nuestro ordenador.
- Vamos a esta página:
7B.- Vamos a instalar un pequeño servidor web mediante un archivo de 146 kB.
- Bajamos el archivo: shttp3.exe
- Lo ejecutamos, se creará en nuestro ordenador la siguiente carpeta: C:\shttps
- Entramos en esa carpeta y ejecutamos
http.exe
- Vamos a C:\shttps\www y creamos un archivo llamado: dato.htm con este contenido: Hola amigo.
- Si ahora vamos a un navegador web y escribimos la IP del ordenador, por ejemplo: 192.168.1.2/dato.htm
- Saldrá esa frase.
_____________________________________________________________
2.- El ESP8266 actúa como cliente y lee la página dato.htm del Servidor del ordenador.
- Ahora la tarjeta del ESP8266 entrará en el servidor web del ordenador, leerá el archivo dato.htm y mostrará su contenido en el Monitor Serie.
- En este caso asignaremos a nuestra tarjeta una IP estática.
- Tanto el servidor web del ordenador como nuestra tarjeta con el ESP8266 deben estar en la misma red local.
cliente.ino |
// Juan Antonio Villalpando
// kio4.com
// Cliente web.
#include <ESP8266WiFi.h>
const char* ssid = "Nombre_de_tu_red_WiFi";
const char* password = "Clave_WiFi";
const char* host = "192.168.1.2"; // IP o dominio del servidor web.
void setup()
{
Serial.begin(115200);
delay(10);
// 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.");
// Esta es tu IP
Serial.print("Esta es tu IP: ");
Serial.print(WiFi.localIP());
}
void loop()
{
delay(5000);
Serial.print("Conectando con ");
Serial.println(host);
// Clase cliente
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("Fallo en la conexión.");
return;
}
// Linea de petición
String url = "/dato.htm";
Serial.println(url);
// Esto es lo que se enviará al servidor.
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Rebasado 5 segundos.");
client.stop();
return;
}
}
// Lee todas las líneas que ha enviado el servidor.
while(client.available()) {
String lineas = client.readStringUntil('\r');
Serial.print(lineas);
}
Serial.println();
Serial.println("Conexión cerrada.");
}
|
____________________________________
- Comentarios.
- El host es la IP del servidor web (no el de la tarjeta), por ejemplo 192.168.1.48
- En caso que sea un nombre de dominio lo pondremos de esta forma: kio4.com
- En url pondremos la página donde se encuentra el dato.
____________________________________
- Obtener la fecha y la hora. PHP.
- Si dispones de un servidor web con PHP, puedes subir este código para obtener la hora.
- Mediante PHP
<?php
date_default_timezone_set('America/Bogota');
echo date('d/m/Y/H/i/s', time());
?>
- Puedes poner la zona horaria que te interese:
http://php.net/manual/es/timezones.europe.php
http://php.net/manual/es/timezones.america.php
- Otra manera de obtener fecha y hora es subiendo un archivo PHP con este contenido:
<?php
$timestamp = time();
$datum = date("d/m/Y/H/i/s",$timestamp);
echo "$datum";
?>
- También podemos dejar el archivo anterior
<?php
$datos = $_GET;
$contenido = $datos['contenido'];
date_default_timezone_set($contenido);
echo date('d/m/Y/H/i/s', time());
?>
- Y pedir la hora de la forma siguiente:
http://kio4.com/appinventor/php/fecha.php?contenido=America/Bogota
- En nuestro caso terminaría en Europe/Madrid.
_____________________________________________________________
3.- Propuesta.
- Además de que salga en el Monitor Serie, que salga en la pantalla LCD, consulta el tutorial 340.
_______________________________
|