NTP-Server mit GPS-Quelle
Ich wollte schon lange eine vom Internet unabhängige Zeitquelle haben.
Ein erster Versuch, das DCF77-Zeitsignal mit einem Raspberry Pi zu empfangen, war grundsätzlich erfolgreich,
hatte in meinem Fall jedoch einen entscheidenden Nachteil: Das empfangene Signal war nur nach Sonnenuntergang stark genug, um dekodiert werden zu können.
Als Alternative bot sich die Zeitinformation der GPS-Satelliten an.
Basierend auf der Arbeit von Andreas Spiess (github/SensorsIot)
entwickelte ich eine an meine Bedürfnisse angepasste Version eines NTP-Servers auf GPS-Basis.
Beschreibung
Komponenten:
- GPS-Antenne mit SMA-Stecker
- GPS-Modul: Bei dem von mir verwendeten GPS-Modul funktioniert die integrierte Patch-Antenne nicht, was aber egal ist, da ich ohnehin eine externe GPS-Antenne verwende.
- WT32-ETH01: ESP32-Modul mit integrierter Ethernet-Schnittstelle
- PoE-Splitter 5V mit USB-C-Stecker zur Stromversorgung
Um nicht alle Clients direkt auf den ESP32 loszulassen, habe ich noch einen NTP-Server in einem Docker-Container dazwischengeschaltet.
"docker compose" für NTP-Server
services:
ntp:
container_name: ntp
image: cturra/ntp:latest
restart: unless-stopped
ports:
- 123:123/udp
environment:
- TZ=Europe/Vienna
- LOG_LEVEL=0
- NTP_SERVERS="192.168.0.222,bevtime1.metrologie.at,bevtime2.metrologie.at,ts1.univie.ac.at"
ntp:
container_name: ntp
image: cturra/ntp:latest
restart: unless-stopped
ports:
- 123:123/udp
environment:
- TZ=Europe/Vienna
- LOG_LEVEL=0
- NTP_SERVERS="192.168.0.222,bevtime1.metrologie.at,bevtime2.metrologie.at,ts1.univie.ac.at"
192.168.0.222 = IP des GPS-NTP-Servers.
sonstiges
http://192.168.0.222/gps
Liefert eine json-Datei mit den aktuellen Positionsdaten.Links
NTP ServerWikipedia - NTP
Getting NMEA unknown msg*58 and other garbage from my NEO-6M-0-001 GPS module