Ich habe eine Uhr Programmiert. Funktioniert auch. Allerdings habe ich eine config.txt Datei auf den spiffs liegen, die im Setup teil gelesen wird. Darin steht auch der ntp Server zu dem verbunden werden soll um die aktuellen Zeitangaben zu holen. Wie kann ich den ntp-server im Setup teil des Programms für den timeclient definieren bzw. ändern?
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
#define NTP_SERVER "de.pool.ntp.org"
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, NTP_SERVER , GTMOffset * 60 * 60, 60 * 60 * 1000);
// You can specify the time server pool and the offset, (in seconds)
// additionaly you can specify the update interval (in milliseconds).
// NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600, 60000);
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
// Hier würde ich gerne einen anderen NTP Server für den timeClient definieren.
timeClient.begin();
}
void loop() {
timeClient.update();
Serial.println(timeClient.getFormattedTime());
delay(1000);
}
de.pool.ntp.org wird oben definiert aber es kann sein das ich nachträglich im setup teil einen anderen ntp-server einstellen möchte (zb der aus der config.txt). Wie kann ich das verwirklichen?
darf ich einfach in den Raum werfen, dass du am ESP8266 keine externe Library für NTP brauchst, dass das der ESP Core alles out of the box könnte? Sogar mit Sommerzeit/Winterzeit?
Habe nun das gleiche Problem mit folgendem Code für die Zeitzone:
TimeChangeRule CEST = { "CEST", Last, Sun, Mar, 2, 120 }; // Central European Summer Time begin
TimeChangeRule CET = { "CET ", Last, Sun, Oct, 3, 60 }; // Central European Standard Time begin
Timezone CE(CEST, CET);
Und zwar kann man in den Optionen der Uhr die Sommerzeitumstellung deaktivieren (falls sie mal abgeschafft wird). Dachte mir, dass ich das am einfachsten mit Timezone CE(CET, CET); realisiere. Aber das müsste ich wieder im Setup teil machen und somit ist CE dann nicht global. Gibt es dafür auch eine Lösung?
Darf man Fragen für was man das gebrauchen kann.
Steckt da ein Sinn dahinter oder ist das nur zum üben?
Man kann in den Optionen der Uhr den ntp Server ändern. Mir war nicht klar wie ich diese Änderung ausführe. Oder was meinst du?
darf ich einfach in den Raum werfen, dass du am ESP8266 keine externe Library für NTP brauchst, dass das der ESP Core alles out of the box könnte? Sogar mit Sommerzeit/Winterzeit?
Danke für die Info. Werde ich das nächste mal berücksichtigen. Habe mir den Link gespeichert. Aber jetzt bau ich deswegen nicht alles extra wieder um. Bin eigentlich fertig wenn ich das Problem gelöst habe.
Habe einiges dazu gelernt mit diesem Projekt und darum geht es mir auch.
Die library die ich derzeit verwende ist eigentlich auch einfach.
Das was du verlinkt hast, sieht auch einfach aus. Werde es auf jeden Fall beim nächsten mal verwenden.
Finde es aber auch wichtig Probleme zu lösen, davon lernt man ja schließlich auch. Ein derartiges Problem könnte jederzeit wieder auftreten. Daher wüsste ich gerne wie man es löst.
Hier nochmal das Problem:
Habe nun das gleiche Problem mit folgendem Code für die Zeitzone:
TimeChangeRule CEST = { "CEST", Last, Sun, Mar, 2, 120 }; // Central European Summer Time begin
TimeChangeRule CET = { "CET ", Last, Sun, Oct, 3, 60 }; // Central European Standard Time begin
Timezone CE(CEST, CET);
Und zwar kann man in den Optionen der Uhr die Sommerzeitumstellung deaktivieren (falls sie mal abgeschafft wird). Dachte mir, dass ich das am einfachsten mit Timezone CE(CET, CET); realisiere. Aber das müsste ich wieder im Setup teil machen und somit ist CE dann nicht global. Gibt es dafür auch eine Lösung?