#!/usr/bin/env python3 import RPi.GPIO as GPIO import time, os, sys GPIO.setmode(GPIO.BOARD) input_pin = 36 GPIO.setup(input_pin, GPIO.IN) a=0 # solange "wahr" gilt (immer!) wird folgende sequenz ausgeführt: # wird der input pin als high (3V) erkannt, wird 60x alle 0.05 sekunden überprüft # ob der pin wieder auf low (0V) zurückgesetzt wird. ist dies der fall, wird ein reboot ausgeführt. # ist nach diesen 60x0.05 sekunden der pin immernoch high, wird ein poweroff ausgeführt. # rein theorethisch wäre es möglich innerhalb der 0.05 sekunden wartezeit nach der überprüfung auf low # den schalter loszulassen, und somit würde weder ein reboot noch ein shutdown ausgeführt werden. # sollte das zu oft passieren bitte das time.sleep innerhalb der (while a) schleife auf 0.001 sekunden stellen, # dafür aber a auf 3000. while True: print("State:", GPIO.input(input_pin)) if GPIO.input(input_pin) == GPIO.HIGH: while a <= 60: if GPIO.input(input_pin) == GPIO.LOW: print("reboot") time.sleep(2) os.system("reboot") a=a+1 time.sleep(0.05) if GPIO.input(input_pin) == GPIO.HIGH: print("poweroff") time.sleep(2) os.system("poweroff") time.sleep(0.05)