Medienausgabe in verschiedenen Räumen

HA MediaPlayer

Ich hatte mir erhofft dass ein Smarthome-System auch die Ausgabe von Medien in verschiedenen Räumen unterstützen könnte. So richtig vorstellen wie das funktionieren sollte konnte ich mir zwar nicht, aber Beschreibungen wie der des Media Players von Home Assistant (siehe links) machten mit Mut dass es doch irgendwie einfach gehen würde.
Immerhin hat mein 5.1-Audiosystem sogar eine HTML-Homepage, evtl. gibt es ein verstecktes API auf das man zugreifen könnte? Mein Fernseher wurde als "smart" beworben, da wird doch wohl noch mehr gehen außer dass er einen Netzzugang benötigt?

Natürlich funktioniert nichts von alleine. Es war schon ein ziemlicher Aufwand lediglich einen Ton vom Raspberry abzuspielen auf dem Home Assistant läuft, vom Zugriff auf andere Geräte ganz zu schweigen.

Wie also schaffe ich es dass in meiner Wohung überall die Musik spielt die ich gerne hätte?

Die Idealvorstellung wäre dass ich alles von überall kontrollieren kann. Ich schaue ein Video und will dann anfangen zu kochen, also schiebe ich das Video auf ein Tablet mit dem ich in die Küche gehen kann. Ich höre Radio und es soll entweder im ganzen Haus zu hören sein oder gar mir folgen. Geh ich ins Bett und habe vergessen den Fernseher auszuschalten sollte das möglich sein ohne aufzustehen.

Ideal wäre es wenn die Parameter unterschiedlich einstellbar sind. Bin ich im Schlafzimmer kann ich die Musik ausschalten oder leiser drehen ohne die Gäste zu beeinflussen. 

Teile sollten auch automatisierbar sein. Wenn möglich möchte ich meinen Radiowecker ersetzen, das neue Gerät sollte zumindest eine Erkennung des Wochentags haben damit ich es nicht immer am Sonntag abschalten muss. Ideal wäre eine Integration in Home Assistant damit ich dessen Feiertagserkennung benutzen kann. Dabei würde mir schon reichen wenn das Radio sich per smarter Steckdose abschalten lassen könnte - mein jetziges vergisst dann alle Senderpositionen.

Medienserver

Für den Anfang habe ich mir dann einen Medienserver aufgesetzt. Das ist bei mir einfach ein System mit OSMC, auf einer lokalen Platte lagern die Medien. So habe ich einmal einen Teil erfüllt, nämlich von jedem Gerät aus Zugriff auf meine Filme und Musik zu haben.

Musik gibt es also nur da wo ich einen passenden Client (also ein Computer oder ein Tablet) habe, und dieser ist auch nicht zentral steuerbar. 

Sonos und wie sie alle heißen

Die kommerziell verfügbaren Geräte sind sicherlich die beste Lösung, aber sie sind unheimlich teuer. Ich bin nicht bereit 300€ zu bezahlen um einen mittelmäßigen Audioplayer in meine Küche zu stellen. Die Varianten von Lidl usw. sind etwas billiger, aber da jedes Zimmer sein eigenes System benötigt kommt da schnell eine Menge geld zusammen.

Kabel verlegen

Die einfachste Variante: man lege ein Kabel von der Steroeanlage überall hin wo es laut werden soll, und schließe es an einen Lautsprecheran.

Diese Lösung hatte ich in meiner alten Wohnung. Leider ist der Verstärker den ich dazu benutzt hatte inzwischen nicht mehr richtig funktionsfähig. 

Mein 5.1-System ist dafür auch nicht geeignet, denn es ist von den Lautsprecher-Ausgängen her natürlich exakt auf die mitgelieferten Boxen ausgerichtet. Schließe ich hier andere Boxen an leidet die Tonqualität und die 5.1-Ausrichtung. Außerdem mag ich die Bedienung des Geräts nicht, denn für die meisten Funktionen benötige ich mindestens die Fernbedienung, meistens muss aber sogar der Fernseher eingeschaltet sein.

