Pool.ntp.org Datum (Jahr)

Hallo

Ich habe letzte Woche meinen ersten Arduino (ESP32) bekommen und spiele jetzt ein bißchen damit rum. Ich schaue mir Tutorials an und versuche, die nachzustellen.

Eines der Tutorials hat den Bezug von Datum und Uhrzeit über pool.nto.org beschrieben. Soweit so gut, ich bekomme jedoch das Jahr 2055 geliefert. Was könnte das Problem sein? Kennt das jemand?

Hier das Programm

import network, usocket, ustruct, utime

TIMESTAMP = 2208988800

# Create new socket
client = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
client.bind(("", 8080))
client.settimeout(3.0)

# Get addr info via DNS
addr = usocket.getaddrinfo("pool.ntp.org", 123)[0][4]

# Send query
client.sendto('\x1b' + 47 * '\0', addr)
data, address = client.recvfrom(1024)

# Print time
t = ustruct.unpack(">IIIIIIIIIIII", data)[10] - TIMESTAMP
print ("Year:%d Month:%d Day:%d Time: %d:%d:%d" % (utime.localtime(t)[0:6]))


# Close socket
client.close()

Beste Dank, und noch ein schönes Wochenende.

Matthias

Manche Implementierungen beginnen die Epoche mit 1970, manche mit 2000.

Das ist kein Arduino C++.
Woher sind die Abhängigkeiten?

Hast Du Dir mal das Bild zu dem Beispiel angesehen? Dort wird auch eine koplett verkehrte Zeit zurückgeliefert:


:roll_eyes:

was leifert Dir denn der sketch von ESP32 NTP Client-Server: Get Date and Time (Arduino IDE) | Random Nerd Tutorials zurück?

Würde dann die 30 Jahre Unterschied erklären. Ich kannte bisher immer nur die Version mit 1.1.1970

Vielen Dank für die superschnellen und hilfreichen Antworten!

Jetzt habe ich das verstanden.
Die 2208988800 sind die Sekunden zwischen 1.1.1900 und 31.12.1969. Mit Hilfe von Excel habe ich mir dann die Sekunden bis zum 31.12.1999 ausgerechnet: 3155673600

Und schon geht das!

Danke für die Hilfe!

Beste Grüße, Schönen Sonntag noch

Matthias

P.S.: Das Tutorial liefert auch das falsche Jahr, das hatte ich auch gerade gesehen. Sollte eigentlich in einem Tutorial nicht passieren....

welches?

Die NTP-Server liefern immer auf Basis 1970, das liegt hier am µPython, wie in #2 schon angedeutet:

Nein, nicht falsch, sondern unvollständig.
Es berücksichtigt nicht, dass der von einem NTP-Server geholte Wert nicht mit der Interpretation in der utime Library übereinstimmt - was den Anfang der Zeit angeht.

Wie auch immer, ich habe es jetzt verstanden und konnte das Problem lösen. Das ist ja schonmal gut!

Mit dem Tutorial meinte ich das von Mono weiter oben zitierte.

Besten Dank nochmal an alle.

kannst du es bitte verlinken?

Ich bin mal so frei, hier auf der Seite:
https://docs.arduino.cc/micropython/micropython-course/course/internet-of-things/

Abschnitt: Exercise 3: Internet Clock

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.