Aus Raspberry Pi Geek 10/2017

Raspberry Pi per RTC-Timer an- und ausschalten (Seite 3)

Systemd-Automation

Ein Kommando zur Steuerung der RTC alleine reicht für das Gesamtprojekt noch nicht aus. Wie eingangs schon beschrieben, muss der Raspberry Pi beim Systemstart zumindest den Alarm zurückstellen und beim Herunterfahren den neuen Boot-Zeitpunkt setzen. Beides erledigt ein eigener Systemd-Service.

Im Github-Projekt gibt es das Installationsprogramm tools/install. Mit Sudo aufgerufen, installiert es alle notwendigen Programme und erstellt den Systemd-Service wake-on-rtc.service. Der lässt sich dann über die Datei /etc/wake-on-rtc.conf konfigurieren. Dort finden sich mit [GLOBAL], [boot] und [halt] drei Abschnitte (Listing 4).

Listing 4

 

[GLOBAL]
debug: 0
alarm: 1
i2c: 1
utc: 1
[boot]
hook_cmd: rtc_boot_hook
auto_halt: 0
[halt]
next_boot: next_boot.sh
lead_time: 2
set_hwclock: 1

Im globalen Abschnitt sollten Sie nur die debug-Variable ändern. Interessanter sind die beiden anderen Bereiche: [boot] steuert das Verhalten beim Systemstart. Über die Variable hook_cmd (Zeile 8) hinterlegen Sie optional ein Kommando, das der aktuelle Startmodus als Parameter erhält. Der Service ruft das Programm dann entweder mit alarm oder normal auf – je nachdem, ob Sie das System per Taster manuell hochgefahren haben oder es aufgrund eines RTC-Alarms startete. Damit reagiert der RasPi bei Bedarf auf den Boot-Modus unterschiedlich.

Der Parameter auto_halt in Zeile 9 dient als Workaround für den beschränkten Zeithorizont. Steht hier ein Wert größer als null (interpretiert als Minuten) und das System fährt per RTC-Alarm hoch, dann löst der Service sofort wieder einen Shutdown aus, falls der nächste Boot-Zeitpunkt nicht innerhalb der konfigurierten Anzahl von Minuten liegt. Den nächsten Boot-Zeitpunkt bestimmt der Wake-on-RTC-Dienst über das im Abschnitt halt in der Variablen next_boot eingetragene Programm (Zeile 12). Das Programm darf als Ergebnis nur eine Zeile mit dem nächsten Boot-Zeitpunkt (oder einer Null) ausgeben.

Im Projektordner gibt es ein Beispielprogramm (files/usr/local/sbin/next_boot.sh), das den Zeitpunkt für das nächste Booten auf “in fünf Minuten” setzt. Das Programm lässt sich für eigene Zwecke leicht anpassen, etwa fix auf tomorrow 08:00 – das Linux-Programm date gibt sich sehr flexibel. Hängt die Schaltung an einem Linux-VDR, dann muss der Boot-Zeitpunkt aus der VDR-Datenbank kommen.

Die verbleibenden Variablen in den Zeilen 13 und 14 steuern den Vorlauf beim Booten (lead_time in Minuten) sowie den Abgleich der internen RTC-Uhr mit der Systemzeit (set_hwclock). Letzteres ergibt nur dann Sinn, wenn der RasPi seine Zeit über das Internet aktualisiert.

Fazit

Etwas Hardware-Tüftelei in Kombination mit passender Software, und fertig ist eine sinnvolle Erweiterung für den Raspberry Pi. Zwar wäre es schön, wenn es die Schaltung hochintegriert auf einer kleinen Platine geben würde, aber dann fehlte andererseits der Bastelspaß. Einen Teil der Funktionen bietet der OnOff-Shim von Pimoroni [5]. Daneben gibt es eine kleine USV für den RasPi, die laut Datenblatt auch zeitgesteuertes Booten beherrscht [6]. Zwingend tüfteln muss man also nicht, doch wo bleibt dann der Spaß? 

Die Autoren

Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. In seiner Freizeit beschäftigt er sich unter anderem mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mailto:[email protected]. Lothar Hiller, ein pensionierter Ingenieur für Nachrichtenbetriebsdienst, schaltet seinen Lötkolben fast nie aus. Der leidenschaftliche Elektronikbastler programmiert kleine Mikrocomputer wie PICs in Assembler.

Infos

  1. Datenblatt DS3231: http://datasheets.maximintegrated.com/en/ds/DS3231.pdf
  2. RasPi als VDR: Charly Kühnast, “Aufgenommen”, RPG 04/2016, S. 28, http://www.raspi-geek.de/36928
  3. Chronodot: https://www.adafruit.com/product/255
  4. Wake-On-RTC auf Github: https://github.com/bablokb/pi-wake-on-rtc
  5. OnOff-Shim von Pimoroni: https://shop.pimoroni.com/products/onoff-shim
  6. USV mit integrierter RTC: http://www.s-usv.de/susv_pibasic.html
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben