Problema con ESP8266 a la hora de enlazarlo con myslq a través de PHP

Hola, soy bastante novato con este dispositivo. Mi objetivo es intentar mandar datos desde él hasta una base de datos que tengo en un sistema WAMP. Para ello me he basado en varios tutoriales pero ninguno sin éxito. Estoy usando el programa Uniform Server como sistema WAMP.

Para empezar he creado una base de datos en phpmyadmin llamada tutorial y dentro de ella una tabla de 4 columnas llamada datos. En la primera columna he establecido un dato de tipo int autoincremental llamado id. Luego otra columna llamada fecha donde utilizo timestamp donde se establece la hora y fecha que se registró cada dato. Después otra columna llamada serie, donde pretendo meter un número identificador del dispositivo ESP8266 que estoy utilizando. Por último, he establecido una última columna llamada temperatura donde quiero que se introduzcan los valores de temperatura que registre un sensor (de momento no lo he conectado y en su lugar he introducido en el código un valor numérico constante ej 97).

Sabiendo esto, procedo a exponer el código que he introducido en el ESP8266:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

//-------------------VARIABLES GLOBALES--------------------------
int contconexion = 0;

const char *ssid = “NOMBRE DE LA RED WIFI”;
const char *password = “CONTRASEÑA DE LA RED WIFI”;

unsigned long previousMillis = 0;

char host[48];
String strhost = “192.168.1.142”;
String strurl = “/ESP/prueba3averquetal.php”;
String chipid = “232”;

//-------Función para Enviar Datos a la Base de Datos SQL--------

String enviardatos(String datos) {
String linea = “error”;
WiFiClient client;
strhost.toCharArray(host, 49);
if (!client.connect(host, 80)) {
Serial.println(“Fallo de conexion”);
return linea;
}

client.print(String("POST “) + strurl + " HTTP/1.1” + “\r\n” +
"Host: " + strhost + “\r\n” +
“Accept: /” + “*\r\n” +
"Content-Length: " + datos.length() + “\r\n” +
“Content-Type: application/x-www-form-urlencoded” + “\r\n” +
“\r\n” + datos);
delay(10);

Serial.print(“Enviando datos a SQL…”);

unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(“Cliente fuera de tiempo!”);
client.stop();
return linea;
}
}
// Lee todas las lineas que recibe del servidro y las imprime por la terminal serial
while(client.available()){
linea = client.readStringUntil(’\r’);
}
Serial.println(linea);
return linea;
}

//-------------------------------------------------------------------------

void setup() {

// Inicia Serial
Serial.begin(115200);
Serial.println("");

Serial.print("chipId: ");
chipid = String(ESP.getChipId());
Serial.println(chipid);

// Conexión WIFI
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED and contconexion <50) { //Cuenta hasta 50 si no se puede conectar lo cancela
++contconexion;
delay(500);
Serial.print(".");
}
if (contconexion <50) {
//para usar con ip fija
IPAddress ip(192,168,1,158);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
WiFi.config(ip, gateway, subnet);

Serial.println("");
Serial.println(“WiFi conectado”);
Serial.println(WiFi.localIP());
}
else {
Serial.println("");
Serial.println(“Error de conexion”);
}
}

//--------------------------LOOP--------------------------------
void loop() {

unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= 10000) { //envia la temperatura cada 10 segundos
previousMillis = currentMillis;
int analog = 97;
float temp = analog*1;
Serial.println(temp);
enviardatos(“chipid=” + chipid + “&temperatura=” + String(temp, 2));
}
}

Aquí también muestro el código php (prueba3averquetal.php) en el que se basa el código introducido en el ESP8266:

<?php $cons_usuario="root"; $cons_contra="root"; $cons_base_datos="tutorial"; $cons_equipo="localhost"; $obj_conexion = mysqli_connect($cons_equipo,$cons_usuario,$cons_contra,$cons_base_datos); $serie = $_POST ['serie']; $temperatura=$_POST ['temp']; $var_consulta= "INSERT INTO `datos` (`id`, `fecha`, `serie`, `temperatura`) VALUES (NULL, current_timestamp(), '$serie', '$temperatura');"; $var_resultado = $obj_conexion->query($var_consulta); echo "Datos ingresados correctamente!"; ?>

Cuando miro el Monitor Serie de la id de arduino una vez que he introducido el código, el resultado es este:

.
WiFi conectado
192.168.1.158
97.00
Enviando datos a SQL…
Datos ingresados correctamente!
97.00
Enviando datos a SQL…
Datos ingresados correctamente!
97.00
Enviando datos a SQL…
Datos ingresados correctamente!
97.00
Enviando datos a SQL…
Datos ingresados correctamente!

Aparentemente funciona, pero luego cuando compruebo si hay nuevos datos en la tabla de mi base de datos en phpmyadmin, no hay nada. No se que puedo estar haciendo mal.

Muchas gracias si habeis llegado hasta aquí :)))! Toda ayuda será agradecida y perdonar si soy demasiado n00b

Moderador:
Lee las normas del foro, edita tu post usándolas.
1er hilo de cualquier seccion.
todos los códigos deben ir con etiquetas.
Mira otros hilos para entender.

Gracias.

Buenas,

A priori tu problema parece estar en el PHP. Revisa que la variable "$obj_conexion" sea true (será false si no se puede conectar a la DB), en caso de ser false imprime el error mediante "mysqli_error()".

Por otro lado, "mysqli_connect" no devuelve un objeto, por lo que tu variable "$var_resultado" estará devolviendo un error, si quieres hacer esta operación mediante POO deberás usar la clase "mysqli" de PHP, en caso contrario deberás usar la función "mysqli_query()". Esta función devolverá true en caso de éxito de la query o false en caso de error. Podrás imprimir el error con la función "mysqli_error()".

Te recomiendo echar un ojo a la documentación de MySQLi de PHP: PHP: Guía rápida - Manual.

Saludos