Obtener la hora desde Internet - pensactius/Tutoriales GitHub Wiki
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.
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: