DIY Multiroom Projekt

Begonnen von unimatrix, 17 Oktober 2016, 11:35:05

Vorheriges Thema - Nächstes Thema

unimatrix

mit snapclient -l kann man sich die Audiodevices anzeigen lassen und mit snapcard -s dann eins davon festlegen. Das packt man dann einfach in die /etc/default/snapclient

Das brauchst du ja auch für dein "Mehrere Snapcast Clients auf einem PI" - Szenario, aber das hab ich hier auch mal mit 2 USB Soundkarten ausprobiert und das geht einwandfrei.

drdownload

Ah super, danke, bin den ganzen Tag unterwegs und am Handy hab ich die Info nicht gefunden.

Gesendet von meinem MI 5 mit Tapatalk

CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

mehrere Mopidy Instanzen geht auch problemlos. Man kann offenbar die config Files in einer Hierarchie laden. So kann man ein globales File lassen, und für die Instanzen dann ein 1.conf, 2.conf usw. anlegen und dort nur die abweichenden Werte eintragen, also die Portnummern für den MPD Service usw.

unimatrix

Readings vom SC Modul dann so? Macht das Sinn? Die Anzahl der Clients ist ja dynamisch da kann man ja nur durchnummerieren.

Der Name kann übrigens 2 Quellen haben. Entweder es ist für die MAC einer fest konfiguriert: Das passiert dann, wenn man den Client z.B. in der Android App umbenennt bzw. dann eben auch per FHEM. Wenn man das nicht macht, bleibt das Feld leer und es wird der Hostname des Clients angezeigt.

Man kann aber Namen mehrfach vergeben. Für das "set <scmodul> <client> muted false" bleibt also fast nichts anderes uebrig, als die IP oder die MAC zu nehmen. Oder man macht es flexibel. Wird ein Name verwendet, dann nimmt man eben den ersten gefundenen. Wer dann so "doof" ist, gleiche Namen zu vergeben kann ihn so nicht ansprechen bzw. muss die MAC verwenden. Oder?

Kennst du dich mit Smartvisu aus? Wie muss die Schnittstelle (also Readings und set xxx) aufgebaut sein, das man das da gut integrieren kann?


https://snag.gy/zBFCR7.jpg

drdownload

Zitat von: unimatrix am 10 Dezember 2016, 16:28:38
mehrere Mopidy Instanzen geht auch problemlos. Man kann offenbar die config Files in einer Hierarchie laden. So kann man ein globales File lassen, und für die Instanzen dann ein 1.conf, 2.conf usw. anlegen und dort nur die abweichenden Werte eintragen, also die Portnummern für den MPD Service usw.

genau und die lädt man dann über --config file1.conf:file2.conf

Ich habe bis jetzt nicht viel Musik nicht in mopidy versucht. (bin auch noch beim Aufräumen - daher vielleicht 1000 MP3s und Spotify in mopidy)
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

drdownload

Ich werde mir Mal das sonos Modul in Smart visu ansehen, va wie man dir readings auseinander dividiert von mehreren devices.

Bei Sets ist es praktisch keine noargs zu haben. Dann muss man deutlich weniger konfigurieren beim zusammenhängen

Gesendet von meinem MI 5 mit Tapatalk

CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

#51
ok super, danke. Ich habe es jetzt erstmal 1:1 umgesetzt, das Interface kann man leicht anpassen. Das Modul ist im GIT. Freue mich ueber Tests.

https://github.com/unimatrix27/fhemmodules/blob/master/96_Snapcast.pm

Bedienung:

fhem> define snap Snapcast localhost 1705
fhem> set snap help
Unknown argument help, choose one of update muted latency volume stream name
fhem> set snap volume kueche 20
fhem> set snap volume 02:50:09:41:3c:29 50
fhem> set snap name kueche neuername
fhem> set snap name neuername kueche


Am besten dabei die Android auf haben dann sieht man live alle Auswirkungen der Sets. Die Readings updaten sich ebenfalls, wenn man per Android was ändert usw.

Als nächstes ein wenig Doku und dann Zusatzfunktionen z.B.


