Buenos días, tengo un problema a la hora de insertar datos en una BD desde mi arduino Ethernet.
He creado una carpeta llamada guarda en mi servidor web, que contiene dos archivos php: config.php e iot.php con el siguiente código:
<?php
// iot.php
// Importamos la configuración
require("config.php");
// Leemos los valores que nos llegan por GET
$ganador = mysqli_real_escape_string($con, $_GET['ganador']);
$tiempo = mysqli_real_escape_string($con, $_GET['tiempo']);
$dispositivo = mysqli_real_escape_string($con, $_GET['dispositivo']);
// Esta es la instrucción para insertar los valores
$query = "INSERT INTO carreras(Ganador,Tiempo,Dispositivo) VALUES('".$ganador."','".$tiempo."','".$dispositivo."')";
// Ejecutamos la instrucción
mysqli_query($con, $query);
mysqli_close($con);
?>
<?php
// config.php
// Credenciales
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "tfg";
// Conexión con la base de datos
$con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
?>
Si desde el navegador lanzo la siguiente petición :
http://192.168.1.128/guarda/iot.php?ganador=calle1&tiempo=25&dispositivo=01:02:03:04
Sí que me inserta bien los datos en la BD.
El problema viene cuando quiero que estos datos sean enviados desde mi Arduino Ethernet, el código que uso es :
#include <Ethernet.h>
#include <SPI.h>
// Configuracion del Ethernet Shield
byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0xA3, 0x69}; // Direccion MAC
byte ip[] = { 192,168,1,129 }; // Direccion IP del Arduino
byte server[] = { 192,168,1,128 }; // Direccion IP del servidor
EthernetClient client;
String ganador;
String tiempo;
String dispositivo;
void setup(void) {
Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
delay(1000); // Esperamos 1 segundo de cortesia
Serial.begin(9600);
}
void loop(void) {
ganador = "calle1";
tiempo = "23";
dispositivo ="01:01:02:03";
// Proceso de envio de muestras al servidor
Serial.println("Connecting...");
if (client.connect(server, 80)>0) { // Conexion con el servidor
client.print("GET /guarda/iot.php?ganador="); // Enviamos los datos por GET
client.print(ganador);
client.print("&tiempo=");
client.print(tiempo);
client.print("&dispositivo=");
client.print(dispositivo);
client.println(" HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
Serial.println("Conectado");
} else {
Serial.println("Fallo en la conexion");
}
if (!client.connected()) {
Serial.println("Disconnected!");
}
client.stop();
client.flush();
delay(60000); // Espero un minuto antes de tomar otra muestra
}
En el monitor serie me indica conectado, por lo que deduzco que entra dentro del if, pero no inserta nada en la BD, por favor ayuda y gracias de antemano.