Integrated user-indication via led

master
mandlm 2016-01-07 20:52:33 +01:00
parent fdf61c5d3a
commit 9f194a9a03
1 changed files with 54 additions and 21 deletions

View File

@ -1,14 +1,40 @@
#!/usr/bin/python
#!/usr/bin/python
import glob
import os
import subprocess
import ConfigParser
import RPi.GPIO as GPIO
yellowLed = 15
redLed = 17
greenLed = 18
mopidyConf = '/etc/mopidy/mopidy.conf'
userDir = '/etc/mopidy/conf.user/'
def setLeds(yellow, red, green):
GPIO.output(yellowLed, yellow)
GPIO.output(redLed, red)
GPIO.output(greenLed, green)
def getConfiguredLedColor():
config = ConfigParser.ConfigParser()
config.read(mopidyConf)
return config.get('moped-switcher', 'led')
def setConfiguredLedColor():
ledColor = getConfiguredLedColor()
if ledColor == 'yellow':
setLeds(1, 0, 0)
elif ledColor == 'red':
setLeds(0, 1, 0)
elif ledColor == 'green':
setLeds(0, 0, 1)
def stopMopidy():
command = ['service', 'mopidy', 'stop']
subprocess.call(command, shell=False)
@ -42,26 +68,33 @@ def switchConfig():
setConfig(getNextConfig())
def buttonHandler(channel):
print 'Switching to ' + getNextConfig()
try:
stopMopidy()
switchConfig()
startMopidy()
except OSError as e:
print 'Error: ' + e.strerror
print 'Switching to ' + getNextConfig()
try:
setLeds(0, 0, 0)
stopMopidy()
switchConfig()
startMopidy()
setConfiguredLedColor()
except OSError as e:
print 'Error: ' + e.strerror
if __name__ == '__main__':
buttonPin = 4
dummyPin = 15
GPIO.setmode(GPIO.BCM)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(dummyPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
buttonPin = 4
dummyPin = 15
GPIO.add_event_detect(buttonPin, GPIO.FALLING, callback=buttonHandler, bouncetime=1000)
GPIO.setmode(GPIO.BCM)
try:
while True:
GPIO.wait_for_edge(dummyPin, GPIO.RISING)
finally:
GPIO.cleanup()
GPIO.setup(yellowLed, GPIO.OUT)
GPIO.setup(redLed, GPIO.OUT)
GPIO.setup(greenLed, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(dummyPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(buttonPin, GPIO.FALLING, callback=buttonHandler, bouncetime=1000)
try:
while True:
GPIO.wait_for_edge(dummyPin, GPIO.RISING)
finally:
GPIO.cleanup()