Go Down

Topic: esp8266 dth11 y mysql no logro conectar con la base de datos (Read 434 times) previous topic - next topic

megamicron

Hola a todos:
( he rehecho el tema, pues el anterior no lo puse bien, le faltaban las etiquetas )
Tengo este programa de arduino y no logro pasar de "fallo al conectar".
En las pruebas con php logro entrar datos en la base de datos.
Logro hacer ping al esp8266. satisfactoriamente.
Pero no consigo que al arrancar el esp8266 se conecte y mande los datos.
Los datos de dht11 también salen bien por el monitor serie.
El host es mi localhost 192.168.1.39
Supongo que la sentencia //  if (!client.connect(host,port)) {  //  es la que no logra conectar.
He tratado de leer varios ejemplos pero no logro salir adelante.
Que debo mirar para corregirlo o que tengo que hacer para que funcione?
Ya he estado varios días anteriormente para ver vídeos y buscar en google, pero no salgo de este fallo.
Gracias

Code: [Select]


#include <ESP8266WiFi.h>

char ssid[] = "XXXXX";
char password[] = "XXXX";

const char* host = "192.168.1.39";  // IP serveur - Server IP
const int   port = 80;            // Port serveur - Server Port
const int   watchdog = 5000;        // Fréquence du watchdog - Watchdog frequency
unsigned long previousMillis = millis();

#include "DHT.h"        // including the library of DHT11 temperature and humidity sensor
#define DHTTYPE DHT11   // DHT 11

#define dht_dpin D3
DHT dht(dht_dpin, DHTTYPE);

void setup(void)

{

  Serial.begin(9600);
 
  WiFi.begin(ssid,password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
 }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  dht.begin();
  // Serial.begin(9600);
  Serial.println("Humedad y Temperatura\n\n");
  delay(700);

}
void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();        
    Serial.print("Humedad = ");
    Serial.print(h);
    Serial.print("%  ");
    Serial.print("Temperatura = ");
    Serial.print(t);
    Serial.println("°C  ");

    unsigned long currentMillis = millis();
  
  if ( currentMillis - previousMillis > watchdog ) {
    previousMillis = currentMillis;
    WiFiClient client;
 
    if (!client.connect(host,port)) {
  
    
    Serial.println("Fallo al conectar   ");
  
     return;
    }

    String url = "/index.php?temp=";
    url += t;
    url += "&hum=";
    url += h;
  
    // Enviamos petición 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(">>> Client Timeout !");
        client.stop();
        return;
      }
    }
 
    // Leemos la respuesta del servidor
    while(client.available()){
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }
  }
  delay(800);
}



Y adjunto el php por si fuera el problema.

Code: [Select]


<?php

$temperatura 
$_GET['temp'];
$humedad $_GET['hum'];

echo 
"La temperatura es: ".$temperatura." <br>La humedad es: ".$humedad;

$usuario "root";
$contrasena "root";
$servidor "localhost";
$basededatos "tutorial";

$conexion mysqli_connect$servidor$usuario"root" ) or die ("No se ha podido conectar al servidor de Base de datos");

$db mysqli_select_db$conexion$basededatos ) or die ( "No se ha podido seleccionar la base de datos" );

$fecha time();
$consulta "INSERT INTO datos (fecha, temperatura, humedad) VALUES (".$fecha.", ".$temperatura.", ".$humedad.")";

$resultado mysqli_query$conexion$consulta );
mysqli_close($conexion);
?>




Y lo que sale por el monitor serie

Code: [Select]

⸮...............
13:51:05.630 -> WiFi connected
13:51:05.630 -> IP address:
13:51:05.678 -> 192.168.1.38
13:51:05.678 -> Humedad y Temperatura
13:51:05.678 ->
13:51:05.678 ->
13:51:06.363 -> Humedad = 34.00%  Temperatura = 25.00°C  
13:51:06.363 -> Fallo al conectar  


Saludos

Go Up