4. MoodleBox erweitern

4.8. Echtzeituhr (RTC)

Standardmäßig hat die MoodleBox keine Echtzeituhr, vergisst also das Datum und die Uhrzeit, wenn der Strom ausgeschaltet wird. Wenn die MoodleBox wieder eingeschaltet wird und nicht mit dem Internet verbunden ist, läuft die Zeit immer genau bei dem Zeitpunkt weiter, bei dem die MoodleBox das letzte Mal ausgeschaltet wurde.

Wenn die MoodleBox mit dem Internet über ein Ethernet-Kabel verbunden ist, holt sich die Systemuhr die jeweils aktuelle Zeit von einem Zeitserver ... aber manchmal hat man eben keine Internetverbindung.

Ohne die richtige Zeit sind die Zeiteinträge in Foren falsch, eine Aufgabenerledigung ist nicht richtig terminiert, alle Logdaten sind unbrauchbar. Ohne Internetverbindung musst du die Systemzeit unbedingt im Plugin "MoodleBox" manuell einstellen, damit die Zeitstempel in Moodle richtig funktionieren. Alternativ kannst du eine kleine Platine mit einem Zeit-Chip in die MoodleBox einbauen.

Echtzeituhr einbauen

Eine Echtzeituhr (RTC = Real Time Clock) für die MoodleBox kannst du für wenig Geld als kleine Zusatzplatine zum Aufstecken auf die GPIO-Leiste kaufen, z.B. hier https://www.reichelt.de/raspberry-pi-real-time-clock-modul-rtc-ds3231sn-rpi-rtc-clock-p224214.html

Echtzeituhr konfigurieren

Verbinde dich mit der MoodleBox über SSH und gib das standardmäßige Kennwort Moodlebox4$ ein. Falls du das Kennwort geändert hast, musst du natürlich das neue Kennwort eingeben.

ssh moodlebox@moodlebox.home


Eine Echtzeituhr (RTC) basiert in der Regel auf einem Chip, der über einen i2c-Bus mit dem Prozessor verbunden ist. Um die Echtzeituhr mit einem i2c-Chip ansprechen zu können, musst du ein bisschen Software nachinstallierten.

sudo apt update
sudo apt install -y i2c-tools python3-smbus


Jetzt kannst du schauen, ob der i2c-Chip erreichbar ist. Das Programm i2cdetect prüft den Adressbereich auf mögliche i2c-Chips und sollte den RTC mit der Adresse 68 (also eigentlich hexadezimal 0x68) finden.

moodlebox@moodlebox:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Als Nächstes musst du mehrere Systemdateien bearbeiten und ein paar Dinge hinzufügen. Der Editor nano ist ein wenig gewöhnungsbedürftig, aber du musst dir eigentlich nur zwei Befehle merken: <ctrl>-o sichert die Datei, <ctrl>-x beendet den Editor.

sudo nano /boot/config.txt

In der Konfiguration musst du das Protokoll i2c aktivieren (Kommentarzeichen # entfernen) und die Bezeichnung des auf der Zusatzplatine verwendeten RTC-Chips hinzufügen. Hier in der Beschreibung sind drei mögliche Bezeichnungen hinzugefügt, aber zwei davon sind jeweils deaktiviert (Kommentarzeichen # gesetzt).

# uncomment to enable the optional hardware interfaces
dtparam=i2c_arm=on
# dtparam=i2s=on
# dtparam=spi=on

# uncomment to add an rtc module
# dtoverlay=i2c-rtc,ds1307
dtoverlay=i2c-rtc,ds3231
# dtoverlay=i2c-rtc,pcf8523


Zusätzlich musst du eine weitere Konfigurationsdatei ändern und eine Zeile hinzufügen.

sudo nano /etc/modules
i2c-dev


Da deine MoodleBox jetzt eine richtige Hardware-Uhr hat, kannst du alle im System gesetzten Aufrufe für die Fake-Uhr entfernen, die den Betrieb stören könnten.

sudo apt remove fake-hwclock -y
sudo update-rc.d -f fake-hwclock remove
sudo rm /etc/cron.hourly/fake-hwclock
sudo rm /etc/init.d/fake-hwclock
sudo rm /etc/fake-hwclock.data


Damit die Echtzeituhr auch wirklich für die MoodleBox verwendet wird, musst du außerdem eine Anpassung in einer dritten Konfigurationsdatei vornehmen.

sudo nano /lib/udev/hwclock-set

Deaktiviere in dieser Datei die drei Zeilen, die bei der MoodleBox ohne Echtzeituhr für das Weiterlaufen der Systemuhr sorgen.

# if [ -e /run/systemd/system ] ; then
#    exit 0
# fi


Starte abschließend die MoodleBox neu.

sudo reboot

Ab sofort sollte die Echtzeituhr in deiner MoodleBox funktionieren und auch dann immer die richtige Systemzeit verwenden, wenn die MoodleBox nicht mit dem Internet verbunden ist und sich keine Systemzeit von einem Zeitserver holen kann.

moodlebox@moodlebox:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
moodlebox@moodlebox:~ $ sudo hwclock -r
2022-08-15 14:39:46.041196+02:00

Eine ausführliche Beschreibung zur Softwarekonfiguration findest du hier: 
https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=85683&start=50
https://discuss.moodlebox.net/d/247-using-a-real-time-clock-module-on-moodlebox

Technische Beschreibung

Dieses Echtzeituhrmodul wurde speziell für den Raspberry Pi entwickelt und enthält den RTC-Chip DS3231. Das Modul wird als Zubehör oben auf die GPIO-Pins 1-3-5-7-9 des Raspberry Pi aufgesteckt. Damit sich der Raspberry Pi an die Zeit erinnern kann, auch wenn er eine gewisse Zeit ohne Stromversorgung ist, wird die Uhr über eine aufgelötete Batterie gepuffert.

  • RTC DS3231 
  • Hohe Genauigkeit
  • GPIO-Zubehör zum Aufstecken
  • Support für Raspberry Pi
  • Spannung: 3.3V oder 5V
  • Größe: 14x16x12 mm

https://thepihut.com/products/mini-rtc-module-for-raspberry-pi
https://thepihut.com/blogs/raspberry-pi-tutorials/17209332-adding-a-real-time-clock-to-your-raspberry-pi