Forum: Projekte & Code GPS-Uhr & NTP-Server auf einem ESP32-P4


von Uwe B. (boerge) Benutzerseite


Angehängte Dateien:

Lesenswert?

Moin,

ich habe gerade den aktuellen Stand meines derzeitigen Projektes auf 
github.com geladen und dachte, dass es vielleicht auch etwas für hier 
ist, um darüber zu diskutieren etc.:

https://github.com/boerge42/GPS-Clock-NTP-Server

Es handelt sich um eine Uhr auf einem ESP32, welche die Uhrzeit über ein 
GPS-Modul erhält. Da durch die Auswertung des PPS-Signals, das ebenfalls 
vom GPS-Modul generiert wird, eine recht genaue Synchronisation der 
Uhrzeit erfolgt, ist daraus auch ein kleiner NTP-Server (theoretisch 
Stratum 1) entstanden (deshalb auch ein ESP32-P4-ETH als Grundlage).

Die Ausgabe von Datum/Uhrzeit auf einem OLED (siehe Anhang) ist nicht 
sonderlich innovativ. Im Vordergrund standen da andere Informationen, 
die platzsparend und kompakt angezeigt werden sollten...

Ich würde mich freuen, wenn eine kleine und gewinnbringende Diskussion 
entsteht. Coole Ideen und Anregungen sind willkommen!

Uwe
von Frank D. (Firma: LAPD) (frank_s634)


Lesenswert?

Gähn, das ist ja mal ganz was neues.
von Manfred P. (pruckelfred)


Lesenswert?

Uwe B. schrieb:
> NTP-Server (theoretisch Stratum 1)

Aber nur in der Nacht während eines Traumes.
von Bauform B. (bauformb)


Lesenswert?

Nun, es gibt viele Theorien... eigentlich sieht es doch so aus: NIST = 
0, Satellit = 1, GPS-Empfänger = 2, ESP = 3. Nur wegen GPS != NTP 
bekommen alle einen Bonus? Aber auch mit Bonus gibt es maximal eine 2.
von Uwe B. (boerge) Benutzerseite


Lesenswert?

Manfred P. schrieb:
> Aber nur in der Nacht während eines Traumes.

Bauform B. schrieb:
> Nun, es gibt viele Theorien... eigentlich sieht es doch so aus: NIST =
> 0, Satellit = 1, GPS-Empfänger = 2, ESP = 3. Nur wegen GPS != NTP
> bekommen alle einen Bonus? Aber auch mit Bonus gibt es maximal eine 2.

Naja, die Vergabe des Stratum ist eigentlich recht eindeutig geregelt 
und keine Ermessensfrage. Vielleicht nochmal nachlesen?


...vielleicht kommt diese Skepsis am "Stratum 1" auch von der Annahme, 
dass ein selbstgebauter NTP-Server nicht ausreichend genau/stabil ist? 
Ich behaupte mal, dass meine Implementierung schon mal nicht ganz so 
schlecht ist. Verbesserungen sind immer möglich und u.a. darüber wollte 
ich gern hier diskutieren.

Uwe
: Bearbeitet durch User
von Thomas W. (Gast)


Lesenswert?

Uwe B. schrieb:

> Ich würde mich freuen, wenn eine kleine und gewinnbringende Diskussion
> entsteht. Coole Ideen und Anregungen sind willkommen!

Uwe, -

meine Kommentare:

- Verlinke/Kopiere den Quellcode der verwendeten Bibliotheken (oder den 
verwendeten Stand) in der von Dir verwendeten Version. Bibliotheken 
werden weiter entwickelt und manchmal sind breaking-Changes nicht zu 
vermeiden. Und dann kann Dein Code nicht mehr kompiliert werden.

- Hinweis auf die verwendete Arduino-Version.

- Kommentare sind auf deutsch.

- Schaltplan fehlt. Ein PDFchen ist manchmal sehr hilfreich.

- Sehr schoenes Bildchen ueber das Zusammenspiel der Tasks und der 
Queues und Interrupts bei RTOS.

- Verwendete Lizenz fehlt.

