Dr-Smarthome
Ambitioniertes Mitglied
- 36
Nachdem ich einen Ausfall des Internets für 5 Tage hatte, wurde mir erst bewußt, wie wichtig ein eigener Zeitserver ist.
Unsere Stadt hat gebaut und "versehentlich" Kabel zerstört. Die Reparatur was nach erst 5 Tagen erledigt. In dieser Zeit hatte ich weder TV, noch Internet oder Telefon.
Das Problem:
wie jeder normale Internet-Nutzer habe ich als Zeitserver für die Smarthome-Installation die Fritzbox unter https://fritz.box angegeben.
Nun, wenn kein Internet mehr erreichbar ist, macht die Fritzbox einen Neustart und setzt Datum und Uhrzeit auf 01.01.1970, 00:00 Uhr zurück, und zwar bei jedem Gerät, bei dem die Fritzbox als NTP-Server angegeben wurde.
Natürlich könnte man das auch mit einer günstiger RTC (realtime clock) realisieren, da ich aber eine höchst genaue Uhrzeit will, habe ich das mit einem GPS-Modul realisiert und greife da das PPS (pulse per second) ab.
Man braucht dazu einen Raspberry, ein paar Jumper-Kabel, das .GPS-Modul und eine GPS-Antenne.
Zuerst schließen wir das GPS-Modul wie folgt am Raspberry an:
danach wird RaspianOS auf die SD-Karte geschrieben und eine leere Datei mit dem namen ssh ohne Endung ins Boot-Verzeichnis kopiert.
Um die Installation abzuschließen, müssen wir noch einiges machen:
Update + Installation:
sudo apt update && sudo apt full-upgrade -y && sudo apt install vim pps-tools ntp gpsd gpsd-clients -y
mit sudo raspi-config
das serial interface eingeschalten
locales timezone germany
change to germany
expand filesystem
nach einem Neustart:
sudo nano /boot/config.txt
dtoverlay=pps-gpio,gpiopin=18
hinzufügen
sudo nano /etc/default/gpsd
konfigurieren:
START_DAEMON="true"
USBAUTO="false"
DEVICES="/dev/ttyS0"
GPSD_OPTIONS="-n"
sudo nano /etc/modules
pps-gpio
hinzufügen
neustart
mit
sudo systemctl status gpsd
überprüfen, ob der dienst geladen ist, wenn nicht
sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/
ausführen,
dann nochmal mit
sudo systemctl status gpsd
versuchen.
mit
cgps -s
die GPS-Funktionalität überprüfen
Neustart
mit
sudo lsmod|grep pps
überprüfen, ob die PPS-Module geladen sind.
Korrekte Ausgabe:
pps_ldisc 16384 2
pps_gpio 16384 0
pps_core 20480 3 pps_gpio,pps_ldisc
mit
sudo dmesg|grep pps
überprüfen, ob das PPS-Gerät gefunden wurde.
korrekte Ausgabe:
[ 3.112334] pps_core: LinuxPPS API ver. 1 registered
[ 3.114527] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.129709] pps pps0: new PPS source pps@12.-1
[ 3.132327] pps pps0: Registered IRQ 166 as PPS source
[ 10.106947] pps_ldisc: PPS line discipline registered
[ 10.111550] pps pps1: new PPS source serial0
[ 10.111685] pps pps1: source "/dev/ttyS0" added
Ob das PPS-gerät ordnungsgemäß funktioniert.
ppstest /dev/pps0
mit
sudo nano /etc/ntp.conf
passen wir die ntp.conf an
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list
# Enable this if you want statistics to be logged.
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <pool.ntp.org: Join the NTP Pool!>
server time01.thenetworknerds.ca iburst
server ntp.wien.diakoniewerk.at iburst
server 6.ntp.snails.email iburst
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <AccessRestrictions < Support < NTP>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
######################################################
tinker step 0.4 stepback 0.4 stepfwd 0.4
server 127.127.22.0 minpoll 4 maxpoll 4
fudge 127.127.22.0 refid PPS stratum 0 flag3 1 flag4 1
server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.0 time1 +0.130 refid GPS stratum
######################################################
Nach einem Neustart und dem Start vom NTP-Server
sudo systemctl restart ntp
testen wir unseren neuen Stratum 1 NTP-Server mit
ntpq -c peers -c rv
Ausgabe:
remote refid st t when poll reach delay offset jitter
==============================================================================
oPPS(0) .PPS. 0 l 16 16 377 0.000 0.005 0.002
*SHM(0) .GPS. 2 l 15 16 377 0.000 4.334 3.659
194.50.19.3 .INIT. 16 u - 1024 0 0.000 0.000 0.000
193.170.62.252 .INIT. 16 u - 1024 0 0.000 0.000 0.000
li1487-219.memb .INIT. 16 u 841 1024 0 0.000 0.000 0.000
associd=0 status=01f8 leap_none, sync_pps, 15 events, no_sys_peer,
version="ntpd 4.2.8p12@1.3728-o (1)", processor="armv7l",
system="Linux/4.19.58-v7+", leap=00, stratum=1, precision=-19,
rootdelay=0.000, rootdisp=1.000, refid=PPS,
reftime=e10020ef.6b549b3f Thu, Aug 15 2019 20:20:31.419,
clock=e10020ef.7ffc20bf Thu, Aug 15 2019 20:20:31.499, peer=58555, tc=4,
mintc=3, offset=0.004137, frequency=-4.528, sys_jitter=0.001907,
clk_jitter=0.003, clk_wander=0.004, tai=37, leapsec=201701010000,
expire=201912280000
Wer sich den originalen Artikel ansehen will: Zeitserver auf dem Raspberry aufsetzen
Unsere Stadt hat gebaut und "versehentlich" Kabel zerstört. Die Reparatur was nach erst 5 Tagen erledigt. In dieser Zeit hatte ich weder TV, noch Internet oder Telefon.
Das Problem:
wie jeder normale Internet-Nutzer habe ich als Zeitserver für die Smarthome-Installation die Fritzbox unter https://fritz.box angegeben.
Nun, wenn kein Internet mehr erreichbar ist, macht die Fritzbox einen Neustart und setzt Datum und Uhrzeit auf 01.01.1970, 00:00 Uhr zurück, und zwar bei jedem Gerät, bei dem die Fritzbox als NTP-Server angegeben wurde.
Natürlich könnte man das auch mit einer günstiger RTC (realtime clock) realisieren, da ich aber eine höchst genaue Uhrzeit will, habe ich das mit einem GPS-Modul realisiert und greife da das PPS (pulse per second) ab.
Man braucht dazu einen Raspberry, ein paar Jumper-Kabel, das .GPS-Modul und eine GPS-Antenne.
Zuerst schließen wir das GPS-Modul wie folgt am Raspberry an:
danach wird RaspianOS auf die SD-Karte geschrieben und eine leere Datei mit dem namen ssh ohne Endung ins Boot-Verzeichnis kopiert.
Um die Installation abzuschließen, müssen wir noch einiges machen:
Update + Installation:
sudo apt update && sudo apt full-upgrade -y && sudo apt install vim pps-tools ntp gpsd gpsd-clients -y
mit sudo raspi-config
das serial interface eingeschalten
locales timezone germany
change to germany
expand filesystem
nach einem Neustart:
sudo nano /boot/config.txt
dtoverlay=pps-gpio,gpiopin=18
hinzufügen
sudo nano /etc/default/gpsd
konfigurieren:
START_DAEMON="true"
USBAUTO="false"
DEVICES="/dev/ttyS0"
GPSD_OPTIONS="-n"
sudo nano /etc/modules
pps-gpio
hinzufügen
neustart
mit
sudo systemctl status gpsd
überprüfen, ob der dienst geladen ist, wenn nicht
sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/
ausführen,
dann nochmal mit
sudo systemctl status gpsd
versuchen.
mit
cgps -s
die GPS-Funktionalität überprüfen
Neustart
mit
sudo lsmod|grep pps
überprüfen, ob die PPS-Module geladen sind.
Korrekte Ausgabe:
pps_ldisc 16384 2
pps_gpio 16384 0
pps_core 20480 3 pps_gpio,pps_ldisc
mit
sudo dmesg|grep pps
überprüfen, ob das PPS-Gerät gefunden wurde.
korrekte Ausgabe:
[ 3.112334] pps_core: LinuxPPS API ver. 1 registered
[ 3.114527] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.129709] pps pps0: new PPS source pps@12.-1
[ 3.132327] pps pps0: Registered IRQ 166 as PPS source
[ 10.106947] pps_ldisc: PPS line discipline registered
[ 10.111550] pps pps1: new PPS source serial0
[ 10.111685] pps pps1: source "/dev/ttyS0" added
Ob das PPS-gerät ordnungsgemäß funktioniert.
ppstest /dev/pps0
mit
sudo nano /etc/ntp.conf
passen wir die ntp.conf an
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list
# Enable this if you want statistics to be logged.
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <pool.ntp.org: Join the NTP Pool!>
server time01.thenetworknerds.ca iburst
server ntp.wien.diakoniewerk.at iburst
server 6.ntp.snails.email iburst
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <AccessRestrictions < Support < NTP>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
######################################################
tinker step 0.4 stepback 0.4 stepfwd 0.4
server 127.127.22.0 minpoll 4 maxpoll 4
fudge 127.127.22.0 refid PPS stratum 0 flag3 1 flag4 1
server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.0 time1 +0.130 refid GPS stratum
######################################################
Nach einem Neustart und dem Start vom NTP-Server
sudo systemctl restart ntp
testen wir unseren neuen Stratum 1 NTP-Server mit
ntpq -c peers -c rv
Ausgabe:
remote refid st t when poll reach delay offset jitter
==============================================================================
oPPS(0) .PPS. 0 l 16 16 377 0.000 0.005 0.002
*SHM(0) .GPS. 2 l 15 16 377 0.000 4.334 3.659
194.50.19.3 .INIT. 16 u - 1024 0 0.000 0.000 0.000
193.170.62.252 .INIT. 16 u - 1024 0 0.000 0.000 0.000
li1487-219.memb .INIT. 16 u 841 1024 0 0.000 0.000 0.000
associd=0 status=01f8 leap_none, sync_pps, 15 events, no_sys_peer,
version="ntpd 4.2.8p12@1.3728-o (1)", processor="armv7l",
system="Linux/4.19.58-v7+", leap=00, stratum=1, precision=-19,
rootdelay=0.000, rootdisp=1.000, refid=PPS,
reftime=e10020ef.6b549b3f Thu, Aug 15 2019 20:20:31.419,
clock=e10020ef.7ffc20bf Thu, Aug 15 2019 20:20:31.499, peer=58555, tc=4,
mintc=3, offset=0.004137, frequency=-4.528, sys_jitter=0.001907,
clk_jitter=0.003, clk_wander=0.004, tai=37, leapsec=201701010000,
expire=201912280000
Wer sich den originalen Artikel ansehen will: Zeitserver auf dem Raspberry aufsetzen
Zuletzt bearbeitet: