ESP8266 Uhrzeit von Zeitserver ermitteln
In diesem Artikel zeige ich Dir, wie Du mit einem ESP8266 oder Arduino-Mikrocontroller die aktuelle Uhrzeit von einem Zeitserver ermitteln kannst.
Für ein ESP8266-Projekte musste ich die aktuelle Uhrzeit ermitteln. Da ich für das Projekt keine zusätzliche Hardware verbauen wollte, entschied ich mich dafür eine einfache Zeit-Ermittlung über einen Zeit-Server zu implementierten. Die Arduino-Umgebung stellt hierfür bereits eine integrierte Bibliothek zur Verfügung, mit der diese Ermittlung einfach umgesetzt werden kann. Im folgenden Code-Beispiel zeige ich Dir, wie Du die Uhrzeit und das Datum auslesen kannst.
#include <ESP8266WiFi.h>
#include <time.h>
WiFiClient espClient;
const char* wifi_ssid = "<WIFI-SSID>";
const char* wifi_password = "<WIFI-PWD>";
char tmp[50];
char time_value[20];
void setup() {
Serial.begin(9600);
// WIFI-Verbindung aufbauen
WiFi.begin(wifi_ssid, wifi_password);
// Aktuelle Uhrzeit über den Zeit-Server ermitteln
configTime(2 * 3600, 0, "0.de.pool.ntp.org", "ptbtime1.ptb.de");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
delay(1000);
}
void loop() {
time_t now = time(nullptr);
String time = String(ctime(&now));
time.trim();
time.substring(0,19).toCharArray(time_value, 20);
Serial.print("Uhrzeit: ");
Serial.println(time_value);
delay(5000);
}
Update 25.01.2021:
Die Zeile 28 muss so lauten:
String time = String(ctime(&now));
Ich hoffe Dir gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂
Es kommt eine Fehlermeldung: ‚amp‘ was not declared in this scope
(Zeile 29)
Sorry, ein Fehler in einem Plugin der Webseite. Die Zeile 28 muss so lauten:
String time = String(ctime(&now));
LG Matthias
Kleiner Tipp,
wenn man configTime() zusammenbaut, kann man anstelle des Offsets von 2*3600 Sekunden auch die timezone angeben. Beispiel für Berlin (CET-1CEST,M3.5.0,M10.5.0/3).
https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv