zuverlässigen NTP Code

(deleted)

Hallo,

welcher Controller , eventuell ein esp ?

Heinz

(deleted)

Hallo,

versuche mal das . Ist im Wesentlichen das was ich sonst so dafür nutze. Ist auch nicht von mir ich denke lauft aber als standard für den ESP und habs irgendwo her . Ist eigendlich so nur eine Testsketch, muss letzlich im loop noch was mit millis rein damit das delay raus fliegt.

#include <ESP8266WiFi.h>
#include <time.h>

const char* ssid = "xxx";
const char* password = "yyyyy";

int year;
byte month, day, hour, minute, second;

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("\nConnecting to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  configTime(0,0,"192.168.178.1");  // locale Fritzbox 
  //configTime(0, 0, "pool.ntp.org", "time.nist.gov");
  // setenv("TZ", "GMT0BST,M3.5.0/01,M10.5.0/02",1);
 
  setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1);  // locale Zeit einstellen mit Sommerzeit

  Serial.println("\nWaiting for time");
  while (!time(nullptr)) {
    Serial.print(".");
    delay(1000);
  }



  Serial.println("");
}

void loop() {

  readtime();
  Serial.printf("%02u-%02u-%4u\n", day, month, year);
  Serial.printf("%02u:%02u:%02u\n", hour, minute, second);
  delay(1000);
}
// Datum und zeit auslesen
void readtime() {
  time_t now = time(nullptr);
  struct tm*timeinfo;
  time(&now);
  timeinfo = localtime(&now);
  year = 1900 + timeinfo->tm_year;
  month = 1 + timeinfo->tm_mon;
  day = timeinfo->tm_mday;
  hour = timeinfo->tm_hour;
  minute = timeinfo->tm_min;
  second = timeinfo->tm_sec;


}

(deleted)

configTime(0,0,"192.168.178.1"); // locale Fritzbox

Wenn deine Fritzbox diese IP hat, ja.

configTime(0, 0, "fritz.box"); // locale Fritzbox

Besser so aufrufen.

Gruß Fips

Hat diese Version der ESP-Timelib immer noch den Bug, dass sie bei Nichterreichbarkeit des NTP-Servers eine beliebige aber formal gültige Zeit liefert, man einen Fehler also nicht erkennen kann?

Gruß Tommy

Hallo,

ich hab da auch schon von gehört , es gab hier im Forum vor einiger Zeit mal ein Thema dazu.

bin da nicht sicher, hab auch nie was festgestellt. Allerdings benuzte ich immer die Fritzbox , wenn die nicht da ist gibts auch kein Netz. Man müsste eventuell mal einen öffentlichen Server benutzen mit einer falschen Adresse.

Wenn es später nicht zu einem Sync kommt wird das wahrscheinlich keiner bemerken, vermutlich wird nichts neues eingetragen und die interne Uhr läuft ein bischen falsch weiter.

Heinz

Du kannst auch die IP der Fritzbox falsch eingeben.
Bei mir war dann meist eine Zeit vom nächsten Tag da.
Das ist für mich nicht tragbar. Ich nehme deshalb den "alten" NTP-Code (aus der 2.4.2), der null im Fehlerfall zurück gibt und die TimeLib von Paul Stoffregen.

Gruß Tommy

(deleted)