Hallo Zusammen,
habe meinen OnOffShim nun schon eine Weile an meiner Phoniebox und bis sehr zufrieden.
Man benötigt auch nicht unbedingt das mitgelieferte Script.
Eine Artikel auf retropie.org.uk hat mir da sehr geholfen.
Er zeigt zum einen die benötigten GPIOs und gibt eine Alternative zum mitgelieferten Installer.
Folgendes habe ich gemacht:
Damit der Shutdown über das Webinterface richtig funktioniert, muss die Datei nicht nur auf "poweroff" sondern auch auf "halt" hören.
Meine /lib/systemd/system-shutdown/gpio-shutoff sieht daher wie folgt aus:
#!/bin/sh
#
# OnOff SHIM exposed by cyperghost for retropie.org.uk
# This is mandatory for proper SHIM shutdown!
poweroff_pin="4"
led_pin="17"
if [ "$1" = "poweroff" ]; then
/bin/echo $led_pin > /sys/class/gpio/export
/bin/echo out > /sys/class/gpio/gpio$led_pin/direction
for iteration in 1 2 3; do
/bin/echo 0 > /sys/class/gpio/gpio$led_pin/value
/bin/sleep 0.2
/bin/echo 1 > /sys/class/gpio/gpio$led_pin/value
/bin/sleep 0.2
done
/bin/echo $poweroff_pin > /sys/class/gpio/export
/bin/echo out > /sys/class/gpio/gpio$poweroff_pin/direction
/bin/echo 0 > /sys/class/gpio/gpio$poweroff_pin/value
fi
if [ "$1" = "halt" ]; then
/bin/echo $led_pin > /sys/class/gpio/export
/bin/echo out > /sys/class/gpio/gpio$led_pin/direction
for iteration in 1 2 3; do
/bin/echo 0 > /sys/class/gpio/gpio$led_pin/value
/bin/sleep 0.2
/bin/echo 1 > /sys/class/gpio/gpio$led_pin/value
/bin/sleep 0.2
done
/bin/echo $poweroff_pin > /sys/class/gpio/export
/bin/echo out > /sys/class/gpio/gpio$poweroff_pin/direction
/bin/echo 0 > /sys/class/gpio/gpio$poweroff_pin/value
fi
Display More
Damit fährt der PI richtig herunter, wenn man Ihn über das PhonieBox interface herunterfährt und kappt auch - bei mir - die Stromverbindung.
Um dies ebenfalls über den Button zu realisieren, habe ich ein kleines Python Script gebaut:
import RPi.GPIO as GPIO
import os
import time
from subprocess import check_call
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.IN)
i = 0
while i < 3:
if GPIO.input(17) == GPIO.LOW:
i = i + 1
if GPIO.input(17) == GPIO.HIGH:
i = 0
time.sleep(1)
check_call("/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=shutdown", shell=True)
Display More
Hier habe ich den Shell Befehl der Phoniebox getriggert um zum einen den Shutdown Sound der PhonieBox zu erhalten. Auf der anderen Seite aber auch mpd aufzuräumen, damit nicht nach dem einschalten direkt Musik abgespielt wird.
Damit das PythonScript immer als Service läuft, habe ich diese Datei als service Datei erstellt und unter systemctl als Service starten.
Dies hat ebenfalls den Vorteil, dass das Script bei einem Crash auch neugestartet wird.
[Unit]
Description=OnOffShim
After=network.target iptables.service firewalld.service
[Service]
Type=simple
Restart=always
WorkingDirectory=/home/pi/onoffshim
ExecStart=/usr/bin/python /home/pi/onoffshim/onoffshim.py
RestartSec=2
[Install]
WantedBy=multi-user.target
Display More
Um den Power Button zum "leuchten" zu bekommen habe ich der Beschreibung dieser Website gefolgt.
Editieren der /boot/config.txt
Danach kann die LED des PowerButtons an die PINS 6 und 8 angeschlossen werden.
Die LED flackert dann beim Booten und bleibt bei gebootetem System stabil.
Mehr Infos findet Ihr auf der Website.
Gruß,
-X-