Buenas noches
Mi problema: deja de enviar info a la base de datos AYUDA PORFA, he leído sobre función restart, pero no se como usarla en el código… Recomendaciones por favor, ya ando seco de ideas
Estoy haciendo un sistema IOT para dos sensores DS18B20, después de mucho probar logré construir mi propio frankestein (así llamo a mis códigos, sé poco de programación y lo que hago es buscar otros y adaptarlos a mi necesidad).
El ESP8266 con los dos sensores recogen la información, luego a través del WIFI la envían a una base de datos mysql, donde posteriormente la puedo visualizar en una página web.
Dejo este código que funciona actualmente, bueno, casi funciona
#include <TimeLib.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2// DS18B20 Data Pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// MySQL
IPAddress server_addr(xxx,xxx,xxx,xxx); // MySQL SERVER
char user[] = "USER"; // MySQL USERNAME
char password[] = "PASSW"; // MySQL PASSWORD
char INSERT_DATA[] = "INSERT INTO database.tabla (valor1, valor2, tiempo) VALUES (%s, %s, NOW() + INTERVAL 1 HOUR)";
char query[128];
char temperatura1[10];
char temperatura2[10];
// WiFi
char ssid[] = "Red wi fi"; // SSID NAME
char pass[] = "clave de red"; // SSID PASSWORD
WiFiClient client;
MySQL_Connection conn((Client *)&client);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
sensors.begin();
}
void saveTempData() {
// wi fi
WiFi.begin(ssid, pass);
sensors.begin();
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
Serial.println ( "" );
Serial.print ( "Connected to " );
Serial.println ( ssid );
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );
Serial.println("DB - Connecting...");
while (conn.connect(server_addr, 3306, user, password) != true) {
delay(500);
Serial.print ( "." );
}
// Sensores
sensors.requestTemperatures();
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
Serial.print("Temp 1: ");
Serial.println(sensors.getTempCByIndex(0));
Serial.print("Temp 2: ");
Serial.println(sensors.getTempCByIndex(1));
Serial.print("Query: ");
dtostrf(sensors.getTempCByIndex(0), 2, 2, temperatura1);
dtostrf(sensors.getTempCByIndex(1), 2, 2, temperatura2);
sprintf(query, INSERT_DATA, temperatura1, temperatura2);
cur_mem->execute(query);
Serial.println(query);
delete cur_mem;
Serial.println("Data stored!");
delay(3000);
}
void loop() {
saveTempData();
}
El pograma después de forma aleatoria posterior a 300 datos, deja de funcionar