Código: Seleccionar todo
#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, si está en D4 es "ONE_WIRE_BUS 2", si está en D2 es "ONE_WIRE_BUS 4"
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// MySQL
IPAddress server_addr(XXX,XXX,XX,XXX);   // MySQL SERVER
char user[] = "USERNAME"; // MySQL USERNAME
char password[] = "PSWW"; // MySQL PASSWORD
char INSERT_DATA[] = "INSERT INTO database.table (valor1, valor2, tiempo) VALUES (%s, %s, NOW() + INTERVAL 1 HOUR)";
char query[200]; //aumenté de 128 a 200 por recomendación
char temperatura1[10];
char temperatura2[10];
//inicionuevo con millis y reset
//unsigned long previousMillis = 0;
// WiFi
char ssid[] = WIFI"; // SSID NAME 
char pass[] = "CLAVEWIFI"; // SSID PASSWORD 
WiFiClient client;
MySQL_Connection conn((Client *)&client);
// CAMBIO2, añado esta función:
void ftoa(char *a, double f, int precision)
{
 long p[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000};
 
 long heiltal = (long)f;
 itoa(heiltal, a, 10);
 while (*a != '\0') a++;
 *a++ = '.';
 long desimal = abs((long)((f - heiltal) * p[precision]));
 itoa(desimal, a, 10);
}
void conectarWifi(){
      // wi fi
      WiFi.begin(ssid, pass);
      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() );
           
  }
void setup() {
      Serial.begin(115200);
      conectarWifi();
      }
void saveTempData() {
      Serial.println("DB - Connecting...");
      if (conn.connect(server_addr, 3306, user, password)) {
        // delay(500); // CAMBIO! - comentado para que el delay se ejecute en el loop.
        sensors.requestTemperatures();
        Serial.print("Query: ");
        
        ftoa(temperatura1, sensors.getTempCByIndex(0), 2); // CAMBIO2!
        ftoa(temperatura2, sensors.getTempCByIndex(1), 2); // CAMBIO2!
        sprintf(query, INSERT_DATA, temperatura1, temperatura2);
        MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);//nuevo sitio
        if (!cur_mem->execute(query)){ // Si se resetease siempre, probar a quitar este IF.
          ESP.reset();
        }
        Serial.println(query);
        delete (cur_mem); // CAMBIO!
        conn.close();
        Serial.println("Datos Almacenados!");
        delay(55000);
        }
        else {
          Serial.println("No se conectó a DB");
          }
  }
void loop() {
    if(WiFi.status() != WL_CONNECTED) conectarWifi();
    sensors.begin();
    saveTempData();
    delay(1000);  // CAMBIO!
    Serial.print(F("Memoria libre: "));
    Serial.print(ESP.getFreeHeap() / 1024);
    Serial.println("KB");
  
  }
Si no funciona o no compila te pasaría una manera mas ruprestre, pero mas eficiente y sencilla para tu caso.
