Obtener la hora desde Internet - pensactius/Tutoriales GitHub Wiki

Simple Time

Una de las características del ESP32 es su reloj interno (Real Time Clock o RTC). El ejemplo SimpleTime, que se encuentra el el submenú ESP32/Time, muestra como establecer la hora del reloj interno usando NTP (Network Time Protocol o Protocolo de Tiempo por Red) a través de Internet.

#include <WiFi.h>
#include "time.h"

const char* ssid       = "YOUR_SSID";
const char* password   = "YOUR_PASS";

const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;

void printLocalTime()
{
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}

void setup()
{
  Serial.begin(115200);
  
  //connect to WiFi
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  }
  Serial.println(" CONNECTED");
  
  //init and get the time
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();

  //disconnect WiFi as it's no longer needed
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
}

void loop()
{
  delay(1000);
  printLocalTime();
}

El programa necesita conectarse a Internet, así que deberás editar el código e introducir los datos de tu conexión WiFi. Es decir en estas líneas:

const char* ssid       = "YOUR_SSID";
const char* password   = "YOUR_PASS";

Deberás cambiar YOUR_SSID por el nombre de tu red WiFi y YOUR_PASS por el password de tu WiFi.

Cómo calcular la diferencia GMT y el Horario de Verano

Lo hora correcta obtenida de Internet depende de tu Zona Horaria, y deberás proveer esta información en el código del programa. En concreto:

  • GMT Offset - Es el número de segundos que tu zona horaria difiere de GMT. Puede ser positivo o negativo.
  • Daylight Offset - Si tu zona horaria cambia la hora en verano, este se refiere al número de segundos que avanzas el reloj en Horario de Verano.

Para calcular el offset GMT debes saber cuántas horas de diferencia hay en tu Zona Horaria respecto a la Zona Greenwich Mean Time. Si no conoces este dato, puedes usar una de las múltiples calculadoras en Internet Este valor puede ser positivo (si estás al Este de Greenwich) o negativo (si estás al Oeste, i.e. América del Norte y del Sur).

A continuación deberás convertir este desplazamiento en segundos, es decir, deberás multiplicar el valor por 3600, ya que hay 3600 segundos en una hora.

Por ejemplo, la zona horaria de España es GMT+1 (excepto las Islas Canarias). Por tanto el offset GMT es +1 x 3600 = 3600. Por tanto el GMT Offset es 3600.

Además en España en Abril cambiamos la hora y la adelantamos +1 hora, por tanto el Daylight Offset será de +1 x 3600 = 3600.

Después de modificar el código acordemente con los parámetros WiFi y desplazamientos de Zona Horaria el resultado mostrado por el monitor serie es similar al siguiente:

Hora en tiempo real desde ESP32

⚠️ **GitHub.com Fallback** ⚠️