Das ganze Projekt ist eigentlich ein sehr schoenes Beispiel warum 
Arduino so erfolgreich war. Mal sehen, wie sich die Zusammenarbeit 
community <-> Qualcomm in den naechsten Jahren entwickelt.
von Uwe B. (boerge) Benutzerseite


Lesenswert?

Hallo Thomas,

danke für die Hinweise/Anmerkungen...

Thomas W. schrieb:
> - Verlinke/Kopiere den Quellcode der verwendeten Bibliotheken (oder den
> verwendeten Stand) in der von Dir verwendeten Version. Bibliotheken
> werden weiter entwickelt und manchmal sind breaking-Changes nicht zu
> vermeiden. Und dann kann Dein Code nicht mehr kompiliert werden.
>
> - Hinweis auf die verwendete Arduino-Version.

...ich habe jetzt im Quelltext-Kopf entsprechende Informationen als 
Kommentar hinterlegt
>
> - Schaltplan fehlt. Ein PDFchen ist manchmal sehr hilfreich.

ok, nicht so umfangreich/kompliziert, aber ich habe ein kleines Bildchen 
in die README eingebunden (der Anbieter, des verwendeten 
Zeichenprogramms hat sich mit einem präsenten Wasserzeichen verewigt...)

> - Verwendete Lizenz fehlt.

...habe ich bisher noch nie bei meinen Projekten gemacht, aber warum 
nicht; zu mindesten muss man bei der Auswahl der Lizenz mal darüber 
nachdenken, was für einen "go"/"no go" ist... und habe eine passende 
ausgewählt.

Uwe
: Bearbeitet durch User
von Uwe B. (boerge) Benutzerseite


Lesenswert?

...aber mal was inhaltliches:

Welche Vorschläge habt ihr, um "meinen" NTP-Server mit anderen Servern 
zu vergleichen?

ntpdate -q <IP>  --> kenne ich.

Mich interessiert aber z.B., ob mein Server tatsächlich synchron zu 
anderen NTP-Servern ist. Dazu müsste man eigentlich ein paar Server 
"gleichzeitig" abfragen bzw. den entsprechenden Zeitversatz ins Ergebnis 
einberechnen. Hat jemand eine Idee?

Danke Uwe
von Bauform B. (bauformb)


Lesenswert?

Uwe B. schrieb:
> Mich interessiert aber z.B., ob mein Server tatsächlich synchron zu
> anderen NTP-Servern ist. Dazu müsste man eigentlich ein paar Server
> "gleichzeitig" abfragen bzw. den entsprechenden Zeitversatz ins Ergebnis
> einberechnen.

Auf einem RPi oder einen normalen PC mit Debian reicht "apt install 
ntpsec". Dann läuft der "offizielle" ntpd und fragt ca. ein Dutzend 
Server im Internet ab. Nach ein einer halben Stunde (oder so) bekommt 
man mit "ntpq -pn" so eine Liste:
1
     remote           refid      st t when poll reach   delay   offset  jitter
2
==============================================================================
3
+212.18.3.19     212.18.1.106     2 u  175  256  377    4.627    2.870   2.398
4
-90.187.112.137  237.17.204.95    2 u  218  256  377   20.901   -2.089   2.222
5
-5.45.97.204     195.145.119.188  2 u  164  256  377   17.170   -2.183   3.293
6
+78.47.56.71     129.134.28.123   2 u   52  256  377    7.675   -0.538   2.761
Dann hängt man den ESP32 ins gleiche Netz und trägt seine IP-Adresse in 
/etc/ntpsec/ntp.conf ein, nach den "pool"-Zeilen, ungefähr so: "server 
192.168.1.42". Anschließend taucht der ESP gleichberechtigt in der 
ntpq-Liste auf. Sein jitter müsste eigentlich deutlich kleiner sein als 
hier bei meinem DSL-Internet.

