From ca11d99f8d69cc5a6706d975d20de26fd27b3a4a Mon Sep 17 00:00:00 2001 From: Tilman Date: Fri, 3 Nov 2017 20:30:20 +0100 Subject: [PATCH] bugfix --- code/piplayer3.py | 6 +- code/piplayer3_noCallback.py | 194 ----------------------------------- 2 files changed, 4 insertions(+), 196 deletions(-) delete mode 100644 code/piplayer3_noCallback.py diff --git a/code/piplayer3.py b/code/piplayer3.py index 2a88e45..18b1eca 100644 --- a/code/piplayer3.py +++ b/code/piplayer3.py @@ -68,9 +68,11 @@ def call(method, params=None): logging.info('Request: ' + json) try: response = requests.post(MOPIDY_RPC_URL, data=json, timeout=REQUEST_TIMEOUT) - except: + logging.info('Response: ' + response.text) + except Exception as ex: logging.error('Exeption during request') - logging.info('Response: ' + response.text) + logging.error(ex.output) + return response def add_uri(filename): diff --git a/code/piplayer3_noCallback.py b/code/piplayer3_noCallback.py deleted file mode 100644 index cdc16a1..0000000 --- a/code/piplayer3_noCallback.py +++ /dev/null @@ -1,194 +0,0 @@ -# Control script for the piPlayer. In order to run with PulseAudio, the OSS -# sound driver has to be set as first option in ~/.moc/config -# The mocp server is then run over the padsp wrapper. -# -# ~/.moc/config -# # Use OSS for Pulseaudio compatibility (run 'padsp mocp') -# SoundDriver = OSS:ALSA:JACK - -import RPi.GPIO as GPIO -import logging -import time -import subprocess -import select # see http://stackoverflow.com/a/10759061/3761783 -import os - -logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s - %(message)s') -logging.info('Initializing') - -# Configuration -MUSIC_BASE_DIRECTORY = "/media/share/Kinder/" -SOUND_SCANNING = "file:///home/pi/sounds/scanning.mp3" -SOUND_OK = "file:///home/pi/sounds/ok.mp3" -SOUND_SCAN_FAIL = "file:///home/pi/sounds/fail.mp3" -SOUND_PLAYBACK_ERROR = "file:///home/pi/sounds/error.mp3" -QR_SCANNER_TIMEOUT = 3 -BUTTON_PAUSE = 0.4 - -# photo sensor on PIN 17 -PIN_SENSOR = 17 - -# IR LED on PIN 22 -PIN_IR_LED = 22 - -# LED on PIN 27 -PIN_LED = 27 - -# Buttons on PINs 9, 10 and 11 -PIN_PREV = 9 -PIN_PLAY = 10 -PIN_NEXT = 11 - - -GPIO.setmode(GPIO.BCM) - -GPIO.setup(PIN_SENSOR, GPIO.IN) - -GPIO.setup(PIN_IR_LED, GPIO.OUT) -GPIO.output(PIN_IR_LED, GPIO.LOW) - -GPIO.setup(PIN_LED, GPIO.OUT) -GPIO.output(PIN_LED, GPIO.LOW) - -GPIO.setup(PIN_PREV, GPIO.IN, pull_up_down=GPIO.PUD_UP) -GPIO.setup(PIN_PLAY, GPIO.IN, pull_up_down=GPIO.PUD_UP) -GPIO.setup(PIN_NEXT, GPIO.IN, pull_up_down=GPIO.PUD_UP) - - - -photo_sensor_still_active = False - -try: - logging.info('Start moc server') - subprocess.call(["padsp", "mocp", "--server"]) - subprocess.call(["mocp", "--clear"]) - subprocess.call(["mocp", "-l", SOUND_OK]) - - while True: - - # TODO what's a good value here? - time.sleep(0.01) - - if (GPIO.input(PIN_PREV) == False): - logging.debug('mocp --previous') - subprocess.call(["mocp", "--previous"]) - time.sleep(BUTTON_PAUSE) - # TODO wait for ~0.25 s, if button is still pressed, seek instead of skipping - - if (GPIO.input(PIN_PLAY) == False): - logging.debug('mocp --toggle-pause') - subprocess.call(["mocp", "--toggle-pause"]) - time.sleep(BUTTON_PAUSE) - - if (GPIO.input(PIN_NEXT) == False): - logging.debug('mocp --next') - subprocess.call(["mocp", "--next"]) - time.sleep(BUTTON_PAUSE) - # TODO wait for ~0.25 s, if button is still pressed, seek instead of skipping - - # check photo sensor - if ((not photo_sensor_still_active) and (GPIO.input(PIN_SENSOR) == GPIO.HIGH)): - logging.debug('Photo sensor active, activating light and camera') - subprocess.call(["mocp", "-l", SOUND_SCANNING]) - - # turn LED on - GPIO.output(PIN_LED, GPIO.HIGH) - - # scan QR code - zbarcam = subprocess.Popen(['zbarcam', '--nodisplay', '--raw', '-Sdisable', '-Sqrcode.enable', '--prescale=320x240', '/dev/video0'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - - poll_obj = select.poll() - poll_obj.register(zbarcam.stdout, select.POLLIN) - - # wait for scan result (or timeout) - start_time = time.time() - poll_result = False - while ((time.time() - start_time) < QR_SCANNER_TIMEOUT and (not poll_result)): - poll_result = poll_obj.poll(100) - - if (poll_result): - - try: - - qr_code = zbarcam.stdout.readline().rstrip() - qr_code = qr_code.decode("utf-8") # python3 - logging.debug("QR Code: {}".format(qr_code)) - - if (not qr_code.startswith("http://")): - # create full path - full_path = MUSIC_BASE_DIRECTORY + qr_code - - logging.debug("Full Path {}".format(full_path)) - if (not os.path.isfile(full_path)): - logging.debug("not a file > add as directory") - directory = full_path - logging.debug("Directory {}".format(directory)) - else: - logging.debug("it's a file") - directory = os.path.dirname(os.path.realpath(full_path)) - filename = os.path.basename(full_path) - logging.debug("Directory {}".format(directory)) - logging.debug("Filename {}".format(filename)) - - os.chdir(directory) - - #onlyfiles = [f for f in os.listdir('.') if os.path.isfile(os.path.join('.', f))] - #logging.debug(onlyfiles) - - else: - logging.debug("URL > open as stream") - stream_url = qr_code - - subprocess.call(["mocp", "--clear"]) - subprocess.call(["mocp", "--stop"]) - - logging.debug("Stopped") - - # play confirmation sound - subprocess.call(["mocp", "-l", SOUND_OK]) - - if ('stream_url' in locals()): - logging.debug("Add stream") - subprocess.check_call(["mocp", "-a", stream_url]) - del stream_url - elif ('filename' in locals()): - logging.debug("Add file {}".format(filename)) - subprocess.check_call(["mocp", "-a", filename]) - del filename - else: - logging.debug("Add directory {}".format(directory)) - subprocess.check_call(["mocp", "-a", "."]) - - # subprocess.check_call(["mocp", "-a", target, "-p"]) - logging.debug("Start playback") - subprocess.check_call(["mocp", "-p"]) - - except subprocess.CalledProcessError as e: - logging.debug("Error starting playback, mocp returned {}".format(e.returncode)) - logging.debug(e.output) - subprocess.call(["mocp", "-l", SOUND_PLAYBACK_ERROR]) - except FileNotFoundError as e: - logging.debug("Could not open directory {}".format(directory)) - subprocess.call(["mocp", "-l", SOUND_PLAYBACK_ERROR]) - else: - logging.debug('Timeout on zbarcam') - subprocess.call(["mocp", "-l", SOUND_SCAN_FAIL]) - - # consider the photo sensor to be blocked - photo_sensor_still_active = True - - zbarcam.terminate() - - # LED off - GPIO.output(PIN_LED, GPIO.LOW) - - elif (GPIO.input(PIN_SENSOR) == GPIO.LOW): - # the photo sensor is not blocked (anymore) - photo_sensor_still_active = False - -# Exit when Ctrl-C is pressed -except KeyboardInterrupt: - logging.info('Close moc server') - subprocess.call(["mocp", "--exit"]) - logging.info('Reset GPIO configuration and close') -GPIO.cleanup() \ No newline at end of file