fhem> set snap kueche stream next
fhem> set snap kueche stream default
fhem> set snap masterreset
fhem> set snap scene 1
fhem> set snap scene 2
fhem> attr snap constraintDummy kindOfDay
fhem> attr snap volConstraint kueche beforeSchool 06:30 0 08:00 40 09:00 57 18:00 120 19:00 70 20:00 65 20:30 57 21:20 40 21:30 30 24:00 0
fhem> attr snap volConstraint kueche beforeFree 06:30 0 08:00 40 20:00 120 21:00 65 21:30 57 22:00 40 22:30 30 24:00 0

drdownload

wow, das ging ja flott :)

ich muss jetzt erstmal wieder ein paar snapcast clients hochziehen ;) was mir aufgefallen ist: wenn ich die pipeline versuche über 44100 samplingrate zu machen (mit ogg als format) motzen zwar alle android clients, dass es nicht die native samplingrate ist, aber ein android 6 und ein android 4.2 client spielen es ruckelfrei ab. (beide über wifi). wahrscheinlich ist in der app etwas hardcoded in dem zusammenhang. (48000 ist ja die empfohlene sampling rate)

nur habe ich derzeit bei start und stop aus mopidy ca. 1-2 sekunden verzögerung. da wird wohl der fifo erst aufgebraucht.

Für das Thema announcements kam mir folgender gedanke: billige bluetooth boxen und aus mopidy nicht mit fifo raus sondern mit pulseaudio und einer fifo sink, dann könnte man das kombinieren.
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

das mit dem 1-2 Sekunden habe ich mit allen Quellen, das ist wirklich der Puffer. Bei der Bedienung etwas doof, aber es geht. Hab mir noch nicht angesehen ob sich das verkürzen lässt.

Warum willst du denn 44100 haben? Weil das die Samplingrate der Quelle ist, also aus Qualitätsgründen?

Bluetooth sagst du, weil du andere Boxen normalerweise nicht eingeschaltet hast, richtig?

Announcement das sind bei mir eig. 2 Themen:
1. Announcements die mit dem Rest nix zu tun haben. Z.b. dass die Waschmaschine fertig ist, oder dass die Biotonne raus muss. Die kommen auch vor wenn keiner Musik hört. Die kommen bei mir im Moment aus so einem Homematic Steckdosen Ding und dann eben aus denjenigen Boxen, die gerade an sind. Komplett über PA. Kann eig. auch so bleiben.

2. Audio-Feedback an einzelne Clients, die keine eigene Anzeige haben. Wenn mein Kind ne Playlist wechselt soll ja ne Rückmeldung kommen, sowas wie "du hörst jetzt playlist nr 23". Dieser Ton gehört also nicht zu einem Snapcast Stream, sondern fest zu einem Client, also dem, an dem gerade bedient wird. War mit PA kein Problem. Kann ggf. weiter über PA laufen. Da rufe ich einfach ein Script auf, das macht "EXPORT PULSE_SERVER=<ip von kind1>; aplay temp.wav" usw. wobei hier das temp.wav vorher automatisch generiert wird.

Kopfschmerzen macht mir noch die Überlegung, wie man an sich 2 unabhängige Systeme in einer gemeinsamen GUI bzw. einer gemeinsamen Schnittstelle bedienen kann. Also einerseits die Quelle also meinetwegen Mopidy und zweitens die Streamverteilung an die Clients also Snapcast. Das habe ich mit meinem alten Tool über die Funkfernbedienungen prinzipiell gelöst, aber in einem GUI, egal ob Webif, Smartvisu, KODI Plugin, etc. etc. ist das vll etwas komplizierter.

drdownload

Wegen dem Lag fällt mir nur ein, den fifo möglichst klein zu machen ode die clients zu muten.

Die 44100 habe ich nur weil ich Probleme mit 48000 mit dem 4.2/4.4 android clients hatte.

Ja, die Announcements waren für always-on abseits von multiroom audio gedacht. (mein Surround Receiver braucht 50+ W im Standby zB ;) ) Dachte da an einen Sack mit BT Lautsprechern. Aber wie du sagst eigentlich ist das ein anderes Thema.

Wegen Visualisierung wäre mein Plan ein Widget, dass für die Kombi MPD/Snapcast auf Fhem Seite gedacht ist. Mit einer Reihe http://docu.smartvisu.de/2.8/index.php?page=basic/widget_basic.dual Buttons mit denen ich beim Player Zonen dazuschalten kann.

Natürlich könnte man es auch umgekehrt machen und pro Sound-Zone die Quell-Zone auswählt ;)
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

