Adafruit-GPIO-Halt – Raspberry Pi mithilfe einer Büroklammer herunterfahren

Kein Kommentar Autor: Jürgen (jdo)

Ich bin auf einen interessanten Beitrag gestoßen, der sich mit dem Programm Adafruit-GPIO-Halt befasst. Mit dem Skript kann man ein Raspberry Pi mithilfe einer Büroklammer herunterfahren. Man könnte statt einer Büroklammer natürlich auch einen Schraubenzieher nehmen, einen Schalter installieren und so weiter. Im Endeffekt muss man die beiden Pins überbrücken, damit sich das Raspberry Pi sauber herunterfährt.

Ist ein Raspberry Pi mit einem Bildschirm, einer Tastatur und einer Maus verbunden, dann stellt sich das Problem des Herunterfahrens natürlich nicht. Betreibt man ein Raspberry Pi ohne Bildschirm, auch headless genannt, dann kommt man dann und wann sicherlich in Verlegenheit, das System herunterfahren zu müssen. Einfach den Strom abstecken ist eine sehr unfeine Methode, die im schlimmsten Fall zu Datenverlust führen oder das Dateisystem schädigen kann.

Hängt das Raspberry Pi am Netzwerk, dann könnte man es via SSH herunterfahren. Diese Option nutze ich für meinen Wassersensor.

Adafruit-GPIO-Halt installieren

Adafruit stellt ein einfaches Skript zur Verfügung, das im Prinzip GPIO Pins überwacht. Sollte sich der Zustand ändern, wird eine entsprechende Aktion durchgeführt – also in diesem Fall wird das Betriebssystem (Linux) angewiesen, sich herunterzufahren.

Für eine Installation ist zunächst Git notwendig. Unter Raspbian installiert man das so über die Kommandozeile:

  • sudo apt-get install git
Um Adafruit-GPIO-Halt zu installieren, braucht man Git

Um Adafruit-GPIO-Halt zu installieren, braucht man Git

Im Anschluss lädt man das Programm herunter:

  • git clone https://github.com/adafruit/Adafruit-GPIO-Halt

Dann wechselt man in das entsprechende Verzeichnis. Dort kompiliert und installiert man das Programm:

  • cd Adafruit-GPIO-Halt
  • make
  • sudo make install

Das Skript ist über /usr/local/bin/gpio-halt zu erreichen und es muss als Service laufen. Hier kommt es nun darauf an, ob man ein Wheezy- oder Jessie-basiertes Raspbian am Laufen hat.

rc.local bei Wheezy

Läuft eine ältere Version von Raspbian, die auf Debian 7 Wheezy basiert, dann muss man die Datei /etc/rc.local anpassen. Man fügt einfach nachfolgende Zeile vor exit 0 ein.

  • /usr/local/bin/gpio-halt 21 &

systemd bei Jessie

Hat man eine aktuelle Version von Raspbian installiert, dann muss man systemd nutzen. Hierfür legt man eine Datei /lib/systemd/system/gpio-halt.service an und fügt folgenden Inhalt ein. Den Code habe ich auf dieser Seite gefunden. An dieser Stelle muss man noch aufpassen, ob man ein älteres Gerät mit einem GPIO Header mit 26 Pins hat. Ist das der Fall, nimmt man statt Pin 21 den Pin 7.
[Unit] Description=Die Pins 21 und Ground überbrueckt faehrt das Pi herunter
After=multi-user.target

[Service] Type=idle
ExecStart=/usr/local/bin/gpio-halt 21 &

[Install] WantedBy=multi-user.target

Die Datei macht man im Anschluss noch ausführbar und teilt systemd mit, es zu verwenden:

  • sudo chmod 644 /lib/systemd/system/gpio-halt.service
  • sudo systemctl daemon-reload
  • sudo systemctl enable gpio-halt.service

Nun startest Du das Raspberry Pi neu (sudo reboot) und kannst prüfen, ob der Service auch läuft.

  • sudo systemctl status gpio-halt.service

Das Raspberry Pi herunterfahren

Nun kannst Du die entsprechenden Pins überbrücken und das Raspberry Pi herunterfahren. Wie schon erwähnt sind es die Pins 21 und Ground, wenn der GPIO HEader über 40 Pins verfügt. Pin 7 und Ground fahren das Raspberry Pi herunter, wenn es sich um einen GPIO Header mit 26 Pins handelt.

Raspberry Pi: GPIO Pins (Quelle: learn.adafruit.com)

Raspberry Pi: GPIO Pins (Quelle: learn.adafruit.com)




 Alle Kommentare als Feed abonnieren

Kommentare sind geschlossen.