Dann ist meine Wohnung ungünstig geschnitten und hat Wände die schweres Werkzeug erfordern um Löcher hinein zu bringen. Das ist mühsam und verursacht viel Staub und Dreck. Die Wohnung stammt aus den sechziger Jahren, und da haben es die Elektriker nicht so genau genommen was das Verlegen von Stromkabeln ging. Leitungen diagonal über die Wand? Kein Problem, und spart ja noch Kabel! Um ins Bad zu kommen muss ich in Küche oder WC durch die Wände gehen - das ist mir etwas riskant.

Und zuletzt: verlege ich Kabel kann man im beschallten Zimmer nicht über die Musik entscheiden. Was wenn Besuch da ist, ich im Schlafzimmer aber Ruhe haben möchte weil ich kurz telefonieren muss?

Google ChromeCast (Audio)

Eine Alternative die ich gefunden habe ist Google ChromeCast Audio als Sonderangebot für 29€ im Elektromarkt. Das ist ein kleines rundes Etwas das mit 5V via USB-Buchse versorgt wird und einen 3.5mm-Klinenanschluss bietet. Ein kurzes gelbes Kabel dient als Ausgabe, die Daten kommen über WLAN in das Gerät.
Was mir schon mal nicht gefällt ist der Anschluss via USB-Netzteil. Dieses ist dann permanent in Betrieb und braucht auch immer etwas Strom sowie eine Steckdose oder zwei, denn ein ordentlicher Lautsprecher benötigt ja auch Strom. Aber ich wüsste auch keine Alternative.

Bei der Videoversion ist es schon einmal möglich von VLC aus einen Film an das entsprechende Gerät zu senden, ich habe aber Bedenken ob es möglich sein wird das Video dann auch über das Gerät zu steuern - d.h. kann ich das Video mit der Fernbedienung des Fernsehers anhalten? Wie sich herausstellt: ja.

Einmal angeschlossen kann ich Inhalte an das Cast-System schicken. Das ist recht unspektakulär: das Programm muss Cast unterstützen, dann drückt man einen Knopf und der Ton kommt nach einer mehr oder minder langen Pause aus dem Cast. Die Verarbeitung erfolgt dann weiterhin im PC oder wo man das Medium gestartet hat, lediglich die Ausgabe ist verlagert.

Man kann den Cast auch anweisen einen Stream aus dem Internet wieder zu geben. Das erledigt der Cast dann von alleine. Allerdings habe ich bei einigen Radiostreams (besonders SWR3) extreme Wartezeiten bemerkt bevor es losging. Das behinderte die Experimente am Anfang weil ich die Wiedergabe immer zu früh abgebrochen habe. Wenn es dann aber mal läuft funktioniert es gut.

Ich habe aber keine Möglichkeit gefunden mehrere Geräte gleichzeitig anzusprechen um etwa bei einer Party das gesamte Haus synchron zu beschallen. Da ich auch nur ein Gerät habe kann ich nicht beurteilen ob diese Streams synchron wiedergegeben würden.

Miracast?

Eine "Variante" auf die ich gestossen bin ist ein System namens "Miracast". Es hat aber wohl nicht wirklich etwas mit GoogleCast zu tun sondern basiert auf einer Spiegelung des Bildschirms. Es wird von diversen Verkäufern so beworben als sei es eine billiger und bessere Variante zu Google, und da so ein Dongle nur 15€ kostete habe ich mir mal eines bestellt. 

Tatsächlich läßt sich damit wunderbar der Bildschirm des Telefons oder Tablets auf den Fernseher bringen. Das Einbinden ins LAN ist etwas trickreich da man sich erst einmal mit dem WLAN des Geräts verbinden und es dann per Webinterface auf den eigenen Router umbiegen muss, aber auch das geht.

Danach funktioniert es wunderbar einfach. Video öffnen, Symbol für die Schirmspiegelung anwählen, Gerät auswählen (das dauert allerdings etwas) und das Video erscheint auf dem Fernseher.

