Ich baue die Jukebox grade in einem Feuerwehrauto. Dieses besitzt blau beleuchtete Knöpfe (als Blaulicht verbaut [GPIO5/GPIO6], standardmäßig an), gelb beleuchtete Knöpfe (als "Fernlicht" verbaut, in Reihe geschaltet [GPIO13], standardmäßig aus) und einen "Spezial-Knopf". Wenn dieser Knopf gedrückt wird, soll ein Martinshorn erklingen und die Knöpfe blinken. Dazu würde ich gerne abfragen, ob VLC grade ein Lied spielt, damit ich dieses pausieren und am Ende wieder starten kann.
Laut https://n0tablog.wordpress.com/2009/02/09/con…no-programming/ sollte der Befehl dazu is_playing sein. Wie kann ich diese Abfrage in mein Script einbauen?
Das Script ist bisher nur geschrieben aber völlig ungetestet, da ich die LEDs der Knöpfe erst einmal anschließen muss. Gerne kann also einmal jemand drübergucken, ob es so überhaupt funktionieren würde.
import RPi.GPIO as GPIO
import time
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(5,GPIO.OUT)
GPIO.setup(6,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
# Blaue LEDs aus
GPIO.output(5, GPIO.LOW)
GPIO.output(6, GPIO.LOW)
# abfragen ob VLC spielt, ggf pause
i = is_playing # HIER MUSS KORRIGIERT WERDEN
if i = 1:
check_call("echo 'pause' | nc.openbsd -w 1 localhost 4212", shell=True)
# martinshorn starten - mp3 Länge = 7 Sekunden
subprocess.Popen(['mpg123', '/home/pi/RPi-Jukebox-RFID/misc/martinshorn.mp3'])
# LEDs blinken
for x in range(0, 7):
GPIO.output(13,GPIO.HIGH)
GPIO.output(5,GPIO.HIGH)
time.sleep(0.25)
GPIO.output(5, GPIO.LOW)
GPIO.output(6,GPIO.HIGH)
time.sleep(0.25)
GPIO.output(13,GPIO.LOW)
GPIO.output(6,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
time.sleep(0.25)
GPIO.output(5,GPIO.LOW)
GPIO.output(6,GPIO.HIGH)
time.sleep(0.25)
# Blaue LED an
GPIO.output(5,GPIO.HIGH)
# wenn is_playing = 1 war, dann wieder play
if i = 1:
time.sleep(1)
check_call("echo 'pause' | nc.openbsd -w 1 localhost 4212", shell=True)
Display More
Starten wollte ich den Ablauf durch eine angepasste Version von diesem Beitrag:
[Projekt] jukebox4kids (Jukebox für Kinder)
from gpiozero import Button
from signal import pause
from subprocess import check_call
def def_shutdown():
check_call(['sudo', 'poweroff'])
def def_next():
check_call("echo 'next' | nc.openbsd -w 1 localhost 4212", shell=True)
def def_prev():
check_call("echo 'prev' | nc.openbsd -w 1 localhost 4212", shell=True)
def def_halt():
check_call("echo 'pause' | nc.openbsd -w 1 localhost 4212", shell=True)
def def_spezial():
check_call(['sudo', 'python', '/home/pi/RPi-Jukebox-RFID/scripts/spezial.py'])
shut = Button(3)
next = Button(16)
prev = Button(20)
halt = Button(26)
spezial = Button(21)
shut.when_pressed = def_shutdown
next.when_pressed = def_next
prev.when_pressed = def_prev
halt.when_pressed = def_halt
spezial.when_pressed = def_spezial
pause()
Display More
Funktioniert das denn überhaupt? Denn wie gesagt, ist das komplett ungetestet, da ich die Knöpfe bisher noch nicht anschließen konnte.