Edit: die Liste ist gekürzt und ausgerechnet die Zeile mit dem * fehlt 
jetzt :(
: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Uwe B. schrieb:
> ok, nicht so umfangreich/kompliziert, aber ich habe ein kleines Bildchen
> in die README eingebunden (der Anbieter, des verwendeten
> Zeichenprogramms hat sich mit einem präsenten Wasserzeichen verewigt...)

Das ist leider kein Schaltplan, das sind nur ein paar bunte Striche.

Bei einem Schaltplan wären die Signale beschriftet, so daß man sich 
nicht die Anschlussbelegungen aller beteiligten Platinen raussuchen und 
nachsehen muss.

Schließlich könnte jemand ja auch auf die Idee kommen, das ganze mit 
einer anderen ESP32-Platine nachzubauen.

Fass' das jetzt aber bitte nicht als kompletten Verriss Deines Projektes 
auf - die Idee an sich finde ich reizvoll.
von Rainer W. (rawi)


Lesenswert?

Bauform B. schrieb:
> Nach ein einer halben Stunde (oder so) bekommt
> man mit "ntpq -pn" so eine Liste:
>     remote      refid      st t when poll reach   delay   offset  jitter
> ...
> +212.18.3.19     212.18.1.106     2 u  175  256  377    4.627    2.870
> 2.398

Was sind denn das für unvollständige Angaben?
So simple Dinge wie "delay" oder "jitter" sind Zeitangaben, die als 
physikalische Größen auch einer Einheit bedürfen.

Das sollte eigentlich jedem, der nicht nur lernt, seinen Namen zu 
tanzen, in der Schule eingetrichtert worden sein.
von Bauform B. (bauformb)


Lesenswert?

Harald K. schrieb:
> Das ist leider kein Schaltplan, das sind nur ein paar bunte Striche.
>
> Bei einem Schaltplan wären die Signale beschriftet, so daß man sich
> nicht die Anschlussbelegungen aller beteiligten Platinen raussuchen und
> nachsehen muss.

Formal hast du natürlich Recht, aber für die Zielgruppe ist dieses bunte 
Bild optimal. Und speziell dieses hier ist doch wirklich gut. Man könnte 
natürlich auch in so einem Bild die Signalnamen dran schreiben. Aber bei 
RX und TX hilft dir das auch nicht viel :)

Mit einem normalen Schaltplan müsste der Anwender auch die 
Anschlussbelegung raussuchen, nur in der umgekehrten Richtung. Und 
manchmal sind die Pin-Nummern nicht eindeutig, dank WiringPi (oder wer 
hat das verbrochen?).

Hab' ich jetzt gerade Arduino in Schutz genommen? So kenne ich mich 
garnicht ;)

Harald K. schrieb:
> Fass' das jetzt aber bitte nicht als kompletten Verriss Deines Projektes
> auf - die Idee an sich finde ich reizvoll.

Unterschreib! Das Projekt spielt auf jeden Fall in einer anderen Liga.
von Bauform B. (bauformb)


Lesenswert?

Rainer W. schrieb:
> So simple Dinge wie "delay" oder "jitter" sind Zeitangaben, die als
> physikalische Größen auch einer Einheit bedürfen.
> ...Schule...

Das Format hat sich ein Professor¹ ausgedacht, gewöhnliche Schüler 
können da nicht mitreden.

1) https://en.wikipedia.org/wiki/David_L._Mills
von Thomas W. (Gast)


Lesenswert?

Bauform B. schrieb:
> Harald K. schrieb:
>> Fass' das jetzt aber bitte nicht als kompletten Verriss Deines Projektes
>> auf - die Idee an sich finde ich reizvoll.
>
> Unterschreib! Das Projekt spielt auf jeden Fall in einer anderen Liga.

Auch die Ausfuehrung (mit Tasks und Semaphores) und eine 
Interrupt-Routine ist sehr gut geloest.
von Rainer W. (rawi)


Lesenswert?

Bauform B. schrieb:
> Das Format hat sich ein Professor¹ ausgedacht, gewöhnliche Schüler
> können da nicht mitreden.

Auch für den sollte es ein Leichtes sein, in den Spaltenüberschriften 
ein "delay/ms", "jitter/ms" oder in welche Einheit auch immer die Größen 
angegeben werden, unterzubringen, damit man nicht erst sonst wo 
recherchieren muss, um die Bedeutung der Zahlen zu erfahren.
: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

Aber dann wäre die geheime Linuxelite ja keine verschworene geheime 
Linuxelite mehr....

