Buenos días, estoy intentando hacer que un arduino me recoja los datos de un sensor de temperatura y humedad y luego los envíe a un php que tengo en un servidor, el php y la base de datos a la que va luego ya está todo funcionando, si le escribo la dirección tal que así
"dominio"/enviar.php?temp=30.12&hum=12.55
me lo recibe en la base de datos y todo llega correcto, el problema llega cuando hago lo mismo en arduino, no llega nada.
Arduino:
(la dirección la tengo que poner con dominio si o si.)
//Libraries
#include <Ethernet.h>
#include <SPI.h>
#include <DHT.h>;
//Constants
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
//Variables
int chk;
float hum; //Stores humidity value
float temp; //Stores temperature value
// Configuracion del Ethernet Shield
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // Direccion MAC
byte ip[] = { 10, 0, 4, 111 }; // Direccion IP del Arduino
char server[] ="[s]dominio[/s]"; // Direccion IP del servidor
EthernetClient client;
void setup(void) {
Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
Serial.begin(9600);
dht.begin();
delay(1000); // Esperamos 1 segundo de cortesia
}
void loop(void) {
//Read data and store it to variables hum and temp
hum = dht.readHumidity();
temp= dht.readTemperature();
//Print temp and humidity values to serial monitor
Serial.print("Humedad: ");
Serial.print(hum);
Serial.print(" %, Temperatura: ");
Serial.print(temp);
Serial.println(" Celsius");
// Proceso de envio de muestras al servidor
Serial.println("Connecting...");
if (client.connect(server, 80)>0) { // Conexion con el servidor
client.print("GET /enviar.php?temp="); // Enviamos los datos por GET
client.print(temp);
client.print("&hum=");
client.print(hum);
client.println("GET /search?q=arduino HTTP/1.1");
client.println("Host: [s]dominio[/s]");
client.println("User-Agent: Arduino-Ethernet");
client.println("Connection: close");
client.println();
Serial.println("Conectado");
} else {
Serial.println("Fallo en la conexion");
}
if (!client.connected()) {
Serial.println("Disconnected!");
}
client.stop();
client.flush();
delay(10000); // Espero un minuto antes de tomar otra muestra
}
El php
<?php
// iot.php
// Importamos la configuración
require("config.php");
// Leemos los valores que nos llegan por GET
$temp = mysqli_real_escape_string($con, $_GET['temp']);
$hum = mysqli_real_escape_string($con, $_GET['hum']);
// Esta es la instrucción para insertar los valores
$query = "INSERT INTO valores(temp, hum) VALUES('".$temp."','".$hum."')";
// Ejecutamos la instrucción
mysqli_query($con, $query);
mysqli_close($con);
?>
No encuentro el error, en teoría tiene que ver con como envía la dirección arduino ya que desde pc si puedo hacerla pero no veo que hay mal.
Otra cosa aparte, cuando hago la conexión antes de conseguir conectar me falla unas 3 veces, es habitual?