ich habe - als Entwurf - ein kurzes Python3-Script geschrieben, dass ich auf einem Raspberry Pi mit Raspbian beim Start ausführen möchte.
Bisher habe ich vorige Scripte per "@reboot python3 script.py" in den crontab geschrieben; gerade habe ich auch den Weg über die rc.local versucht.
Beim Autostart wird das Script zwar im Hintergrund gestartet, jedoch verbraucht es 100% CPU und funktioniert nicht (es schaltet einen GPIO wenn der Bildschirmschoner aktiviert/deaktiviert wird, um eine Hintergrundbeleuchtung an- bzw. auszuschalten).
Kille ich den Prozess und führe das Script erneut per "python3 script.py" aus, funktioniert es wie erwartet.
Woran könnte das liegen? Sollte doch eigentlich im gleichen Kontext gestartet werden?
Edit: Ich habe so das Gefühl, dass das Script immer dann zickt, wenn kein Benutzer (z.B. per SSH) eingeloggt ist. Die lokale Sitzung + Display mit X11 ist aber gestartet.
Starte ich das Script per Putty mit & am Ende und schließe daraufhin die letzte Putty-Sitzung, funktioniert's auch nicht mehr? Der GPIO wird also nicht geschaltet, und somit bleibt das Display aus :/
Code: Alles auswählen
import subprocess
subprocess.Popen(['sudo', 'sh', '-c', 'echo 252 > /sys/class/gpio/export'])
subprocess.Popen(['sudo', 'sh', '-c', 'echo "out" > /sys/class/gpio/gpio252/direction'])
subprocess.Popen(['sudo', 'sh', '-c', 'echo "1" > /sys/class/gpio/gpio252/value'])
process = subprocess.Popen(['xscreensaver-command','-watch'], stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, ''):
read_line = line.decode("utf-8")
if "BLANK" in read_line and not "UNBLANK" in read_line:
print("Bildschirmschoner aktiviert")
subprocess.Popen(['sudo', 'sh', '-c', 'echo "0" > /sys/class/gpio/gpio252/value'])
if "UNBLANK" in read_line:
print("Bildschirmschoner deaktiviert")
subprocess.Popen(['sudo', 'sh', '-c', 'echo "1" > /sys/class/gpio/gpio252/value'])
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4