Sync time using NTP
This commit is contained in:
parent
548a89f824
commit
c0220110d6
2 changed files with 35 additions and 18 deletions
|
@ -1,6 +1,11 @@
|
|||
#ifndef CONFIG_H_
|
||||
#define CONFIG_H_
|
||||
|
||||
// Olson - POSIX time zone lookup table: https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
|
||||
#define NTP_TIMEZONE "EST5EDT,M3.2.0,M11.1.0" // America/New_York
|
||||
#define NTP_SERVER1 "0.pool.ntp.org"
|
||||
#define NTP_SERVER2 "1.pool.ntp.org"
|
||||
#define NTP_SERVER3 "2.pool.ntp.org"
|
||||
#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
|
||||
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"
|
||||
|
||||
|
|
48
src/main.cpp
48
src/main.cpp
|
@ -3,6 +3,7 @@
|
|||
#include <WiFi.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <AsyncElegantOTA.h>
|
||||
#include <sntp.h>
|
||||
#include "config.h"
|
||||
|
||||
class App {
|
||||
|
@ -61,19 +62,20 @@ public:
|
|||
}
|
||||
void loop() {
|
||||
static constexpr const char* const wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
|
||||
auto dt = M5.Rtc.getDateTime();
|
||||
auto t = time(nullptr);
|
||||
auto tm = localtime(&t);
|
||||
M5.Display.setCursor(0, M5.Display.height() / 3);
|
||||
M5.Display.setFont(&fonts::Orbitron_Light_24);
|
||||
M5.Display.printf("%s\n%04d.%02d.%02d\n"
|
||||
, wd[dt.date.weekDay]
|
||||
, dt.date.year
|
||||
, dt.date.month
|
||||
, dt.date.date
|
||||
, wd[tm->tm_wday]
|
||||
, tm->tm_year + 1900
|
||||
, tm->tm_mon + 1
|
||||
, tm->tm_mday
|
||||
);
|
||||
M5.Display.setFont(&fonts::Orbitron_Light_32);
|
||||
M5.Display.printf("%02d:%02d "
|
||||
, dt.time.hours
|
||||
, dt.time.minutes
|
||||
, tm->tm_hour
|
||||
, tm->tm_min
|
||||
);
|
||||
delay(10000);
|
||||
}
|
||||
|
@ -88,25 +90,35 @@ void setup(void) {
|
|||
M5.begin(cfg);
|
||||
M5.Display.init();
|
||||
M5.Display.setTextSize(3);
|
||||
M5.Display.startWrite();
|
||||
M5.Display.setCursor(0, M5.Display.height() / 2);
|
||||
M5.Display.setCursor(0, M5.Display.height() / 4);
|
||||
M5.Display.printf("Starting up...");
|
||||
M5.Display.endWrite();
|
||||
|
||||
M5.Display.print("Connecting to WiFi");
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
||||
Serial.println("");
|
||||
M5.Display.println("");
|
||||
|
||||
// Wait for connection
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
M5.Display.print(".");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.print("Connected to ");
|
||||
Serial.println(WIFI_SSID);
|
||||
Serial.print("IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
M5.Display.println("");
|
||||
M5.Display.print("Connected to ");
|
||||
M5.Display.println(WIFI_SSID);
|
||||
M5.Display.print("IP address: ");
|
||||
M5.Display.println(WiFi.localIP());
|
||||
|
||||
M5.Display.print("Syncing time");
|
||||
configTzTime(NTP_TIMEZONE, NTP_SERVER1, NTP_SERVER2, NTP_SERVER3);
|
||||
while (sntp_get_sync_status() != SNTP_SYNC_STATUS_COMPLETED) {
|
||||
M5.Display.print('.');
|
||||
delay(1000);
|
||||
}
|
||||
M5.Display.println("");
|
||||
time_t t = time(nullptr)+1; // Advance one second.
|
||||
while (t > time(nullptr)); /// Synchronization in seconds
|
||||
M5.Rtc.setDateTime( gmtime( &t ) );
|
||||
|
||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
|
||||
request->send(200, "text/plain", "Hi! I am ESP32.");
|
||||
|
@ -114,7 +126,7 @@ void setup(void) {
|
|||
|
||||
AsyncElegantOTA.begin(&server); // Start ElegantOTA
|
||||
server.begin();
|
||||
Serial.println("HTTP server started");
|
||||
M5.Display.println("HTTP server started");
|
||||
|
||||
app = new Clock;
|
||||
current_app = App::Clock;
|
||||
|
|
Loading…
Reference in a new issue