Ich halte den ersten Ansatz für natürlicher. Eine Quelle ist im Default einer Zone zugeordnet. Nur in besonderen Fällen schaltet man andere Räume dazu.

Der Wunsch "Ich will jetzt im Wohnzimmer meine Weihnachtsplaylist hören" führt dazu dass im Wohnzimmer auf Play drücken will. Und nicht dass man sich mal einen freien Stream sucht, da auf Play drückt, und dann das WZ dahin schaltet. Hoffe das macht so Sinn :)

drdownload

Ich glaube auch dass das "Such mir einen freien Player für die Audiozone in der ich stehe" ein Randgruppenszenario ist ;)

Eine Frage die ich mir stelle ist ob man den Player zwischen den Instanzen umschalten können lassen muss oder ob jeder Player einem Raum zugeordnet ist.

Hast du eigentlich auch Zonen die knapp beinander liegen?

Ich habe zB eine große Wohnküche mit angrenzender Terrasse. Die Hauptbeschallung kommt von der Surround-Anlage die auf die Couch eingemessen ist. Die Terrasse hängt an der Zone2 des Verstärkers. In der Küche steht ein Android Radio.

Ich habe jetzt fürs Snapcast-Testen Snapcast am Android Mediaplayer der an der Surround-Anlage und am Android-Radio installiert. Leider habe ich da eine Verzögerung (der Mediaplayer hängt auch am LAN im Gegensatz zum Radio=

CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

In meinem Setup habe ich 2 Kinderzimmer im 1. OG. Wenn da die Türen offen sind, sind sie in Hörreicheweite. Normalerweise hört jedes Kind sein eigenes Zeug aber manchmal finden sie es toll, sich zusammenzuschalten. Beide mit PI1 und billigen Aktivboxen und USB Sound.

Meine Küche grenzt ans Wohnzimmer. Wohnzimmer ist jetzt PI3 mit Kodi und 5.1 Receiver. Da kämpfe ich noch mit dem Sharing. Siehe auch hier: http://forum.kodi.tv/showthread.php?tid=300326.

Es wird oft so sein, dass man Küche + WZ gleichzeitig bespielen will. Mal aber nur das WZ, mal nur die Küche.

Und dann gibts noch Situationen da will man den vollen Partymodus, überall das gleiche.

In meinem GUI-losen Bedienkonzept funktioniert es ja so, dass ich in einem Raum sitzend entscheide, dass ich jetzt mal woanders mithöre. Daher hab ich im Snapcast Modul ja auch das "set stream next" eingebaut, dann kann man einfach mal durchschalten. Eig. könnte ich da die Streams überspringen, die idle sind.

So ein GUI müsste anzeigen, welche Streams (ausser dem "eigenen") noch zur Verfügung stehen und die Möglichkeit geben, sich auf diese aufzuschalten. Also wenn man sich so normaler Player-Controls vorstellt wäre das für mich einfach noch eine Liste der Fremdstreams da drunter.

Das ganze Setup geht dann davon aus, dass jeder Stream erstmal einen Standardclient hat. Bei mir habe ich jetzt 4 Streams, die heissen Kind1, Kind2, Küche, WZ, und 4 Clients, die heissen genau so.

drdownload

Zitat von: unimatrix am 12 Dezember 2016, 10:33:24
So ein GUI müsste anzeigen, welche Streams (ausser dem "eigenen") noch zur Verfügung stehen und die Möglichkeit geben, sich auf diese aufzuschalten. Also wenn man sich so normaler Player-Controls vorstellt wäre das für mich einfach noch eine Liste der Fremdstreams da drunter.
Das wäre allerdings Szenario 2 ;) - in dem ich Audiozonen habe und Player-Streams reinschalte. Aber das eine schließt das andere nicht aus ;) Ich muss mir am Abend mal auf Papier aufzeichnen (da kann ich dann auch das Modul mal testen) was wir für ein Datenmodel bräuchten um das Sauber zu realisieren mit Smartvisu
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

unimatrix

je länger ich darüber nachdenke, desto sinnvoller ercheint es mir die Controls für das Playback und die Snapcaststeuerung zu trennen, dann aber geschickt auf einer Seite zueinander anzuordnen.
Dann könnte man auch Schnellwahltasten einbauen, um typische Szenarien aufzuschalten, oder sowas wie "Mute all" usw. Solche Funktionen baue ich gerade direkt ins Modul.