Académique Documents
Professionnel Documents
Culture Documents
h"
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
/*
%s=cadena
Esos son parámetros de marcador de posición y es la forma preferida de construir consultas SQL.
%s puede sustituir cadenas, %d decimales, etc
void conectandoWiFi(){
Serial.println("-------------Conexion WIFI------------");
Serial.println("Conectandose a la red:....");
Serial.println(SSID);
Serial.println("Espere un momento por favor");
//-----------------PRIMERA EJECUCION-----------------------
void setup(){
Serial.begin(9600);
dht.setup(D1);
}
//---------------------CICLO-----------------------
void loop(){
/*
* por si se desconecta o detienen el servidor mysql
* si no existiera esta instrucción el módulo NodeMCU nunca se conectaría a MYSQL
*/
conectando_servidor_mysql();
char humedadd[10];
char temperaturaa[10];
char alcoholl[10];
//Inicializado en Cero, por si no hay conexión con MYSQL (BD). Sino subiría cualquier valor
float t=0;
float h=0;
float alcohol=0;
/*
En DirIP estará almacenando la IP del Módulo NodeMCU
para subir ese dato a los campos de la Base de Dato "proyecto"
WiFi.localIP()[0]=1er octeto WiFi.localIP()[1]=2do octeto WiFi.localIP()[2]=3er octeto
WiFi.localIP()[3]=4to octeto
*/
char DirIP[20];
sprintf(DirIP, "IP:%d.%d.%d.%d", WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], WiFi.localIP()[3] );
/*
sprintf(char* buffer, char* CadenaFormato, object Valor);
| | \_ Lista de valores que se van a convertir en cadena
| \_ cadena con la máscara de los valores a convertir
\_ Buffer donde devolveremos el resultado de los valores convertidos
DirIP=buffer
"IP:%d.%d.%d.%d"=CadenaFormato
WiFi.localIP()[0],....=Valor
%d=WiFi.localIP()[0] asi sucesivamente
%d=significa decimal
"IP:192.168.1.100" ejemplo: así quedara la cadena después de ejecutar "sprintf"
lo mismo aplica más abajo
*/
delay(20000); //retardo de 20 seg antes de subir datos al servidor de BD proyecto
//Creando variables que harán la ejecución de la instrucción "INSERT INTO"
MySQL_Cursor *ejecutarS1=new MySQL_Cursor(&conexion);
MySQL_Cursor *ejecutarS2=new MySQL_Cursor(&conexion);
Ejemplo:
t=34.534
dtostrf(t,2,1,temperaturaa);
temperaturaa="34.5"
*/
dtostrf(t,2,1,temperaturaa);
dtostrf(h,2,1,humedadd);
dtostrf(alcohol,1,1,alcoholl);
Serial.println(temperaturaa);
Serial.println(humedadd);
/*
s1[]="INSERT INTO proyecto.sensor01 (DireccionIp,temperatura, humedad) VALUES ('%s',%s,%s)";
Después de ejecutar sprintf
s1[]="INSERT INTO proyecto.sensor01 (DireccionIp,temperatura, humedad) VALUES
("IP:192.168.1.100",32,70)";
*/
sprintf(InsertIntoSensor01,s1,DirIP,temperaturaa,humedadd);
sprintf(InsertIntoSensor02,s2,DirIP,alcoholl);
/*
* Ejecuta la instrucción primero del sensor01 y después los demás
s1[]="INSERT INTO proyecto.sensor01 (DireccionIp,temperatura, humedad) VALUES
("IP:192.168.1.100",32,70)";
*/
ejecutarS1 ->execute(InsertIntoSensor01);
ejecutarS2->execute(InsertIntoSensor02);
delete ejecutarS1;
delete ejecutarS2;
Serial.println("Datos registrados");
}//FIN DEL BUCLE
float Detectordealcohol(){
int adc_MQ=analogRead(A0);
float voltaje=adc_MQ *(2/1023.0);
float Rs=1000*((5-voltaje)/voltaje);
float miligr_alcohol=0.4091*pow(Rs/5463, -1.497);
Serial.print("alcohol: ");
Serial.print(miligr_alcohol);
Serial.println("mg/L");
return miligr_alcohol;
}