Allerdings kam es bei Videos aus dem Web immer wieder mal zu lästigen Stockern. Klar, das Video lief auch via WLAN ans Telefon und dann vom Telefon via WLAN an den Miracast, aber ich hatte schon gehofft dass das ohne Ruckler funktioniert. 

Den Schirm des PCs zu übertragen habe ich nicht hinbekommen.

Max2Play

Im Laufe der Suche stieß ich auf ein System namens Max2Play. Dieses habe ich noch nicht ausprobiert, es klingt aber ganz sinnvoll. Es handelt sich um ein Raspberry Pi-basiertes System das über LAN oder WLAN (meist) Musik verteilt. Im Internet gibt es ein paar ansprechende Bauvorschläge mit Bildschirm und netter Anzeige. Ein "WLAN-Lautsprecher" kostet dort um die 120€.

Was mich etwas irritiert ist das Lizenzmodell. Prinzipiell kann man das System wohl kostenlos nutzen, für die Nutzung von "Premium-Plugins" ist aber anscheinend eine jährliche Zahlung notwendig. Die zehn Euro pro Jahr sind zwar vernachlässigbar, aber das bedeutet für mich dass ich an diese Firma gebunden bin. Geht sie Pleite oder erhöht sie die Preise muss ich im günstigsten Fall wieder von vorne anfangen. 

Ein weiterer Nachteil ist dass der eingebaute Audioausgang des Raspberry wohl ziemlich schlecht sein soll. Es wird ein Zusatzmodul "HifiBerry" empfohlen dass noch einmal 30€ kostet und - meiner Meinung nach viel schlimmer - wie ein Deckel über dem Prozessor liegt. Dadurch kann ich weder eines der Aluminiumgehäuse verwenden die die Abwärme gut verteilen noch den Prozessor effektiv durch einen Lüfter kühlen. Allerdings soll wohl die Verwendung eines HDMI-auf-VGA-Adapters mit Klinkenanschluss das Problem lösen - unter Verlust des Monitors.

Das System basiert auf einem SqueezeBox-Server, und daraufhin habe ich mir erst einmal dieses System angesehen. 

SqueezeBox / SqueezePlayer

Interessanter als Max2Play klingt die Verwendung von SqueezeBox, denn warum eine Ableitung verwenden wenn man das Original einsetzen kann? Das ist ein System das zunächst von Logitech entwickelt wurde und dann nach dessen Einstellung als Open Source zur Verfügung gestellt wurde. Es gibt einen zentralen Server, über diesen kann man aber auch die Clients steuern. Das würde bedeuten ich kann die Musik an alle Geräte schicken, die einzelnen Geräte können aber auch individuell angepasst werden. Auch eine Integration in Home Assistant ist verfügbar.

Vermutlich ist max2play komfortabler in der Einrichtung

Der Server lässt sich wunderbar auf einem Raspberry installieren und kann dann über Port 9000 aufgerufen werden. Es erscheint die Aufforderung sich einen Account auf "mysqueezebox.com" anzulegen, aber das kann auch übersprungen werden - der Button dazu ist unscheinbar am unteren Rand versteckt. 

Dann muss man noch einen Player einrichten - es gibt einen einfachen Windows-Player der von der Kommandozeile aus funktioniert, aber auch einige bessere Tools die ich noch nicht getestet habe.

Damit läßt sich sehr schön steuern welche Musik auf welchem Player laufen soll. Ich hatte sowohl Windows als auch einen Raspberry Zero in Betrieb. 

Es gibt ein Paket namens "piCorePlayer" das ein minimales Linux auf einem PI verwendet um als Player zu dienen. Dabei kann auch ein kleiner Touchscreen angesteuert werden - damit hat man eine Art DAB+-Radio light.

Das kommt dem was ich möchte schon recht nahe. Es geht zwar nicht dass ich einfach den aktuellen Datenstrom umbiege, aber wenn ich mir angewöhne Musik immer via Webinterface anzuhören sollte das möglich sein. Da ich bisher nur einen Player aktiv habe konnte ich noch nicht testen ob und wie es funktioniert Sound an mehrere Ziele gleichzeitig zu verteilen. Den einen Player konnte ich auch wunderbar von einem (ansonsten unbeteiligten) Android-Telefon steuern. Dann also nur noch den Raspberry in ein Gehäuse mit Touchscreen wie dieses hier einbauen und ich kann meinen alten Radiowecker wegwerfen.

