Max2Play Home › Forums › Max2Play on Raspberry PI › GPIO Pin Musikwiedergabe / Music playback
- This topic has 4 replies, 2 voices, and was last updated 8 years, 11 months ago by Funkiller premium.
-
Posted in: Max2Play on Raspberry PI
-
5. Dezember 2015 at 23:28 #17132
Hallo,
gibt es aktuell eine Möglichkeit einen der GPIO Pins des Raspberrys bei Musikwiedergabe zu schalten um z.B. eine Stereoanlage über ein Relais einzuschalten?
Hello,
is it already possible to use an GPIO Pin from the Raspberry when the music is playing to turn on an Stereo with an relay?
Mit freundlichen Grüßen
Best regardsTim
11. Dezember 2015 at 15:44 #17288Hallo Tim,
die Schwierigkeit liegt an der Erkennung, ob Musik abgespielt wird.
Das ist mit Shairport (Airplay) relativ einfach, da man hier Start- und Stopparameter übergeben kann, die jeweils Scripte ausführen wenn ein Stream startet oder stopt. Wenn es dir also nur um Shairport geht, dann ist es kein Problem damit die GPIO Pins zu schalten. Dazu bearbeitest du z.B. das Startscript unter
/etc/init.d/shairport
(allerdings kannst du dann keine Max2Play-Updates mehr durchführen)Mit Squeezelite und anderen Audioplayern kenne ich leider keine verlässliche Möglichkeit, den Zustand (spielt ab / pause) zu erkennen.
13. Dezember 2015 at 19:30 #17309Hallo flysurfer,
zuerst mal ein großes Danke für den Tritt in die richtige Richtung.
Shairport reicht mir zuerst einmal da ich damit die Stereoanlage im Schlafzimmer schalte. Ich habe mich mal mit dem Startscript beschäftige, habe auch erst Erfolge zu verzeichnen gehabt.
Allerdings habe ich nicht die richtigen Punkte gefunden an denen die Parameter übergeben werden, sondern wenn Shairport komplett gestartet bzw. beendet wird(Im Browserfenster).Kannst du mir sagen wo genau die Parameter der Wiedergabe übergeben werden?
Grüße Tim
14. Dezember 2015 at 14:30 #17322Hallo Tim,
aktuell gibt es im Webinterface keinen Parameter den du dafür direkt nutzen kannst. Allerdings gibt es die Funktion, die den Squeezelite Player deaktiviert, sobald über Shairport ein Stream abgespielt wird. Diese Funktion kannst du „umbasteln“ damit es die GPIO Pins anspricht.
Der Punkt, an dem du ansetzen kannst, ist in dem Max2Play Startscript von Shairport
/etc/init.d/shairport
in der Zeile 20, die die „on-start“ und „on-stop“ Parameter beinhaltet. Darin kannst du deine eigenen Scripte mit Parametern hinterlegen.if [ ! "$LMSIP" = "" ]; then SHAIRPORT_OPTIONS="--on-start '/opt/max2play/shairport_switch.sh shutup' --on-stop '/opt/max2play/shairport_switch.sh resume'" else SHAIRPORT_OPTIONS="" fi
Dann schaut das z.B. so aus (die if-Anweisung rausnehmen)
SHAIRPORT_OPTIONS="--on-start '/opt/gpio-script.sh activate' --on-stop '/opt/gpio-script.sh deactivate'"
Viele Grüße
Stefan14. Dezember 2015 at 22:29 #17327Hallo Stefan,
ich glaube bei der Weboberfläche hast du mich falsch verstanden.
Bei der Weboberfläche ging es um das Starten bzw. Stoppen des ganzen Shairport Prozesses.
Aber das mal beiseite.Durch deinen Tipp bei welchem Codeteil ich den Hebel ansetzen kann bin ich nun erfolgreich.
Meine Lösung für alle Interessierten:
1. Es muss WiringPi installiert sein.
2. Im Startscript (/etc/init.d/Shairport) folgenden Code austauschenif [ ! "$LMSIP" = "" ]; then SHAIRPORT_OPTIONS="--on-start '/opt/max2play/shairport_switch.sh shutup' --on-stop '/opt/max2play/shairport_switch.sh resume'" else SHAIRPORT_OPTIONS="" fi
durch
SHAIRPORT_OPTIONS="--on-start '/opt/max2play/gpio_toggle.sh on' --on-stop '/opt/max2play/gpio_toggle.sh off'"
3. Eine Datei erstellen mit dem Namen gpio_toggle.sh unter /opt/max2play/
mit folgendem Inhalt#!/bin/bash ### GPIO Schalten an/aus echo "$1" if [ "$1" == "on" ] ; then gpio export 17 out gpio -g write 17 1 fi if [ "$1" == "off" ] ; then gpio export 17 out gpio -g write 17 0 fi
Das war es dann schon.
Herzlichen Dank an StefanGrüße Tim
-
You must be logged in to reply to this topic.