Raspberry Pi: RTC Hat
RTC Hat
Das RTC Hat stellt eine Aufsteckplatine mit einer Real Time Clock (batteriegestützte Echtzeituhr) zur Verfügung. Es ist optimal geeignet, um den Pi beim Start und vor dem Start von FHEM mit einer exakten Uhrzeit zu versorgen und sei daher allen PI-Nutzern wärmstens empfohlen. Wie beschrieben, hat FHEM starke Probleme beim Start mit einer falschen Uhrzeit, die durch eine RTC vermieden werden.
Bestellquellen
Die üblichen Online-Händler, z.B.
- https://smile.amazon.de/gp/product/B071HYN28Z MakerHawk RPI DS3231 RTC Modul Himbeer pi Echtzeituhrmodul mit Münzbatterie
Wichtig ist die Auswahl eines RTC-Modules, daß die Batterie separat verpackt mitliefert - sonst ist diese bereits teilweise genutzt und muß schnell ausgetauscht werden.
Hardware-Installation
Dauer ca. 1 Minute:
- Raspberry PI herunterfahren, vom Strom trennen
- Batterie in das RTC Hat einsetzen
- RTC Hat auf die Steckleister aufstecken (siehe Bilder beim Amazon-Link)
- Raspberry Pi wieder anschalten
Dies funktioniert auch in Kombination mit dem UPS Hat.
Software-Installation
Das RTC Hat stellt eine I2C-Schnittstelle zur Verfügung. Bei der Nutzung des Raspbian-Images kann dieses mittels des Kommandos raspi-config in den erweiterten Optionen konfiguriert werden.
Manuell erfolgt die Konfiguration durch:
apt-get install i2ctools i2c-dev libi2c-dev
sowie durch editieren der /etc/modules und laden der Module i2c-bcm2708 und i2c-dev:
root@pi-hole:~# more /etc/modules # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. i2c-bcm2708 i2c-dev
sowie /boot/config.txt:
[...] # Uncomment some or all of these to enable the optional hardware interfaces dtparam=i2c_arm=on dtparam=i2c1=on [...]
Nach einem Reboot können die Werte dann ausgelesen werden.
RTC Nutzung
Zur Aktivierung (Nutzung) des RTC Hats sind mehrere Kommandos als root auf der Kommandozeile einzugeben:
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
(dabei ist 0x68 die Adresse des RTC Hats auf dem I2C Bus) sowie zur /boot/config.txt die Zeile
dtoverlay=i2c-rtc,ds1307
hinzuzufügen.
Auch sollte /etc/default/hwclock modifiziert werden:
root@pi-hole:/etc/default# more hwclock # Defaults for the hwclock init script. See hwclock(5) and hwclock(8). # This is used to specify that the hardware clock incapable of storing # years outside the range of 1994-1999. Set to yes if the hardware is # broken or no if working correctly. #BADYEAR=no # Set this to yes if it is possible to access the hardware clock, # or no if it is not. HWCLOCKACCESS=yes # Set this to any options you might need to give to hwclock, such # as machine hardware clock type for Alphas. #HWCLOCKPARS= # Set this to the hardware clock device you want to use, it should # probably match the CONFIG_RTC_HCTOSYS_DEVICE kernel config option. HCTOSYS_DEVICE=rtc0
Nach einem Neustart steht das RTC Modul dann zur Verfügung. Der Befehl
hwclock -w
schreibt die aktuelle Systemzeit in das RTC Hat. Dies sollte nach einem ntpdate Befehl erfolgen. Danach aktualisiert sich das RTC Hat durch den laufenden ntpd.
Ein Test kann durch einen Neustart ohne Netzwerkkabel/WIFi erfolgen. Hat der RPI ohne Netzwerk-Zugang eine korrekte Uhrzeit funktioniert das RTC Hat wie gewünscht.