Aus Raspberry Pi Geek 10/2018

Mini-USV im Eigenbau (Seite 2)

Über etwas einfache Mathematik berechnen Sie dann aus dem digitalen Wert die Originalspannung. Das geschieht 64-mal in kurzer Folge, wobei eine Mittlung einzelne Messspitzen glättet. Abhängig von der gemessenen Spannung setzt der PIC die Pegel an seinen beiden Ausgängen GPIO4 und GPIO5.

Die Wahl des Mikrocontrollers in diesem Projekt war abhängig von den Erfahrungen mit diesem besonders energiesparenden Bautyp. Im Prinzip funktioniert die Schaltung aber auch mit einem entsprechenden Controller aus der Arduino-Welt; selbst die kleinsten Typen verfügen über einen internen ADC, und Tutorials zur Spannungsmessung mit dem Arduino gibt es zuhauf.

Die Software

Die Software für die Mini-USV besteht aus zwei Teilen. Zum einen kommt, wie in vielen anderen Projekten, der GPIO-Poll-Service [3] zum Einsatz. Er überwacht die GPIOs und schreibt die Pegel in eine Pipe. Die Konfiguration des Dienstes (/etc/gpio-poll.conf) beschränkt sich auf wenige Zeilen (Listing 1).

Listing 1

 

[GLOBAL]
#
debug: 0
fifo: 1
#
edge: both
ignore_initial: 1
bounce_time: 0.5
#
gpios: 17, 27

Die Ausgabe des GPIO-Poll-Service liest der zweite beteiligte Service, pi-usv.service. Auf dessen Projektseite [4] finden sich weitere Angaben rund um die Hardware. Bei dem Dienst handelt es sich um ein Python-Skript, das je nach Art des Statusübergangs ein konfigurierbares Programm aufruft. Das Projekt liefert dazu passende Vorlagen mit, etwa das Skript /usr/local/sbin/pi-usv-warn.sh.

Die Konfiguration erfolgt in der Datei /etc/pi-usv.conf (Listing 2). Wichtig in dieser Datei ist das Übersetzen der physischen Pins des RasPi in die Pin-Bezeichnung der USV (Zeilen 5 und 6) sowie die Definition der Programme beziehungsweise Skripte, die die Software beim Wechsel des Status aufruft (Zeilen 8 bis 12). Ist kein Skript hinterlegt, passiert nichts, mit der Ausnahme von Shutdown: Haben Sie dafür kein Skript hinterlegt, fährt das System trotzdem herunter.

Listing 2

 

[GLOBAL]
debug: 0
[GPIO]
GP4: 27
GP5: 17
[HOOK]
ok:   /usr/local/sbin/pi-usv-ok.sh
warn: /usr/local/sbin/pi-usv-warn.sh
crit: /usr/local/sbin/pi-usv-crit.sh
#shutdown: /usr/local/sbin/pi-usv-shutdown.sh

Die Beispiele (Ausschnitt aus /usr/local/sbin/pi-usv-warn.sh in Listing 3) beschränken sich auf einige wenige Tätigkeiten. Zum einen ändern sie ab der Warnstufe den Modus für eingehängte Dateisysteme von async auf sync (ab Zeile 39). Das verlangsamt Schreibzugriffe, sorgt aber dafür, dass Daten jetzt nicht mehr zuerst im Puffer des Dateisystems landen. Das analoge Skript für den Status OK macht dies wieder rückgängig.

Listing 3

 

old="$1"
new="$2"
WALL_TEXT="WARNUNG: Akkustand ist niedrig"
[...]
if [ -n "$DESKTOP_USER" ]; then
  su - $DESKTOP_USER -c "notify-send -u critical \"$WALL_TEXT\""
else
  wall -t 5 "$WALL_TEXT" &
fi
if [ "$old" = 'O' ]; then
  logger -t "pi-usv" "state changed from OK to WARN"
  logger -t "pi-usv" "remounting filesystems with sync-option"
  mount -o remount,sync /
  mount -o remount,sync /boot
else
  logger -t "pi-usv" "state changed from CRIT to WARN"
fi

Als zweite Maßnahme erhält der Benutzer über Wall beziehungsweise Notify-send (Zeilen 9 und 11, Abbildung 3) eine Info zum aktuellen Zustand. Bei einem produktiven System sollten Sie diese Nachricht durch eine entsprechende Alternative ersetzen, denn normalerweise verpufft eine Meldung von Wall mangels angemeldetem User. Hier käme etwa eine SMS oder eine E-Mail infrage.

Abbildung 3: In dieser Form erscheint eine Warnmeldung auf dem Desktop des Raspberry Pi.

Abbildung 3: In dieser Form erscheint eine Warnmeldung auf dem Desktop des Raspberry Pi.

Problemquelle Desktop

Seit dem RasPi 3 und insbesondere mit dem RasPi 3B+ eignet sich der Mini-PC bestens als Desktop-System. Wer gerade an einem wichtigen Dokument arbeitet, der profitiert ebenfalls von einer USV. Allerdings genügen weder die Spannung noch die Kapazität der hier vorgestellten Lösung für die Versorgung des Bildschirms.

Bei einem Stromausfall können Sie also nur hoffen, dass die Stützzeit der USV länger ist als der Stromausfall, denn ein Sichern des offenen Dokuments vor dem endgültigen Shutdown kann nur im Blindflug erfolgen. Die Warnung aus Abbildung 3 kommt also üblicherweise gar nicht beim Benutzer an.

Die Idee, zusätzlich einen kleinen akkubetriebenen Bildschirm anzuschließen, scheitert an der Architektur des RasPi. Physisch hat er neben dem HDMI-Anschluss zwar noch einen analogen Ausgang, der sich dafür im Prinzip gut eignen würde. Selbst das Umschalten im Betrieb zwischen beiden Ausgängen funktioniert mit ein paar Tricks. Allerdings konfiguriert die GPU einmalig beim Initialisieren die Auflösung. Die ergonomische Auflösung eines per HDMI angeschlossenen Bildschirms sieht auf dem kleinen Bildschirm bestenfalls matschig aus. Dasselbe gilt umgekehrt: Die für einen kleinen Bildschirm optimierte Auflösung ist für einen normalen Schirm viel zu niedrig.

Zum Glück bieten viele Anwendungen (unter anderem LibreOffice) ein automatisches Sichern in einem einstellbaren Intervall an oder speichern Zwischenstände temporär. Beim nächsten Öffnen der Datei weist dann das Programm auf diesen Zwischenstand hin und verspricht, die Datei zu reparieren. Alleine auf diese Mechanismen zu setzen ist aber gewagt – besser, Sie speichern gezielt; dann wissen Sie, was Sie haben.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 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