Was bedeutet denn das +/- vorn, und st, t, when, poll und reach sind 
auch unerklärlich.
Und natürlich fehlt die Einschätzung wie sich die ESP-Maschine 
schlägt...
von Uwe B. (boerge) Benutzerseite


Lesenswert?

Moin,

Jens M. schrieb:
> Aber dann wäre die geheime Linuxelite ja keine verschworene
> geheime
> Linuxelite mehr....
>
> Was bedeutet denn das +/- vorn, und st, t, when, poll und reach sind
> auch unerklärlich.

RTFM bzw. befrage eine der zahlreichen KIs...

> Und natürlich fehlt die Einschätzung wie sich die ESP-Maschine
> schlägt...

kommt demnächst, wenn ich ein entsprechendes Python-Script, auf Basis 
ntplib, "vorzeigewürdig" habe!

Grüße Uwe
von Lu (oszi45)


Lesenswert?

GPS-Uhr ist natürlich interessant, sofern GPS zuverlässiger als DCF77 
funktioniert, man sollte trotzdem die Plausibilität aller Empfänger 
gründlich prüfen und gegen Spoofing sichern, nachdem man so hört, was 
alles gefälscht wird. Durch Schaden wird man klüger. Ein kaputtes 
DCF-Impulstelegramm hat mir schon viel Ärger eingebracht.
von Norbert (der_norbert)


Lesenswert?

Jens M. schrieb:
> Aber dann wäre die geheime Linuxelite ja keine verschworene geheime
> Linuxelite mehr....

Das muss aber geheime Unix-Elite heißen.
Aus der hat sich dann die geheime Linux-Elite gebildet.
Das letzte Wort des vorherigen Satzes ist wörtlich zu verstehen, die 
können nämlich man-pages und RFCs lesen. ;-)
von Jens M. (schuchkleisser)


Lesenswert?

Lu schrieb:
> Ein kaputtes
> DCF-Impulstelegramm hat mir schon viel Ärger eingebracht.

Wie dieses?

Uwe B. schrieb:
> RTFM

Tja, peinlich das man das muss, weil "jitter" ja auch ohne einheit da 
steht.
Ein vernünftiged Progrmm mit GUI hätte ein erklärendes Mouseover & Platz 
für Einheiten... :D

Norbert schrieb:
> die
> können nämlich man-pages und RFCs lesen

NEEEEEEERD
von Bauform B. (bauformb)


Lesenswert?

Seit ein paar Jahren ist das garnicht mehr geheim, selbst normal 
Sterbliche können das jetzt auf ihrem Telefon lesen:

https://ntpsec.org/documentation.html
von Norbert (der_norbert)


Lesenswert?

Bauform B. schrieb:
> selbst normal
> Sterbliche können das jetzt auf ihrem Telefon lesen:

Na ja, ich kann auch antike tibetische Schrift aus dem 7. Jahrhundert 
sehen. Lesen kann ich sie allerdings nicht. ;-)
von Rainer W. (rawi)


Lesenswert?

Lu schrieb:
> GPS-Uhr ist natürlich interessant, sofern GPS zuverlässiger als DCF77
> funktioniert

GPS ist weltweit verfügbar und erheblich genauer, sofern die Antenne die 
Satelliten halbwegs vernünftig sieht.

Von ordentlich implementiertem Spoofing ist DCF77 genauso betroffen wie 
GPS. Nur stehen bei DCF77-Spoofing die Chancen ungleich besser, dass es 
unattraktiv ist, weil sich kaum jemand dafür interessieren würde.
: Bearbeitet durch User
von Dieter S. (ds1)


Lesenswert?

Schon einmal überlegt wie groß/aufwändig eine Anlage zum 
Spoofing/Jamming im Langwellenbereich sein müsste, zumindest wenn es um 
mehr als nur einen kleinen Bereich geht?

Andere haben sich dazu bereits Gedanken gemacht, z.B. bei GNSS versus 
LORAN.
: Bearbeitet durch User
von Uwe B. (boerge) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jens M. schrieb:
> Und natürlich fehlt die Einschätzung wie sich die ESP-Maschine
> schlägt...

