softshut.py
#!/usr/bin/python
import time
from subprocess import call
import RPi.GPIO as gpio
 
pinBt=19
pinAC=21
pinLed=23
pinOut=15
 
dlyShutdownBt = 5
dlyShutdownAC = 10
 
dlyLedOk = 1
dlyLedFast = 0.1
 
 
def loop():
  hasBt = False
  hasAC = False
  timeBt = 0
  timeAC = 0
  dlyLed = dlyLedOk
  terminated = False
 
  while gpio.input(pinBt)==0 and gpio.input(pinAC)==0:
    for i in range(0,3):
      gpio.output(pinLed, True)
      gpio.output(pinOut, True)
      time.sleep(dlyLedFast)
      gpio.output(pinLed, False)
      gpio.output(pinOut, False)
      time.sleep(dlyLedFast)
    time.sleep(dlyLedOk)
 
  while not terminated:
 
    if gpio.input(pinBt)==0:
      if timeBt > 0:
        print "Bt OK"
        timeBt = 0
    else:
      if timeBt == 0:
        print "Bt failed"
        timeBt = time.time()
      else:
        if time.time() - timeBt > dlyShutdownBt:
          print "Bt shutdown"
          doShutdown()
          terminated = True
 
 
    if gpio.input(pinAC)>0:
      if timeAC > 0:
        print "AC OK"
        timeAC = 0
    else:
      if timeAC == 0:
        print "AC failed"
        timeAC = time.time()
      else:
        if time.time() - timeAC > dlyShutdownAC:
          print "AC shutdown"
          doShutdown()
          terminated = True
 
 
 
    if (timeAC > 0  or  timeBt > 0) and dlyLed == dlyLedOk:
      dlyLed = dlyLedFast
    elif timeAC == 0  and  timeBt == 0  and  dlyLed != dlyLedOk:
      dlyLed = dlyLedOk
 
    gpio.output(pinLed, True)
    gpio.output(pinOut, True)
    time.sleep(dlyLed)
    gpio.output(pinLed, False)
    gpio.output(pinOut, False)
    time.sleep(dlyLed)
 
 
 
def eventButton(pin):
  print "Button shutdown"
  doShutdown()
 
def doShutdown():
  print "SHUTDOWN!!!"
  call('halt', shell=False)
 
 
gpio.setmode(gpio.BOARD)
gpio.setup(pinBt, gpio.IN)
gpio.setup(pinAC, gpio.IN)
gpio.setwarnings(False)
gpio.setup(pinLed, gpio.OUT)
gpio.setup(pinOut, gpio.OUT)
loop()
gpio.cleanup()
doc/jroboplc/raspberry/softshut.txt · Последние изменения: 2018/02/06 13:44 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0