• Tuesday , 25 September 2018

Tutorial #6 ESP8266 – MySQL + PHP en Servidor Local

Code Canyon



En este video explico cómo enviar la temperatura que lee un LM35 a un servidor local Apache usando una HTTP REQUEST con el método POST a un archivo …

Original source

3d Ocean

Related Posts

37 Comments

  1. German Varas
    September 16, 2018 at 03:22

    hola quisiera saber donde descargo esa libreria ESP8266WiFi

  2. andrés jiménez
    September 16, 2018 at 03:22

    Cordial saludo y gracias por el tutorial, me gustaria saber si es posible hacer lo mismo pero sin ESP8266

  3. Diego Eduardo Mayolafquen Bustos
    September 16, 2018 at 03:22

    ¿La IP se coloca tanto en "string strhost" como en "IPAdress ip"?
    (La siguiente biblia se trata sobre el problema "Fallo de conexion")

    Hola amigo! Primero que todo, acabo de conseguir la comunicación de mi Nodemcu con phpMyAdmin, así que muchas gracias por el tutorial. Ahora aprovecho de hacerte una consulta. Lo que pasa es que a pesar de seguir el tutorial al pie de la letra, el paso final me costó muchísimo lograrlo, y siento que lo logré por pura suerte, probando todo. El problema era la IP.

    Todo me había funcionado hasta el momento de empezar a enviar datos con el ESP, donde me salía "Fallo de conexion". El resto de las pruebas funcionaban, te explico. Al colocar mi IP en la dirección del formulario html (eso de reemplazar "localhost" por la IP) funcionaba bien. Ingresar los datos de chipID y temperatura en ese formulario también funcionaba, y se veía reflejado en la tabla del phpMyAdmin sin problema. También pude comprobar que la conexión wifi de mi ESP estaba funcionando, ya que probé otro proyecto aparte, uno con Firebase, y no había ningún problema, la conexión wifi se hacía correctamente (con eso descarté que mi placa estuviera defectuosa). Entonces, si me sigues, es evidente que el problema era exclusivamente la conexión del ESP con el PHP, posiblemente debido al código.

    Resulta que el puerto serie del IDE me arrojaba ese mensaje de "Fallo de conexion" a pesar de haber colocado correctamente mi IP al comienzo del código (string strhost), al igual que había colocado correctamente la URL del PHP (string strurl). Y bueno, probé haciendo de todo, hasta que algo me funcionó: configurar también la IP que aparece en una línea de más abajo, en la instrucción "IPAdress ip()".

    Al principio no había querido colocarle mi IP porque en el tutorial no haces ninguna mención acerca de esa instrucción, como que te saltas esa parte del código al explicarlo. De hecho, la IP que muestras en tu string strhost es distinta a la de tu IPAdress ip, entonces en ese momento me dije a mí mismo… eh, con configurar la de arriba basta. Pero no fue así. Le di un montón de vueltas al asunto, vi cómo un montón de gente preguntaba lo mismo aquí en el tuto y también en tu página. Pero al final me di cuenta de eso, de que si ambas instrucciones no tenían la IP, la conexión no anda bien. Aprovecho de mencionar que a las instrucciones IPAdress gateway e IPAdress subnet no les hice nada, las deje tal cual como las muestras.

    Entonces ahora te pregunto, ¿es normal esto? Pienso que tal vez se te pasó decirlo, o lo tomaste por obvio en el código al publicarlo… o tal vez el mío es un caso particular, no sé… quiero saber qué piensas. Sé que esto me pasa por no saber programar el ESP, pero por esa misma razón pregunto. Y ahora que al fin me funciona, es cuando recién comienzo a jugar con el código y dejarlo a mi gusto, para mi aplicación. Pero en fin, te lo dejo a modo de realimentación. Te agradezco mucho el tutorial, y te agradecería aun más si pudieras confirmarme esta inquietud.

    Y si termino ayudando a alguien con el mismo problema, cuánto mejor, que por lo que veo varios se han quebrado la cabeza con el famoso "Fallo de conexion".

  4. InKietamenT
    September 16, 2018 at 03:22

    Hola muy buen video,una consulta de donde puedo descargar la libreria <ESP8266WiFi.h> gracias.

  5. Legión Soccer
    September 16, 2018 at 03:22

    me sale error "Fallo de conexion" ayúdeme por favor!!!

  6. rafael marroquin
    September 16, 2018 at 03:22

    Exelente Video 🙂 gracias por compartir lo que sabes.

  7. David Gonzalez
    September 16, 2018 at 03:22

    Muy buen video yo tengo una duda que cambiaria para que en vez de que sea el servidor local se suba a internet (hosting) gracias!!

  8. Esteban Salcedo Alvarez
    September 16, 2018 at 03:22

    Buenos días, he seguido tu tutorial pero tengo un problema. Me imprime esto
    chipId: 333971
    …..
    WiFi conectado
    192.168.1.***

    pero luego me imprime:

    fallo de conexión, tienes idea de porqué será?? Gracias!!!

  9. ElectroMatic
    September 16, 2018 at 03:22

    Buenas, soy un el creador de contenido de un pequeño canal de electrónica y me interesó el tema, aun que luego de seguir tus pasos me di cuenta que la sintaxis que usas está obsoleta en lo que respecta a PHP. Sin saber nada del tema indagué mucho y probé mucho, finalmente logre hacer que funcionara y esta es la sintaxis que resultó para mi, estoy trabajando en un sistema operativo ubuntu:

    <?php
    $servername = "localhost";
    $username = "root";
    $password = "root"; //En esta parte puse una contraseña que tuve que definir al instalar
    $dbname = "tutorial";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    }

    $chipid = $_POST ['chipid'];
    $temperatura = $_POST ['temperatura'];

    $sql = "INSERT INTO tabla (id, chipid,fecha,temperatura)
    VALUES (NULL, '$chipid', CURRENT_TIMESTAMP, '$temperatura')";

    if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
    ?>

    Espero les sirva a todos!

  10. Darío Valenzuela Alarcón
    September 16, 2018 at 03:22

    hola, necesito ayuda, seguí todos los pasos pero al momento de llenar el formulario y enviar me aparece: "Datos ingresados correctamente." pero no se agrega nada a la tabla, me falta hacer algo previo? de antemano muchas gracias.

  11. 7He XiL
    September 16, 2018 at 03:22

    Puedo usarlo con mi placa de Arduino??? o tengo que cargar el sotfware a la placa de ESP…??

  12. Mayck Bernales
    September 16, 2018 at 03:22

    Pregunta el LM35 solo es de temperatura y no humedad cierto.

  13. Marcelo Figueroa
    September 16, 2018 at 03:22

    mysqli_query($conexion, "INSERT INTO `datos` (`id`, `chipId`, `fecha`, `temperatura`) VALUES (NULL,'$chipid',CURRENT_TIMESTAMP, '$temperatura');" );

    esa linea me arroja esta falla…

    Notice: Undefined variable: chipid in C:xampphtdocsenviardatos.php on line 10

  14. Un Sol !
    September 16, 2018 at 03:22

    simpre falla mi conexion cual seria el problema ? 🙁

  15. Fernando
    September 16, 2018 at 03:22

    Disculpa como puedo hacer para encender un led teniendo 1 y 0 en la base segun esos valores encender el led cuando es 0 en la base de datos este apagado y cuando sean uno en la base de datos sea 1 se encienda ayuda

  16. Jose Daniel Guerrero de los Santos
    September 16, 2018 at 03:22

    Muchas gracias por este tutorial!

  17. German Macias
    September 16, 2018 at 03:22

    Que tal una pregunta tengo que realizar un proyecto prácticamente igual sólo que mi base de datos la tengo que alojar en MongoDB podrias darme una idea de que es lo que tendría que hacer?
    Gracias y saludos

  18. hh sur
    September 16, 2018 at 03:22

    Alguien que me pase la libreria esp8266wifi.h

  19. juans white
    September 16, 2018 at 03:22

    hola, gracias por el vídeo, como podria cargar en un servidor con dominio? gracias

  20. Gabino Betancourt
    September 16, 2018 at 03:22

    Hay alguna manera que pueda usar el uniform server usando ip dinamica?, no me lanza el server con el php se cae todo debido a mi conexión dinamica. Gracias de antemano

  21. mario gassmann
    September 16, 2018 at 03:22

    pongo este comentario para los que tengan un error , al parecer actualmente se dio de baja la funcion de php mysql_connect() y actualmente se usa mysqli_connect() ,https://secure.php.net/manual/es/function.mysqli-connect.php

  22. Angel M
    September 16, 2018 at 03:22

    Muchas gracias por tus videos!
    Saludos desde España

  23. mario gassmann
    September 16, 2018 at 03:22

    como siempre muy bueno, gracias por compartir!!!!

  24. MrSantravis
    September 16, 2018 at 03:22

    Hola, gracias por estos vídeos, me están sirviendo mucho.
    Estoy en el paso de formulario mediante localhost, funciona. Pero no si le pongo la IP.
    Cual es el problema?

  25. Ale Torres
    September 16, 2018 at 03:22

    Hola, si quisiera extraer un dato de la base de datos al esp8266 como puedo hacer?

  26. Coco Ramos
    September 16, 2018 at 03:22

    muy buen video, yo estoy estudiando sobre este tema porque quiero comenzar IoT pero necesito crear la base de datos y el servidor para poder ingresar desde cualquier red y no tener que estar en una local el cliente web y mi esp8266, algún consejo que me pueda ayudar, gracias de antemano

  27. gustavo mendez
    September 16, 2018 at 03:22

    un tutorial con el esp 8266, mysql php y un sistema de registro web con un lector de huellas ? seria interesante

  28. christian salcedo
    September 16, 2018 at 03:22

    Buen video, saludos de Peru .

  29. Pablo God
    September 16, 2018 at 03:22

    Gracias por toda la información profe, tengo conocimientos sobre la mitad de mi proyecto, pero quería conectarlo a una base de datos y se me hizo un mundo conectar el esp8266 a una base de datos! Gracias, enserio

  30. katherine caro mujica
    September 16, 2018 at 03:22

    tengo un problema al compilar el programa me genera un error.. he revisado todo y realmente no se que pueda ser..

    Enviando datos a SQL…
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL /uni/prueba.php was not found on this server.</p>
    <p>Additionally, a 404 Not Found
    error was encountered while trying to use an ErrorDocument to handle the request.</p>
    <hr>
    <address>Apache/2.4.27 (Win32) OpenSSL/1.0.2l PHP/7.1.8 Server at 192.168.0.101 Port 80</address>
    </body></html>

  31. JM Castro
    September 16, 2018 at 03:22

    Muchas gracias por estos tutoriales, que me han parecido realmente muy interesantes y que estudiaré con calma. Quiero adaptar tu código para poder usarlo con un arduino Mega y una sheld SIM900. Entiendo que solo ha de cambiar la parte del codigo que usa el modulo ESP, pero la parte de comunicaciones (MQTT, MySQL y PHP) será la misma, supongo. Me lo podrias confirmar?
    Gracias de nuevo.

  32. Juan Manuel Alonso
    September 16, 2018 at 03:22

    acabo de descubrir tu canal … excelentes temas !! muchas gracias !!!

  33. Francisco Ramirez
    September 16, 2018 at 03:22

    Gracias Amigo, estoy haciendo un proyecto y lo voy a integrar con laravel framework. Gracias por tu aporte amigo! un fuerte Abrazo desde Pasto – Colombia!

  34. Digital Brain
    September 16, 2018 at 03:22

    Hola amigo, no consigo esa librería exacta para el módulo, aparecieron muchas pero no exactamente como la que tienes y las otras el código fuente no es compatible con este código del ide que tienes, puedes decirme por favor dónde descargaste esa librería? Muchas gracias es el mejor video que he visto muy bien explicado, lo que me bloqueó fue la librería

  35. Gustavo Gomez
    September 16, 2018 at 03:22

    Muchas gracias por el tutorial, muy completo, yo lo modifique con el sensor de temperatura y humedad DHT11, espero a alguien le sirva, hay que modificar los php y la base de datos con un nuevo campo humedad

    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <DHT.h>

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

    const char *ssid = "xxxxx";
    const char *password = "xxxxx";
    #define DHTPIN 2
    #define DHTTYPE DHT11
    DHT dht(DHTPIN, DHTTYPE);
    unsigned long previousMillis = 0;

    char host[48];
    String strhost = "192.168.0.104";
    String strurl = "/iot/enviardatos.php";
    String chipid = "";

    //-—–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 a MySql");
    return linea;
    }

    client.print(String("POST ") + strurl + " HTTP/1.1" + "rn" +
    "Host: " + strhost + "rn" +
    "Accept: */*" + "*rn" +
    "Content-Length: " + datos.length() + "rn" +
    "Content-Type: application/x-www-form-urlencoded" + "rn" +
    "rn" + 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,0,156);
    IPAddress gateway(192,168,0,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;

    float t = dht.readTemperature();
    float h = dht.readHumidity();
    if (isnan(h) || isnan(t)) {
    Serial.println("Falla al leer el sensor DHT11!");
    return;
    }
    Serial.println(t);
    Serial.println(h);
    enviardatos("chipid=" + chipid + "&temperatura=" + String(t, 2) + "&humedad=" + String(h, 2));
    }
    }

  36. El Mariles
    September 16, 2018 at 03:22

    Hola, buen día
    Si quiero ocupar un dominio que tengo en un servidor en Internet, ¿dónde colocó la IP?

  37. SinapTec
    September 16, 2018 at 03:22

    Sin querer borré un comentario de este video, les pido disculpas.

Leave A Comment

You must be logged in to post a comment.