Uwe B. schrieb:
> kommt demnächst, wenn ich ein entsprechendes Python-Script, auf Basis
> ntplib, "vorzeigewürdig" habe!

mittlerweile gibt es dieses "geheimnisvolle" Python-Script (siehe 
Anhänge)...
10.1.149 --> ist der ESP32-NTP-Server, um den es hier geht
timepi --> ist ein RPi (Zero 2W), ebenfalls mit GPS-Modul/PPS/Chrony 
etc.
fritz.box --> ist der (eingeschaltete) Zeitserver meines 
Internet-Routers
...der Rest der NTP-Server ist selbstsprechend ;-)...

Aber eigentlich stellt sich doch die Frage, was mit "...Und natürlich 
fehlt die Einschätzung wie sich die ESP-Maschine schlägt..." gemeint 
ist!

Liefert die ESP-Kiste die richtige Zeit?
Vermutlich, wenn man sich den "offset" der lokalen Zeit zu den einzelnen 
NTP-Servern ansieht. "Vermutlich", die Tendenz stimmt und wir bewegen 
uns bei allen Servern im einstelligen Millisekunden-Bereich. Es sind 
jeweils nur "Einmal-Messungen" und das Ergebnis "NTP-Zeit" ist stark 
abhängig von den Latenzen im Übertragungsweg Request/NTP-Server/Answer. 
Ok, man könnte den Jitter messen, vermutlich wird man dabei feststellen 
--> passt, wenn man keinen "groben" Fehler bei der Synchronisation der 
Uhr auf dem NTP-Servers gemacht hat.
(Zu dem Punkt experimentiere ich gerade noch etwas am Regler-Verhalten 
in task_adjtime (siehe auch TODO.md im Repository...). Ideen sind 
herzlich willkommen!)

Spannender ist doch eigentlich die Frage:
Was sind denn nun wirklich die Qualitätsmerkmale eines 
Stratum-1-NTP-Servers?
Ideen/Meinungen?

Grüße Uwe

PS.:
Precision, root_delay, root_dispersion könnten es sein, werden aber bei 
mir mit, zur Hardware passenden, Werten hart gesetzt.
Ok, "root_dispersion" könnte man noch in Abhängigkeit des 
vorhandenen/ausbleibenden PPS-Signals berechnen...
: Bearbeitet durch User
von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Uwe B. schrieb:
> Spannender ist doch eigentlich die Frage:
> Was sind denn nun wirklich die Qualitätsmerkmale eines
> Stratum-1-NTP-Servers?

Wohl wahr.

Es gibt diverse Hochschulen und Universitäten, die für ihre Zeitserver 
Stratum 1 behaupten, ebenso Telekom.

Die Tabelle unter
https://www.hullen.de/helmut/filebox/DCF77/ntpsrvr.html
scheint noch zu passen, deren Verfasser ist schon lange beerdigt.

Um Zeiten zu vergleichen, nutze ich "NTP Monitor" vom Dave Taylor aus 
GB. Es ist leider zu befürchten, dass auch der nicht mir in unserer Welt 
ist. Lässt sich nicht direkt verlinken:
http://www.satsignal.net/
wähle "David's Page"
klicke "Software"
wähle "Net Tools"

Das läuft hier auch unter Win10.
von Uwe B. (boerge) Benutzerseite


Lesenswert?

Manfred P. schrieb:
> deren Verfasser ist schon lange beerdigt.

