Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] RTC in CarPi einbinden
#1
Bekanntermaßen besitzt der Raspberry Pi ja keine eingebaute Echtzeituhr. Normalerweise ist das kein Problem solange der Pi eine Internetverbindung hat und über diese die korrekte Uhrzeit beziehen kann. Doch was tun wenn der Pi in einem Auto verbaut ist und somit eine Internetverbindung garnicht oder nur umständlich herzustellen ist? In diesem Fall ist eine Real Time Clock (RTC) die Lösung!

Dieses Tutorial beschreibt wie man ein RTC-Modul unter Raspbian Jessie einbindet. Dazu verwenden wir ein DS3231, das wesentlich genauer arbeitet als ein DS1307.

##############################################################################
WARNUNG: Wie immer bei Eingriffen ins System ist es ratsam, vorher ein Backup zu erstellen!
##############################################################################

1. Hardware-Setup:

Verbindet das RTC-Modul entsprechend folgendem Schema mit dem Pi:
   

(Anmerkung: Falls schon ein Radio-Modul (SI4703) am Pi angeschlossen ist, dann sind die I2C-Pins (GPIO2 und GPIO3) bereits belegt. Das macht aber überhaupt nichts. Hängt einfach das Modul dazu, der I2C kann damit umgehen.)


Nun gehts an’s Eingemachte:

2. Terminal-Fenster öffnen und die /boot/config.txt bearbeiten:
Code:
sudo nano /boot/config.txt

Hier die folgende Zeile einfügen:
Code:
dtoverlay=i2c-rtc,ds3231

Speichern (CTRL-o und ENTER) und schließen (CTRL-x)

3. Nun müssen die zukünftig nicht mehr gebrauchten Dienste fake-hwclock und ntp beendet werden:
Code:
sudo systemctl stop hwclock.sh fake-hwclock ntp
sudo systemctl disable hwclock.sh fake-hwclock ntp
sudo systemctl mask hwclock.sh fake-hwclock ntp

4. Neue Datei erstellen
Code:
sudo nano /etc/systemd/system/hwclock-sync.service

und mit folgendem Inhalt versehen:
Code:
[Unit]
Description=Time Synchronization from RTC Source
After=systemd-modules-load.service
RequiresMountsFor=/dev/rtc
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/hwclock -s
TimeoutSec=0

[Install]
WantedBy=time-sync.target
Speichern und schließen.

5. Bearbeiten
Code:
sudo nano /etc/rc.local

folgendes vor „exit 0“ einfügen:
Code:
[ ! -e /var/lib/systemd/clock -a "`systemctl is-active systemd-timesyncd | grep -i active`" ] && timedatectl set-ntp 1 > /dev/null 2>&1
Speichern und schließen.

6. Neue Datei:
Code:
sudo nano /etc/systemd/timesyncd.conf

mit folgendem Inhalt:
Code:
[Time]
NTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
FallbackNTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
Speichern und schließen.


7. Mit folgendem Kommando wird die automatische Zeit-Synchronisierung über RTC (oder NTP falls Internetverbindung besteht) beim Systemstart angestoßen:
Code:
sudo systemctl enable hwclock-sync systemd-timesyncd

8. Anstatt eines Reboots starten wir die Dienste manuell:
Code:
sudo systemctl start hwclock-sync systemd-timesyncd

Damit ist die Einrichtung abgeschlossen. Ob alles richtig gelaufen ist, können wir nun mit
Code:
timedatectl
testen. Die Ausgabe sollte in etwa so aussehen:

      Local time: So 2018-01-05 14:00:34 CET
      Universal time: So 2018-01-05 13:00:34 UTC
      RTC time: So 2018-01-05 13:00:33
      Time zone: Europe/Vienna (CET, +0100)
      NTP enabled: yes
      NTP synchronized: yes
      RTC in local TZ: no

9. Die Dienste ntp und fake-hwclock werden nun nicht mehr benötigt und können deinstalliert werden. Dafür einfach folgende Schritte nacheinander ausführen:
Code:
sudo systemctl stop fake-hwclock ntp
sudo systemctl disable fake-hwclock ntp
sudo apt-get -y remove fake-hwclock ntp
sudo rm -f /etc/init.d/{fake-hwclock,ntp}
sudo rm -f /etc/default/{fake-hwclock,ntp}
sudo rm -f /etc/rc?.d/{S,K}??fake-hwclock
sudo rm -f /etc/rc?.d/{S,K}??ntp
sudo rm -f /etc/ntp.conf
sudo rm -f /etc/cron.daily/ntp
sudo rm -f /etc/cron.hourly/fake-hwclock
sudo rm -f /var/log/ntpstats

Hinweis: Gerade nach einer Ersteinrichtung kann es sein, dass die RTC nicht synchron mit der Netzwerkzeit ist. Deshalb führen wir als letzten Schritt noch einen Reset der RTC durch
Code:
timedatectl set-local-rtc false

Falls Datum/Uhrzeit immer noch nicht stimmen:
Synchronisieren mit ntp:
Code:
timedatectl set-ntp 1

Das war’s!


Credits: Ehre wem Ehre gebührt! Das ganze habe ich mir nicht selbst ausgedacht. Weitestgehend habe ich das dieser Quelle entnommen. Ich habe es nur übersetzt und in kleineren Details abgeändert.

Wer sich mehr in's Thema vertiefen möchte, kann hier mal reinschauen:
https://oberguru.net/linux/zeit-zeitserv...n-rtc.html
https://wiki.archlinux.org/index.php/Tim...ronization

Have fun!
Zitieren


Nachrichten in diesem Thema
[Tutorial] RTC in CarPi einbinden - von Jack - 24.04.2018, 20:23

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
RasPiCarProjekt