Compare commits

..

3 commits

2 changed files with 108 additions and 22 deletions

40
main.py
View file

@ -3,28 +3,32 @@
import RPi.GPIO as GPIO import RPi.GPIO as GPIO
import time import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP) def buttonEventHandler(value):
GPIO.setup(24, GPIO.OUT) print "buton event!"
if value is 0:
try:
lastState = GPIO.input(23)
if lastState == False:
GPIO.output(24, True)
while True:
button_state = GPIO.input(23)
if button_state == lastState:
print('No Change...')
else:
if button_state == False:
GPIO.output(24, True) GPIO.output(24, True)
print('Button Pressed...') print('Button Pressed...')
else: else:
GPIO.output(24, False) GPIO.output(24, False)
print('Button Released...') print('Button Released...')
lastState = button_state
time.sleep(0.02)
except:
GPIO.cleanup()
def main():
print "Let's do this!"
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(24, GPIO.OUT)
#GPIO.add_event_detect(23, GPIO.FALLING)
#GPIO.add_event_callback(23, buttonEventHandler)
try:
while True:
GPIO.wait_for_edge(23, GPIO.BOTH)
buttonEventHandler(GPIO.input(23))
except KeyboardInterrupt as e:
GPIO.cleanup()
raise
if __name__== "__main__":
main()

82
service/service.py Normal file
View file

@ -0,0 +1,82 @@
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from pulsectl import Pulse
import SocketServer
from threading import Thread
LISTEN_ON = ("10.0.0.4", 2000)
def main():
pulse = Pulse('mic-control')
sources = pulse.source_list()
sourceNumber = getSourceSelection(sources)
server = SocketServer.TCPServer(LISTEN_ON, RequestHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.server_close()
def getSourceSelection(sources):
sourceCount = len(sources) - 1
error = False
while True:
message = error if error else "Please select a source: "
print(message)
for i, source in enumerate(sources):
print "%i: %s" % (i, source.description)
selection = raw_input("Enter a number[0-%i]:" % sourceCount)
print("")
try :
return getInt(selection, sourceCount)
except InputError as e:
error = e.message
def getInt(value, sourceCount):
number = 0
try:
number = int(value)
except ValueError as e:
raise InputError("Enter only a number...")
if number not in range(0, sourceCount):
raise InputError("Not a valid option...")
return number
class RequestHandler(SocketServer.StreamRequestHandler):
def handle(self):
for line in self.rfile:
message = line.strip()
if message in messageTypes:
messageTypes[message]()
self.wfile.write(message)
print("Closed!")
self.request.close()
def buttonPressed():
print("down!")
def buttonReleased():
print("up!")
messageTypes = {
'button_press': buttonPressed,
'button_release': buttonReleased,
}
class InputError(Exception):
def __init__(self, message):
self.message = message
main()