boah, Helmut habe ich mal persönlich kennengelernt, wusste aber nicht, 
dass..., :-(

...aber zurück zum Thema! Ich bin gespannt auf eure 
Meinungen/Ideen/Kommentare...

Uwe
von Lu (oszi45)


Angehängte Dateien:

Lesenswert?

Manfred P. schrieb:
> http://www.satsignal.net/
> wähle "David's Page"
> klicke "Software"
> wähle "Net Tools"

Wirklich interessant. Habe mal paar Pfeile angebracht zur Übersicht.
von Jens M. (schuchkleisser)


Lesenswert?

Bacchus, Wotan, Odin und Hermes?

Uwe B. schrieb:
> Aber eigentlich stellt sich doch die Frage, was mit "...Und natürlich
> fehlt die Einschätzung wie sich die ESP-Maschine schlägt..." gemeint
> ist!

Na, genau was du gemacht hast, mit einer Einschätzung für Deppen wie 
mich.
Ich lese, das dein ESP eine zum Router vergleichbare 
Qualität/Genauigkeit liefert, was mich ein wenig grübeln lässt.
Einerseits ist die Fritze Stratum 4 (warum eigentlich? An einen 
vernünftigen Server a la ptbtime1.ptb.de gehängt wäre sie 2), aber 
andersrum ist der ESP für solcherlei Präzisionsanwendungen gar nicht 
geeignet bzw. gedacht.
Aber das Ergebnis dürfte dennoch für 99,999% aller Nutzer ausreichend 
sein.
Danke also für's teilen!

Uwe B. schrieb:
> Was sind denn nun wirklich die Qualitätsmerkmale eines
> Stratum-1-NTP-Servers?

Das ist doch reichlich ausführlich dokumentiert...
Aber ob deine Interpretation einer direkten Anbindung an eine 
Primärzeitquelle allgemein anerkannt ist?
Ich würde darunter verstehen, das der Prozessor seinen Puls direkt von 
einem Normal bekommt.
Du hast mehrere Satelliten und die unbekannte, undokumentierte & 
unbeeinflussbare Software im GPS-Modul sowie ein binary blob von 
Espressif mit ebenfalls nur erahnbaren Funktionen & Timings dazwischen, 
das ist in meinen Augen nicht mehr direkt.
Ja, GPS wird benutzt um 10MHz via PPS genau abzugleichen, aber das ist 
m.E. relativ, also "eine Sekunde dauert 1000,000ms" und nicht "Beim 
nächsten Puls ist es 8 Uhrrr 41 Minuhten 55,000 Sekunden - blip".
Viele Leute nehmen GPS für Uhren (also ist es für menschliche Anzeige 
genau genug) statt DCF, aber ist es offiziell mit einer spezifizierten 
Genauigkeit an einem Ort verfügbar? Das wäre mir neu... Aber ich lerne 
gerne dazu.

Von diesem Standpunkt her wundert mich aber, wie genau deine ESP-Kiste 
ggü. offiziellen Zeitservern ist, zumindest wenn ich die Tabelle richtig 
deute.
Das Teil ist mindestens so gut wie ein beliebiger Router mit beliebigem 
NTP-Upstream.
Respekt!
: Bearbeitet durch User
von Uwe B. (boerge) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jens M. schrieb:

> Einerseits ist die Fritze Stratum 4 (warum eigentlich? An einen
> vernünftigen Server a la ptbtime1.ptb.de gehängt wäre sie 2)

hat mich auch gerade gewundert, und habe mal nachgesehen...: es war 
2.europe.pool.ntp.org (o.ä.) konfiguriert. Ich habe jetzt 
de.pool.ntp.org eingestellt.

Jetzt fällt aber was anderes lustiges auf, siehe Anhang:
* de.pool.ntp.org sagt, er wäre Stratum 2 --> ok, mag sein...
* mein Router meint, er wäre auch Stratum 2 --> nö, er müsste dann 
Stratum 3 sein!

Grüße Uwe
: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

Uwe B. schrieb:
> nö, er müsste dann Stratum 3 sein!

Gut möglich das jetzt wieder ein "Plasterouter sind scheiße, und die 
Stümper bei AVM haben das in der Firmware verpfuscht, wie so vieles 
andere auch!!!eins!!elf!!" kommt.
Wetten?
3...2...1...
von B. W. H. (kormorix)


Lesenswert?

Frank D. schrieb:
> Gähn, das ist ja mal ganz was neues.

So einen Beitrag kannst Du Dir sparen!
Solche Leute wie Du sind die Totengräber jeglicher Initiativen, die der 
Allgemeinheit zugute kommen. Schäm Dich!

An den TO: vielen Dank, daß Du Deine ARBEIT mit uns teilst! Ohne Leute 
wie Dich wäre der Spaß an unserem Hobby oder beim Einen oder Anderen 
auch an dieser Arbeit nicht so groß!

Es bedankt sich kormorix
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.