Hi, I have a project that consists of a device that sends the air quality to a web dashboard, the WiFi module I am using is the ESP8266 and the arduino board is an arduino uno, previously the server had it on a local server and it worked , but now i deployed it on a server and can't get it to work.
This is the code in arduino:
configuracion-------------------
delay(1000);
pinMode(PIN_LED_ROJO, OUTPUT);
pinMode(PIN_LED_AMARILLO, OUTPUT);
pinMode(PIN_LED_VERDE, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
}
void loop() {
cm = lecturaSensor(PIN_TRIGGER, PIN_ECHO);
Serial.print(cm );
Serial.println("cm" );
senal_mq = analogRead(PIN_MQ135);
Serial.print(senal_mq);
Serial.println("ppm");
if (senal_mq < 95){
calidad = "Buen aire";
}
if (senal_mq >= 95 && senal_mq < 110){
calidad = "Aire con un poco de CO2";
}
if (senal_mq >= 110 && senal_mq < 140){
calidad = "Aire con alcohol";
}
if (senal_mq >= 140){
calidad = "Aire con propano";
}
if (cm <= 50) {
if (senal_mq < 95) {
digitalWrite(PIN_LED_VERDE, HIGH);
digitalWrite(PIN_LED_AMARILLO, LOW);
digitalWrite(PIN_LED_ROJO, LOW);
Serial.println(calidad);
}
if (senal_mq >= 95 && senal_mq < 110) {
digitalWrite(PIN_LED_AMARILLO, HIGH);
digitalWrite(PIN_LED_VERDE, LOW);
digitalWrite(PIN_LED_ROJO, LOW);
Serial.println(calidad);
}
if (senal_mq >= 110 && senal_mq < 140) {
digitalWrite(PIN_LED_AMARILLO, HIGH);
digitalWrite(PIN_LED_VERDE, LOW);
digitalWrite(PIN_LED_ROJO, LOW);
Serial.println(calidad);
}
if (senal_mq >= 140) {
digitalWrite(PIN_LED_ROJO, HIGH);
digitalWrite(PIN_LED_VERDE, LOW);
digitalWrite(PIN_LED_AMARILLO, LOW);
tone(PIN_BUZZER, 20, 3000);
Serial.println(calidad);
}
} else {
Serial.println("No hay personas cerca");
noTone(PIN_BUZZER);
digitalWrite(PIN_LED_VERDE, LOW);
digitalWrite(PIN_LED_AMARILLO, LOW);
digitalWrite(PIN_LED_ROJO, LOW);
}
//SerialESP8266.println("AT+CIPSTART=\"TCP\",\"" + String(host) + "\",80");
String x = "AT+CIPSTART=\"TCP\",\"quair.berkanapp.com\",80";
SerialESP8266.println("AT+CIPSTART=\"TCP\",\"" + String(host) + "\",80");
Serial.println(x);
// if ( SerialESP8266.find("OK"||"ALREAY CONNECT"))
// {
Serial.println();
Serial.println();
Serial.println();
Serial.println("ESP8266 conectado con el servidor...");
String peticionHTTP = String("GET ")+ "/www.aquivaelservidor.com/enviardatos.php?idProcesador="+ID+"&PPM="+senal_mq+"&Calidad="+calidad+" HTTP/1.1\r\n"+
"Host: www.aquivaelservidor.com\r\n"+
"Connection: close\r\n\r\n";
//Enviamos el tamaño en caracteres de la peticion http:
SerialESP8266.print("AT+CIPSEND=");
SerialESP8266.println(peticionHTTP.length());
//esperamos a ">" para enviar la petcion http
if (SerialESP8266.find(">")) // ">" indica que podemos enviar la peticion http
{
Serial.println("Enviando HTTP . . .");
SerialESP8266.println(peticionHTTP);
if ( SerialESP8266.find("SEND OK"))
{
Serial.println("Peticion HTTP enviada:");
Serial.println();
Serial.println(peticionHTTP);
Serial.println("Esperando respuesta...");
boolean fin_respuesta = false;
long tiempo_inicio = millis();
String cadena = "";
while (fin_respuesta == false)
{
while (SerialESP8266.available() > 0)
{
char c = SerialESP8266.read();
Serial.write(c);
cadena.concat(c); //guardamos la respuesta en el string "cadena"
}
//finalizamos si la respuesta es mayor a 500 caracteres
if (cadena.length() > 500) //Pueden aumentar si tenen suficiente espacio en la memoria
{
Serial.println("La respuesta a excedido el tamaño maximo");
SerialESP8266.println("AT+CIPCLOSE");
if ( SerialESP8266.find("OK"))
Serial.println("Conexion finalizada");
fin_respuesta = true;
}
if ((millis() - tiempo_inicio) > 2000) //Finalizamos si ya han transcurrido 10 seg
{
Serial.println("Tiempo de espera agotado");
SerialESP8266.println("AT+CIPCLOSE");
if ( SerialESP8266.find("OK"))
Serial.println("Conexion finalizada");
fin_respuesta = true;
}
if (cadena.indexOf("CLOSED") > 0) //si recibimos un CLOSED significa que ha finalizado la respuesta
{
Serial.println();
Serial.println("Cadena recibida correctamente, conexion finalizada");
fin_respuesta = true;
}
}
}
else
{
Serial.println("No se ha podido enviar HTTP.....");
}
}
// }
// else
// {
// Serial.println("No se ha podido conectarse con el servidor");
// }
//-------------------------------------------------------------------------------
delay(4000);
}
}
I have to emphasize that the http request is not as it was before because I have tried to modify it so that it works and I can not do it
This is the code to the php file where I need to send the information
<!DOCTYPE html>
<html lang="eng">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Calidad Aire</title>
</head>
<body>
<div id="calidadAire">
<?php
$id = $_GET['idProcesador'];
$ppm = $_GET['PPM'];
$cal = $_GET['Calidad'];
echo "La id del dispositivo asociado es: ".$id."
Las PPM son: ".$ppm;
$usuario = "root";
$contrasena = "";
$servidor = "localhost";
$basededatos = "proyectocf";
$conexion = mysqli_connect( $servidor, $usuario, "" ) 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" );
$consulta = "INSERT INTO registros(ID_PROCESADORF, CALIDAD_AIRE, PPM)
VALUES ($id,'$cal',$ppm)";
$resultado = mysqli_query( $conexion, $consulta );
?>
</body>
</html>