38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
|
#!/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)
|