Leider sind alle Android-Player kostenpflichtig. Da ich noch nicht sicher bin ob ich dieses System wirklich einsetzen werde möchte ich dafür noch kein Geld ausgeben. Ich will nicht unbedingt Tablets und Telefone als Musikplayer nutzen, aber ein Android-Client wäre ideal um die Verteilung an verschiedene Geräte zu testen.

Ein Pi Zero mit einem ordentlichen Audiomodul und Netzteil kostet etwa 40 Euro, einfache Boxen sind auch für wenig Geld zu haben. Alternativ wären Einbaulautsprecher eine Lösung, dann könnte der gesamte Apparat in der Decke verschwinden. 

Nachteil: Das System scheint nur noch von wenigen Enthusiasten gefördert zu werden. Im Laufe der Recherche habe ich eine modernere Variante "Mopidy" gefunden die ich mir bald genauer anschauen werde.


Hier ein paar Links über den Aufbau von Clients. Es gibt auch Software-Clients für Android so dass ich auch ein altes Tablet verwenden könnte. Diese sind allerdings anscheinend ausnahmslos kostenpflichtig.

https://www.microsoft.com/en-us/p/squeezelite-x/9pbhmtnp9037?activetab=pivot:overviewtab

https://forums.slimdevices.com/showthread.php?106910-HOW-TO-Squeezebox-player-on-Raspberry-Pi-with-(or-without)-HiFiBerry-board

https://opensource.com/article/17/5/squeeze-pi-audio

http://www.siski.de/~carsten/squeezebox.html

https://www.instructables.com/id/Wall-Mounted-SqueezePlayer-with-Raspberry-Pi/

Mopidy 

Ähnlich wie der Logitech Medienserver scheint Mopidy zu funktionieren: irgendwo läuft ein Server und verteilt die Musik an Clients. Es scheint etwas moderner zu sein als die Variante von Logitech, darum werde ich mir das demnächst genauer ansehen.

Es gibt hier Clients für Raspberry und vermutlich auch kostenlose Apps für Android, wobei diese für den Vorgänger "MPD" (Music Player Demon) entworfen worden sind und meist "nicht mit Mopidy getestet" angeben. Ich verstehe im Moment nicht ob die Android-Apps auch Musik abspielen können oder nur die Steuerung übernehmen.

Was ich bisher an Nachteilen gefunden habe ist:

  • Auf einem Raspberry ist Mopidy wohl ziemlich langsam
  • Mopidy kann wohl nur einen Audiostrom gleichzeitig senden kann (oder konnte, der Artikel war schon älter). Das kann man umgehen indem man mehrere Instanzen laufen lässt, aber das macht die Steuerung komplexer

Nachtrag:

Ok, nachdem ich Mopidy ausprobiert habe sieht es so aus als ob das eher ein fernbedienbarer Player als ein zentraler Server ist. Das wäre zwar auch eine Anwendungsmöglichkeit, aber zumindest die Player für Android steuern auch nur die Clients mit denen sie direkt verbunden sind. Da ist der Logitech Server deutlich besser zu bedienen.

Von der Geschwindigkeit her kann ich mich nicht beschweren, auf einemRaspberry Pi 3 B+ lief alles angenehm schnell.

Allerdings hat der Server die Musikstücke die ich mühsam habe scannen lassen beim nächsten Scanvorgang direkt wieder vergessen da irgend etwas mit der Konfiguration nicht passte und die Platte mit der Musik nicht mehr gefunden wurde.


Links:

https://www.mopidy.com/

https://braspi.de/blogs/braspi-blog/raspberry-pi-als-musik-server-mit-mopidy

https://linuxundich.de/raspberry-pi/raspberry-pi-als-jukebox-fuer-google-music-spotify-oder-musik-vom-nas/

https://www.pimusicbox.com/