GPIO Pin Musikwiedergabe / Music playback

Max2Play Home 2016 (en) Forums Max2Play on Raspberry PI GPIO Pin Musikwiedergabe / Music playback

This topic contains 4 replies, has 2 voices, and was last updated by  Funkiller premium 11 months, 3 weeks ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • 5. December 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 regards

    Tim

    11. December 2015 at 15:44 #17288

    Hallo 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. December 2015 at 19:30 #17309

    Hallo 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. December 2015 at 14:30 #17322

    Hallo 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
    Stefan

    14. December 2015 at 22:29 #17327

    Hallo 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 austauschen

    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

    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 Stefan

    Grüße Tim

    • This reply was modified 11 months, 3 weeks ago by  Funkiller.
    • This reply was modified 11 months, 3 weeks ago by  Funkiller.
Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.

Register here