10.07.2018, 19:29
(09.07.2018, 23:28)Bergstern schrieb: An ein script mit einer while schleife die einen gpio überwacht und bei low/high den shutdown ausführt meinst du?
Eine Anleitung wäre super!!! Danke. Dass script muss dann ja in den autostart und da müsste ich mich erst noch reinlesen.
Nein, keine while-Schleife. Das Skript wartet nur auf einen Interrupt (wait_for_edge). Das beschäftigt den Pi nicht so sehr. Es wird der interne Pull-up des Pins verwendet, ein externer Pull-up ist also nicht notwendig. Und für den Start des Skripts beim Boot ist auch schon gesorgt.
Bevor du loslegst, sei es empfohlen vorher ein Backup zu machen. Es sollte zwar nichts passieren aber sicher ist sicher!
Und so geht das:
Datei erstellen:
Code:
sudo nano listen-for-shutdown.pymit folgendem Inhalt (unter der Annahme dass GPIO26 verwendet wird – falls ein anderer GPIO verwendet wird, dann ändern!):
Code:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(26, GPIO.FALLING)
subprocess.call(['shutdown', '-h', 'now'], shell=False)Nach /usr/local/bin bewegen und ausführbar machen:
Code:
sudo mv listen-for-shutdown.py /usr/local/bin/
sudo chmod +x /usr/local/bin/listen-for-shutdown.pyWeitere Datei erstellen:
Code:
sudo nano listen-for-shutdown.shDiesen Inhalt infügen:
Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides: listen-for-shutdown.py
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
# If you want a command to always run, put it here
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting listen-for-shutdown.py"
/usr/local/bin/listen-for-shutdown.py &
;;
stop)
echo "Stopping listen-for-shutdown.py"
pkill -f /usr/local/bin/listen-for-shutdown.py
;;
*)
echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"
exit 1
;;
esac
exit 0Nach /etc/init.d bewegen und ausführbar machen:
Code:
sudo mv listen-for-shutdown.sh /etc/init.d/
sudo chmod +x /etc/init.d/listen-for-shutdown.shUm das Skript beim Start auszuführen:
Code:
sudo update-rc.d listen-for-shutdown.sh defaultsDu kannst jetzt das Skript starten mit:
Code:
sudo /etc/init.d/listen-for-shutdown.sh startDas sollte es gewesen sein.

