Tutorial del Internet de las Cosas y Bluetooth con el ESP8266
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
316.- ESP8266 D1 R2. Cliente de un servidor web envío de datos. PHP.
- En este caso disponemos de un servidor web externo con PHP, le vamos a enviar datos y recibiremos una respuesta.
- El archivo PHP se encuentra en kio4.com/appinventor/php/respuesta.php
- Ese archivo contiene este código PHP
respuesta.php |
<?php
$datos=$_GET;
echo "Hola ";
echo $datos['nombre'];
echo ", eres de ";
echo $datos['ciudad'];
?>
|
- Recibe mediante GET dos datos: el nombre y la ciudad.
- Los muestra en el cliente que ha conectado, mediante echo.
_____________________________________________________________
1.- El ESP32 actúa como cliente, envía datos a un servidor externo y recibe una respuesta.
cliente_php.ino |
// Juan Antonio Villalpando
// kio4.com
// Cliente web. PHP.
#include <ESP8266WiFi.h>
const char* ssid = "Nombre_de_tu_red_WiFi";
const char* password = "Clave_de_la_red_WiFi";
const char* host = "kio4.com";
const char* nombre = "Juan";
const char* ciudad = "Jerez";
// const char* ciudad = "Grazalema";
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 = "/appinventor/php/respuesta.php";
url += "?nombre=";
url += nombre;
url += "&ciudad=";
url += ciudad;
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.");
}
|
_____________________________________________________________
3.- Comentarios.
- El dato que envíe no deberá tener acentos ni eñe ni espacios.
- Puedes solventar este tipo de caracteres utiliza código html.
- Por ejemplo, para enviar Jerez de la Frontera, enviaríamos: Jerez%20de%20la%20Frontera
- Este es solamente un ejemplo didáctico, podríamos complicarlo enviando datos a una Base de datos MySQL o tomando decisiones en el código PHP.
- Por ejemplo, este nuevo código:
respuesta_v2.php |
<?php
$datos=$_GET;
echo "Hola ";
echo $datos['nombre'];
echo ", eres de ";
echo $datos['ciudad'];
if ($datos['ciudad'] == "Jerez" ) {echo ". En tu ciudad hacen vino. " ;}
if ($datos['ciudad'] == "Grazalema" ) {echo ". Muy bueno el queso payoyo. ";}
?>
|
- Según la ciudad sea "Jerez" o "Grazalema" mostrará una respuesta.
_______________________________
|