Raspberry Pi: RTC Hat

Aus FHEMWiki

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.

  1. 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:

  1. Raspberry PI herunterfahren, vom Strom trennen
  2. Batterie in das RTC Hat einsetzen
  3. RTC Hat auf die Steckleister aufstecken (siehe Bilder beim Amazon-Link)
  4. 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.