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.py
mit 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.py
Weitere Datei erstellen:
Code:
sudo nano listen-for-shutdown.sh
Diesen 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 0
Nach /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.sh
Um das Skript beim Start auszuführen:
Code:
sudo update-rc.d listen-for-shutdown.sh defaults
Du kannst jetzt das Skript starten mit:
Code:
sudo /etc/init.d/listen-for-shutdown.sh start
Das sollte es gewesen sein.