forked-daapd iTunes / AirPlay Server - Plugin für Start eines (Radio-)Streams an im Netzwerk vorhandene AirPlay-Lautsprecher

  • Hallo zusammen,


    bin erst neu im Thema Homebridge, habe allerdings schon RaspPi mit 433MHz-Sender installiert und mit Plugins Logi Harmony, Netatmo Wetterstation und noch andere Kleinigkeiten eingebunden.


    Nun bin ich auf der Suche nach einer (einfachen) Möglichkeit, per Button in Homekit (via Homebridge) einen Radiostream auf im Netz befindliche Airplay-Lautsprecher zu starten.


    Ich habe schon Forked-DAAPD auf dem RaspPi installiert. Damit kann man ja schon mal das realisieren, was ich eigentlich möchte: Airplay-Lautsprecher auswählen und Stream starten. Funktionierte gut.


    Forked DAAPD bietet auch die Möglichkeit über MPD steuerbar zu sein. Und mit Homebridge-MPD gibt es ja auch ein Plugin. Trotz richtiger Konfiguration habe ich es allerdings nicht geschafft, einen Stream damit zu starten.


    Hat jemand eine ähnliche Konfiguration im Einsatz?

  • Hey sargnagel,


    ich habe eine Art Webradio in meiner Homebridge drin, zwar nicht auf dem schönsten Wege, aber vielleicht hilft es dir ja weiter... :)


    Normalerweise nutze ich meinen Homeserver als Airplay Empfänger, was ich über Shairport löse. Daher hängt dort auch meine Stereoanlage dran. Ich habe das ganze jetzt etwas erweitert, indem ich das gute alte Snakeberry (https://github.com/salendron/Snakeberry) seitens API etwas modifiziert habe, damit es mit dem Plugin "Better HTTP RGB" läuft (Outputs der API von Json auf Plain geändert). In dem Sinne ist mein Webradio jetzt eine Lampe, die Helligkeit steuert die Lautstärke.


    Im Endeffekt könntest du das ähnlich machen, Snakeberry läuft auf deinem Raspberry und du streamst das ganze über PulseAudio-RAOP2 auf deinen Airplay Lautsprecher. Habe allerdings RAOP2 noch nicht verwendet, daher kann ich dir nicht sagen, wie gut das läuft.


    Falls du interessiert bist, kann ich dir gerne das modifizierte Snakeberry bereitstellen. ;)

  • Hallo celonix, vielen Dank schon mal! Probiere ich definitiv aus!


    Deine Lösung ist prinzipiell ähnlich wie die von mir geschilderte (allerdings anscheinend nicht funktionierende) Kombination aus Forked-DAAPD und MPD.


    Ich habe mich eben noch einmal mit Forked-DAAPD beschäftigt. Irgendwie funktioniert die Auswahl mehrerer Airplay-Boxen und der Start des Radiostreams zwar, aber leider nicht immer. Mit der Anzahl der Versuche steigen auch die Fehlermeldungen. Robust ist Foirked-DAAPD bei mir anscheinend nicht.


    So abwegig ist eine solche Funktion (Webstream auf mehrere Airplay-Lautsprecher gleichzeitig, kam im ersten Post vielleicht nicht ganz rüber) in Homebridge doch auch nicht, oder? Mich wundert echt, dass es in dieser Richtung sonst noch gar nichts gibt...

  • Und noch ein kleiner Nachsatz: Forked-DAAPD hat eine umfangreiche API, die per PUT/GET angesteuert wird und somit auch mit curl funktioniert. Klappt über ein Terminal schon mal perfekt.

    Damit würde ja entweder ein Steuern über ein CMD-Plugin oder ein HTTP-Plugin möglich sein. Ich habe nun alle ausprobiert, aber irgendwie hakt immer was. Zum Teil, weil neben On/Off auch ein "Status" notwendig ist. Und da weiß ich nicht, was ich am besten hinterlege...

  • Habe es endlich hinbekommen. Das Plugin "homebridge-http-multiswitch" steuert Forked-DAAPD via PUT/HTTP. Kann den Radiostream an alle verfügbaren Airplay-Lautsprecher nun über einen Schalter an- und ausschalten.

  • Noch etwas verbessert: ... mit "homebridge-better-http-rgb" kann ich nun auch den "Brightness"-Regler zur Lautstärkeregelung nutzen.

  • Hi svk,


    ich habe Forked-DAAPD auf meinem Raspberry Pi installiert.


    (Siehe hier: https://github.com/ejurgensen/…daapd/blob/master/INSTALL)


    Forked-DAAPD sollte danach unter der Raspberry-Pi-IP mit dem Port 3689 per Webfrontend erreichbar sein, z.B. http://192.168.0.111:3689, wenn RaspPi diese IP hat...


    Ich habe nun im in der Forked-DAAPD-Config festgelegten Music-Verzeichnis auf dem RaspPi eine stream.pls mit meinem Radiostream hinterlegt. Sollte meist direkt und einfach auf der Website des Radiosenders runterzuladen sein. Wenn man über das Webfrontend die Library aktualisiert, sollte der Stream aufgenommen werden und unter Albums zu finden sein. Ich habe dann den Stream zur Abspiel-Queue hinzugefügt und Forked-DAAPD auf „Repeat“ gestellt.


    Forked-DAAPD findet automatisch etwaige AirPlay-Empfänger im gleichen Netzwerk. Diese kann man auch ganz einfach über das Webfrontend für die Wiedergabe auswählen.


    Mit der API ist Forked-DAAPD dann komplett per HTTP/PUT steuerbar. Siehe Dokumentation hier: https://github.com/ejurgensen/…master/README_JSON_API.md


    Wenn man im Terminal z.B. curl -X PUT "http://192.168.0.111:3689/api/player/play" eingibt, dann startet die Wiedergabe. Mit curl -X PUT "http://192.168.0.111:3689/api/player/stop" stoppt sie.


    Ich habe dann ein http-Homebridge-Plugin installiert, mit dem ich eine „Lampe“ in Homebridge einfüge, die über diese HTTP-„Befehle“ (ohne curl -X PUT und die Anführungszeichen natürlich...) die Wiedergabe mit Forked-DAAPD startet oder stoppt. In den Zeilen für das HTTP-Plugin in der config.json müsste neben den URLs für On und Off auch die http_method mit "PUT" hinterlegt sein.


    Ein Schritt weiter wäre dann ein HTTP-RGB-Plugin, um mit der Helligkeit die Lautstärke zu steuern...


    Ich hoffe, das hilft ein wenig beim Einrichten...

    Einmal editiert, zuletzt von sargnagel ()

  • Könntest du vielleicht deine Config posten. Irgendwie bekomme ich nicht die Lautsprecher eingeschaltet mit dem HTTP Plugin. Stop und Play funktioniert.

    • Hilfreich

    Hallo,

    ich habe mir das mal angesehen und eingerichtet.

    Falls es jemand auch in Betrieb nehmen möchte.


    Zur Zuverlässigkeit kann ich leider noch nichts sagen.


    Ablauf im groben:

    Doku: https://www.raspberrypi.org/forums/viewtopic.php?t=49928


    benötigten Key importieren

    Code
    cd $HOME
    wget http://www.gyfgafguf.dk/raspbian/forked-daapd.gpg $HOME/forked-daapd.gpg
    cat ./forked-daapd.gpg  | sudo apt-key add -
    rm -f ./forked-daapd.gpg
    apt-key list

    jetzt sollte dieser Key zu sehen sein


    jetzt mit nano einer Datei unten anfügen:

    Code
    sudo nano /etc/apt/sources.list

    dies einfügen und speichern.

    Code
    deb http://www.gyfgafguf.dk/raspbian/forked-daapd/ stretch contrib

    sollte jetzt so aussehen


    Nun die Pakte aktualisieren und das Paket "forked-daapd" installieren.

    Code
    sudo apt update
    sudo apt install forked-daapd

    Danach die Datei /etc/forked-daapd.conf anpassen, das wichtigste war ipv6 auf no setzen.

    Die /srv/music/sender.m3u erstellen oder anpassen.

    (beide Dateien hang hier an, ".txt" entfernen)


    Jetzt den Dienst neu starten

    Code
    sudo service forked-daapd restart

    Das Homebridge-Plugin installieren

    Code
    sudo npm install -g homebridge-cmdswitch2

    und die config .json anpassen

    (für die IP Adresse 192.168.23.232 müsst Ihr die IP Adresse von eurem RasBerry einsetzen und

    natürlich eure eigenen ID's auslesen und einsetzen)

    Die Doku zur API ist hier: https://github.com/ejurgensen/…master/README_JSON_API.md

    hier die wichtigsten Befehle:

    sudo service forked-daapd restart -> Dienst Neustarten (nach Änderungen an /etc/forked-daapd.conf nötig)

    tail -f /var/log/forked-daapd.log -> LOG Anzeigen


    curl -X PUT "http://192.168.23.232:3689/api/player/play" -> Wiedergabe starten

    curl -X PUT "http://192.168.23.232:3689/api/player/stop" -> Wiedergabe stolen

    curl -X PUT "http://192.168.23.232:3689/api/queue/clear" -> queue leeren


    # Play-queue listen

    curl -X GET "http://192.168.23.232:3689/api/queue" -> ID der Sender auslesen


    wichtig sind diese Werte

    "track_id": 14. "album_artist_id": "4277297693694557792"



    # verfügbare Lautsprecher anzeigen

    curl -X GET "http://192.168.23.232:3689/api/outputs" -> ID der Lautsprecher auslesen


    hier sieht man die benötigten Werte

    "id": "233797575618897", "name": "HomePod Wohnzimmer"




    Als Ergebnis sind diese Geräte zu sehen.

    2 versch. Radio Sender

    8 einzelne Geräte (Lautsprecher) zur Wiedergabe zuschaltbar

    1 Gerätegruppe (Lautsprecher in Küche, Bad und Schlafzimmer)



    Ich hoffe es Hilft jemanden weiter:


    :)

  • Ich habe nun im in der Forked-DAAPD-Config festgelegten Music-Verzeichnis auf dem RaspPi eine stream.pls mit meinem Radiostream hinterlegt.

    Kann jemand das genau erklären? In der entsprechenden conf werden so einige Pfade angegeben. Welcher ist das standardmäßig genau und wie muss die stream.pls genau aussehen?

  • det Ach, perfekt! Dank dir. /srv/Music ist dann wohl sicherlich standardmäßig ein bekannter Ordner welcher automatisch erkannt wird und wo man eben solche .m3u ablegen kann? Bin die Tage unterwegs und kann es selber nicht nachtesten, will aber direkt das testen sobald ich die Zeit finde.


    Endlich kann ich mir dann einen Radiowecker in Homebridge kreieren. :)



    Edit: Ok, hab mal in deine conf geschaut, /srv/Music scheint tatsächlich eben genau DER Pfad zu sein, welchen ich benötige.

  • Ich hab mal deine Senderliste reingemacht det und bin deinem Tutorial gefolgt. Die CMD-Switche tauchen auch in Homekit jetzt auf, jedoch passiert auf Druck nichts (außer eben on und off).


    Der Log:



    Die 400 Bad Request kommen genau dann, wenn ich einen der Switche betätige.


    Meine config:


    Die IP-Adresse und der Port ist korrekt, der Name meines Homepods "Wohnzimmer" und die ID 23371XXXXXXXXXX ist ebenfalls richtig. manufacturer, model und serial habe ich von dir genommen. Wo kriegt man denn eine Serial her oder ist diese Standard?


    Das hier will schon nicht funktionieren. Wie gesagt, die Weboberfläche ist über den Port erreichbar.

    HTML
    pi@raspberrypi:~ $ curl -X PUT "http://192.168.178.27:3689/api/queue"
    <html>
    <head>
    <title>400 Bad Request</title>
    </head>
    <body>
    <h1>Bad Request</h1>
    </body>
    </html>



    Edit: Ok, hab mal die queue geleert, folgendes nun:



    pi@raspberrypi:/srv/music $ curl -X PUT "http://192.168.178.27:3689/api/queue/clear"

    pi@raspberrypi:/srv/music $ curl -X GET "http://192.168.178.27:3689/api/queue"

    { "version": 85, "count": 0, "items": [ ] }p

  • <p>War tatsächlich nicht aktiviert. Peinlich. Aber es will dennoch nicht, beim Druck auf den cmd Switch kommt wieder eine 404 Meldung. Auf der weboberfläche taucht zwar als speaker mein chromecast auf der im Netzwerk ist, aber nicht der homepod.
    Im Browser werden alle streams gelistet, auf Knopfdruck steht zwar Play, aber es passiert nicht. Nur die Standard Stream.mp3 läuft und wird gespielt (über meine pc Lautsprecher entsprechet).</p>
    <p><br></p>
    <p><br></p>
    <p>Sent from my iPhone using <a href="http://r.tapatalk.com/byo?rid=95532">Community</a></p>

  • Kommando zurück, der Homeod wird DOCH in der Weboberfläche angezeigt. Jedoch ausgegraut und kann nicht lauter gemacht werden. Wenn ich die Admin-Settings gehe kann ich einen Haken beim Homepod setzen, der wird aber nach einer Sekunde automatisch entfernt, so auch beim Chromcast.

    Alle Streams werden wie gesagt gelistet, aber bei Play ist nichts zu hören, auch wenn sich das Stop zu einem Play Button ändert, Ausnahme hier: stream.mp3.


    Was mir auffiel, unter den Lautsprechern ist mein PC, CHromecast, Homepod und HTTP-Stream (stream.mp3), wenn ich einen Stream aus meiner Liste wähle und DANACH auf HTTP-Stream (stream.mp3) wähle, wird dieser über meine PC-Lautsprecher gespielt. Ich MUSS also in der Weoberfläche immer erst einen Stream wählen und dann als Output HTTP-Stream. Ist das so echt gedacht? Dann kann ich ja quasi nie meinen Lautsprecher wählen. Wie auch immer, mein Ursprungsproblem ist weiterhin da.


    Ich hab über systemd mal forked-daapd neu gestartet, jetzt geht auch curl -X PUT "http://192.168.178.27:3689/api/player/play" nicht, hier kommt eine 500 internal Server Error Meldung (überhaupt, welchen Output nutzt der hier als Lautsprecher und welchen stream soll der starten...?)


  • Ich hab jetzt alles deinstalliert und 1:1 nach deiner Anleitung gemacht det


    Log:


    Der queue Abruf gibt komischerweise keine items.

    Code
    pi@raspberrypi:~ $ curl -X GET "http://192.168.178.27:3689/api/queue"
    { "version": 173, "count": 0, "items": [ ] }


    Die Streamliste ist vorhanden (und sieht aus wie deine)

    Code
    pi@raspberrypi:~ $ ls /srv/music/
    sender.m3u


    Unter http://192.168.178.27:3689 tauchen alle Sender auf.


    Langsam verzweifle ich hier. :/

  • det Vielen, vielen Dank für deine geniale Anleitung!! - Hab' ewig nach so einer Möglichkeit gesucht , um morgens eine Radio Wiedergabe über meine Airplay Speaker mittels Homebridge umsetzen zu können. Bin sogar dazu übergegangen in einen Sonos CONNECT zu investieren, welcher jetzt wieder zurück geht ;)


    Also, super Anleitung und so macht es einfach Spaß seine Homebridge zu erweitern!!


    Danke dir!

    Kleine Anmerkung: Wenn ich in den Befehlen an die forked-daapd API die track-id mit eingetragen habe, gab' es keinen komisch Bug, welcher bei mir immer den ersten Eintrag meiner sender.m3u wiedergegeben hat. Unabhängig von der korrekten album_artist_id. Ebenso wurden dann immer alle Sender auf die Playlist gesetzt. - Ich habe nun einfach die track-id weggelassen und übermittle nur noch die album_artist_id an forked-daapd. So funktioniert es einwandfrei ;)

    Ich habe bei mir noch die Auswahl des Speakers und die Einstellung der Lautstärke mit dem Abspiel Command kombiniert. So reicht ein HomeKit-Taster, um direkt den richtigen Speaker auf entsprechender Lautstärke zu bespielen.


    Bsp:


    Code
    {
    "name": "SWR 3",
    "on_cmd": "curl -X PUT 'http://192.168.0.70:3689/api/outputs/259926337371571' --data '{\"selected\":true, \"volume\": 15}'; curl -X PUT \"http://192.168.0.70:3689/api/queue/clear\"; curl -X POST \"http://192.168.0.70:3689/api/queue/items/add?uris=library:artist:6337818312333263560\"; curl -X PUT \"http://192.168.0.70:3689/api/player/play\"",
    "off_cmd": "curl -X PUT \"http://192.168.0.70:3689/api/player/stop\"",
    "manufacturer": "WebRadio",
    "model": "forked-daap",
    "serial": "00XXXXXXXX1"
    }

    Finde aber die Möglichkeit im Nachhinein Speaker der Wiedergabe hinzuzufügen (wie oben gezeigt) super elegant!! - Werde dies für meinen zweiten Raum so in Angriff nehmen ;)

    Habt ihr Lösungsvorschläge, um die Lautstärke der Wiedergabe über forked mittels HomeKit/Siri steuerbar zu machen?