DIY Multiroom Projekt

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

Vorheriges Thema - Nächstes Thema

unimatrix

ok verstanden. Aber das locken hilft ja dann nur bedingt, weil dann kann derjenige, der dann ins Büro geht um die Schlagerparade zu hören ja nicht hören kann, weil der Player durch das Bad gelockt ist.

Ich hielte es für sinnvoll, wenn derjenige der ins Bad geht dann einfach den State des Büro-Players mit zum Bad-Player transferiert. So könnte man 2 Vorgänge unterscheiden:


  • Büro spielt schon, nun passiert eins von 2 Dingen:

    • Im Bad hört man die schöne Musik im Büro und will auch mithören. Man drückt den Zuschaltknopf. Sollte es nicht noch woanders Musik geben, die gerade läuft, ist man sofort beim Büro "mit dabei". Natürlich kann man jetzt auch böse sein und einfach andere Musik anmachen. Man steuert immer den Player, auf dem man gerade zuhört. Aber das will ich nicht auch noch mit technischen Mitteln  einschränken
    • Im Büro denkt man sich, oh die Musik ist so toll, da soll das Bad nicht außen vor bleiben. Man schaltet das Bad vom Büro aus mit hinzu. Im Ergebnis kommt das gleiche raus, das Bad hört mit, abgespielt wird aber auf dem dem Büro fest zugeordneten Player.
  • Man fängt wie von dir beschrieben im Büro an und geht jetzt längerfristig ins Bad. Das merkt man entweder

    • schon im Büro und drückt auf den Knopf "Transfer ins Bad" (nutzt man eine Fernbedienung müssten das meistens 2 Knöpfe sein es sei denn man hat dafür einen Shortcut weil man es oft macht
    • oder erst im Bad, dann drückt man eben den Knopf "Transfer von ..:" womit man dann das gleich erreicht. Je nach Konfiguration / Attribut hört dann das Büro entweder sofort, oder nach eingestellter Zeit, oder gar nicht mit dem Spielen auf, in jedem Fall ist es aber sofort unabhängig und eine Änderung am Büroplayer wirkt sich nicht mehr aufs Bad aus.

Das ganze basiert also auf der Vorstellung, dass jeder Raum bzw. jeder Client einen fest zugeorneten Zuspieler hat (also bleiben wir mal bei Mopidy). Dem entgegen stünde ein System, wo eine nicht fest zugeordnete Anzahl von Playern frei zur Verfügung stände, und sich das System diese irgendwie intelligent selber suchen würde. Ich bleibe bis auf weiteres aber bei der Festzuordnung.

Obiges Schema lässt sich komplett ohne GUI nur mit Fernbedienung bedienen. Das ist für mich immer Vorraussetzung, einfach weil es meine eigene Anwendung ist. Es lässt sich aber IMHO auch gut in einer GUI darstellen, und zwar kompatibel zu den AVGuidlines die hier auch in anderen Modulen verwendet werden.

drdownload

Kurzes Update: die Kombi aus mopidy to pulseaudio to snapcast hat alle nervigen Fehler beseitigt und rennt sehr stabil

@unimatrix: hier sollte auch dein einmixen über pulseaudio gehen

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,

drdownload

Ich habe lustigerweise mit meinen Kollegen auch genau das Szenario "wieso hat der Player überhaupt eine fixe Zuordnung" diskutiert.

So nett auch ein Vorrat an Playern wäre die man sich einfach dynamisch hintereinander nimmt, meistens ist die Anforderungen ja einfach mach im Wohnzimmer Musik und nach einem bisserl Schulung der großen und kleinen Nutzer hat es jeder heraußen denke ich. In smartvisu gebe ich sicher einen Status wie playing prominent dazu

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,

drdownload

#123
hi, ich habe jetzt versucht auf meinem musik server (debian jessie) fhem zu installieren und leider reißt das snapcast modul fhem hier in den abgrund.

hier mal aus dem fhem-log:

2017.01.14 19:13:06 3: Opening test device server-musik-wien.lan:1705
2017.01.14 19:13:06 3: {"jsonrpc":"2.0","method":"Server.GetStatus","id":1}

2017.01.14 19:13:06 2: Invalid Response from Snapcast,ignoring result: {"id":1,"jsonrpc":"2.0","result":{"clients":[{"config":{"latency":0,"name":"Mi5 Test","stream":"Wohnzimmer","volume":{"muted":false,"percent":100}},"connected":true,"host":{"arch":"arm64-v8a","ip":"10.0.0.196","mac":"78:02:f8:21:77:7a","name":"MI5-AlexPhone","os":"Android 6.0"},"lastSeen":{"sec":1484417060,"usec":205165},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Radio Küche","stream":"Wohnzimmer","volume":{"muted":false,"percent":45}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.189","mac":"a0:f4:59:c7:c3:95","name":"android-740a459bf24dd0a","os":"Android 4.2.2"},"lastSeen":{"sec":1484417582,"usec":885300},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Yamaha Wohnzimmer","stream":"Wohnzimmer","volume":{"muted":false,"percent":67}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.117","mac":"08:61:51:20:54:37","name":"android-58377744637334b8","os":"Android 4.4.2"},"lastSeen":{"sec":1484417582,"usec":574114},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":22,"name":"Radio Badezimmer","stream":"Wohnzimmer","volume":{"muted":true,"percent":68}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.105","mac":"30:39:26:d8:c8:c3","name":"xperiap-alex","os":"Android 5.1.1"},"lastSeen":{"sec":1484375837,"usec":736743},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":2,"name":"Marantz Büro","stream":"Wohnzimmer","volume":{"muted":true,"percent":47}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.142","mac":"e0:b9:4d:1d:3f:b6","name":"android-13b65b673dcc71d4","os":"Android 6.0.1"},"lastSeen":{"sec":1484417583,"usec":90479},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Office","stream":"Wohnzimmer","volume":{"muted":true,"percent":33}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.138","mac":"3c:cf:5b:99:30:64","name":"android-66f49b5f8c6823b7","os":"Android 5.1.1"},"lastSeen":{"sec":1483898839,"usec":448375},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}}],"server":{"host":{"arch":"x86_64","ip":"","mac":"","name":"debianmini","os":"Debian GNU/Linux 8.6 (jessie)"},"snapserver":{"controlProtocolVersion":1,"name":"Snapserver","protocolVersion":1,"version":"0.10.0"}},"streams":[{"id":"Wohnzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Wohnzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_1?name=Wohnzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Badezimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_2","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Badezimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_2?name=Badezimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Büro","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_3","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Büro","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_3?name=Büro&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Schlafzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_4","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Schlafzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_4?name=Schlafzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Kinderzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_5","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Kinderzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_5?name=Kinderzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T6","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_6","query":{"buffer_ms":"20","
2017.01.14 19:13:06 3: test device opened
2017.01.14 19:13:06 3: codec":"ogg","mode":"read","name":"T6","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_6?name=T6&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T4","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"T4","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo1?name=T4&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}}]}}
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "codec":"ogg","mode":...") at ./FHEM/96_Snapcast.pm line 240.


dann habe ich den namen büro auf buero geändert:

2017.01.14 19:22:38 2: Invalid Response from Snapcast,ignoring result: {"id":1,"jsonrpc":"2.0","result":{"clients":[{"config":{"latency":0,"name":"Mi5 Test","stream":"Wohnzimmer","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"arm64-v8a","ip":"10.0.0.196","mac":"78:02:f8:21:77:7a","name":"MI5-AlexPhone","os":"Android 6.0"},"lastSeen":{"sec":1484416904,"usec":372248},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Radio Küche","stream":"Wohnzimmer","volume":{"muted":false,"percent":45}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.189","mac":"a0:f4:59:c7:c3:95","name":"android-740a459bf24dd0a","os":"Android 4.2.2"},"lastSeen":{"sec":1484418035,"usec":553164},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Yamaha Wohnzimmer","stream":"Wohnzimmer","volume":{"muted":false,"percent":67}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.117","mac":"08:61:51:20:54:37","name":"android-58377744637334b8","os":"Android 4.4.2"},"lastSeen":{"sec":1484418035,"usec":622218},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":22,"name":"Radio Badezimmer","stream":"Wohnzimmer","volume":{"muted":true,"percent":68}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.105","mac":"30:39:26:d8:c8:c3","name":"xperiap-alex","os":"Android 5.1.1"},"lastSeen":{"sec":1484375837,"usec":736743},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":2,"name":"Marantz Büro","stream":"Wohnzimmer","volume":{"muted":true,"percent":47}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.142","mac":"e0:b9:4d:1d:3f:b6","name":"android-13b65b673dcc71d4","os":"Android 6.0.1"},"lastSeen":{"sec":1484418157,"usec":277091},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Office","stream":"Wohnzimmer","volume":{"muted":true,"percent":33}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.138","mac":"3c:cf:5b:99:30:64","name":"android-66f49b5f8c6823b7","os":"Android 5.1.1"},"lastSeen":{"sec":1483898839,"usec":448375},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}}],"server":{"host":{"arch":"x86_64","ip":"","mac":"","name":"debianmini","os":"Debian GNU/Linux 8.6 (jessie)"},"snapserver":{"controlProtocolVersion":1,"name":"Snapserver","protocolVersion":1,"version":"0.10.0"}},"streams":[{"id":"Wohnzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Wohnzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_1?name=Wohnzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Badezimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_2","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Badezimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_2?name=Badezimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Buero","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_3","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Buero","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_3?name=Buero&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Schlafzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_4","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Schlafzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_4?name=Schlafzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Kinderzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_5","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Kinderzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_5?name=Kinderzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T6","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_6","query":{"buffer_ms":"2
2017.01.14 19:22:38 3: test device opened
2017.01.14 19:22:38 3: 0","codec":"ogg","mode":"read","name":"T6","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_6?name=T6&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T4","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"T4","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo1?name=T4&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}}]}}
garbage after JSON object, at character offset 1 (before "","codec":"ogg","mod...") at ./FHEM/96_Snapcast.pm line 240.


ich habe jetzt auch versucht alle clients von umlauten zu befreien.

2017.01.14 19:58:30 2: Invalid Response from Snapcast,ignoring result: {"id":1,"jsonrpc":"2.0","result":{"clients":[{"config":{"latency":0,"name":"Mi5 Test","stream":"Wohnzimmer","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"arm64-v8a","ip":"10.0.0.196","mac":"78:02:f8:21:77:7a","name":"MI5-AlexPhone","os":"Android 6.0"},"lastSeen":{"sec":1484419709,"usec":721519},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Radio Kitchen","stream":"Wohnzimmer","volume":{"muted":false,"percent":100}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.189","mac":"a0:f4:59:c7:c3:95","name":"android-740a459bf24dd0a","os":"Android 4.2.2"},"lastSeen":{"sec":1484418035,"usec":553164},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Yamaha Wohnzimmer","stream":"Wohnzimmer","volume":{"muted":false,"percent":67}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.117","mac":"08:61:51:20:54:37","name":"android-58377744637334b8","os":"Android 4.4.2"},"lastSeen":{"sec":1484418035,"usec":622218},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":22,"name":"Radio Badezimmer","stream":"Wohnzimmer","volume":{"muted":true,"percent":68}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.105","mac":"30:39:26:d8:c8:c3","name":"xperiap-alex","os":"Android 5.1.1"},"lastSeen":{"sec":1484375837,"usec":736743},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":2,"name":"Marantz Office","stream":"Wohnzimmer","volume":{"muted":true,"percent":47}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.142","mac":"e0:b9:4d:1d:3f:b6","name":"android-13b65b673dcc71d4","os":"Android 6.0.1"},"lastSeen":{"sec":1484420309,"usec":748464},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Office","stream":"Wohnzimmer","volume":{"muted":true,"percent":33}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.138","mac":"3c:cf:5b:99:30:64","name":"android-66f49b5f8c6823b7","os":"Android 5.1.1"},"lastSeen":{"sec":1483898839,"usec":448375},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}}],"server":{"host":{"arch":"x86_64","ip":"","mac":"","name":"debianmini","os":"Debian GNU/Linux 8.6 (jessie)"},"snapserver":{"controlProtocolVersion":1,"name":"Snapserver","protocolVersion":1,"version":"0.10.0"}},"streams":[{"id":"Wohnzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Wohnzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_1?name=Wohnzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Badezimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_2","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Badezimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_2?name=Badezimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Buero","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_3","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Buero","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_3?name=Buero&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Schlafzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_4","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Schlafzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_4?name=Schlafzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Kinderzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_5","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Kinderzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_5?name=Kinderzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T6","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/snapfifo_6","query":{"buffer_ms"
2017.01.14 19:58:30 3: test device opened
2017.01.14 19:58:30 3: :"20","codec":"ogg","mode":"read","name":"T6","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/snapfifo_6?name=T6&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"T4","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"T4","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo1?name=T4&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}}]}}
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before ":"20","codec":"ogg",...") at ./FHEM/96_Snapcast.pm line 240.


update:

very strange:

wenn ich die 2 letzten zonen auskommentiere lädt es zumindest in jessie mit dem fhemmodul:

SNAPSERVER_OPTS="-d -s pipe:///tmp/pulsefifo_1?name=Wohnzimmer&sampleformat=48000:16:2&codec=ogg&mode=read \
                    -s pipe:///tmp/pulsefifo_2?name=Badezimmer&sampleformat=48000:16:2&codec=ogg&mode=read \
                    -s pipe:///tmp/pulsefifo_3?name=Buero&sampleformat=48000:16:2&codec=ogg&mode=read \
                    -s pipe:///tmp/pulsefifo_4?name=Schlafzimmer&sampleformat=48000:16:2&codec=ogg&mode=read \
                    -s pipe:///tmp/snapfifo_5?name=Kinderzimmer&sampleformat=48000:16:2&codec=ogg&mode=read"
#                    -s pipe:///tmp/snapfifo_6?name=T6&sampleformat=48000:16:2&codec=ogg&mode=read "
#                    -s pipe:///tmp/pulsefifo1?name=T4&sampleformat=48000:16:2&codec=ogg&mode=read"

ich sehe beim besten Willen keinen Unterschied, wieso eine der letzten Zeilen zerstörerisch sein sollte. (nicht dass mir die Terrassenzonen gerade sehr abgehen)

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

#124
Update:

Es scheint um die Anzahl der Zonen zu gehen (zumindest bei mir) bei der 6. Zone stürzt das mit Modul mit den JSON-Fehlern ab)

Positiv: mit shairport-sync bekommt man eine Zone auf die man vom iMac oder iPhone streamen kann.

: shairport-sync > pipe output > snapserver (funktioniert bei mir nur dann ohne Aussetzer  wenn ich beides auf 44100 konfiguriere)
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

Die hohe Anzahl der Zonen hat wohl dazu geführt, dass die JSON Response so lang wurde, dass die in 2 Schritten eingelesen wurde, und das habe ich nicht erkannt, so kam es zu einem invaliden JSON, den ich (2. Bug) dummerweise nur an einer der zwei Stellen im Modul abgefangen hatte.

Beides habe ich jetzt hoffentlich korrigiert und soeben auf Github eingecheckt. Ich kann bei mir leider gerade keine weiteren Zonen erstellen um es wirklich zu testen.

Das mit PA klingt gut. Ich habe eine lauffähige Version vom Controller ebenfalls auf Github eingecheckt. Damit kann man jetzt schon MPD und Snapcast steuern und auch durch Playlisten durchschalten. Hier mal meine Config, damit du dir eine Vorstellung machen kannst, was man dann alles für Module hat.

define          scs.snap              Snapcast
define          scc.nele              Snapcast          client scs.snap b827eb9aec84
define          scc.merle             Snapcast          client scs.snap 025009413c29
define          scc.kueche            Snapcast          client scs.snap b827eb9a2ad3
define          scc.wohn              Snapcast          client scs.snap 00aefa4aa3a9

define          mac.nele              MultiroomAudioController
  attr          mac.nele              mr                scc.nele
  attr          mac.nele              soundMapping      nele:mpd.nele,merle:mpd.merle,kueche:mpd.kueche,wohn:mpd.wohn
  attr          mac.nele              playlistPattern   nele

define          mac.merle             MultiroomAudioController
  attr          mac.merle             mr                scc.merle
  attr          mac.merle             soundMapping      nele:mpd.nele,merle:mpd.merle,kueche:mpd.kueche,wohn:mpd.wohn
  attr          mac.merle             playlistPattern   merle

define          mac.kueche            MultiroomAudioController
  attr          mac.kueche            mr                scc.kueche
  attr          mac.kueche            soundMapping      nele:mpd.nele,merle:mpd.merle,kueche:mpd.kueche,wohn:mpd.wohn
  attr          mac.kueche            playlistPattern   wohn

define          mac.wohn              MultiroomAudioController
  attr          mac.wohn              mr                scc.wohn
  attr          mac.wohn              soundMapping      nele:mpd.nele,merle:mpd.merle,kueche:mpd.kueche,wohn:mpd.wohn
  attr          mac.wohn              playlistPattern   wohn

define          mpd.nele              MPD               192.168.2.2 6600
  attr          mpd.nele              player            mopidy

define          mpd.merle             MPD               192.168.2.2 6702
  attr          mpd.merle             player            mopidy

define          mpd.kueche            MPD               192.168.2.2 6703
  attr          mpd.kueche            player            mopidy

define          mpd.wohn              MPD               192.168.2.2 6704
  attr          mpd.wohn              player            mopidy


Mit dem Attribut soundMapping wird zugeordnet, welcher MPD Player zu welchem Snapcast Client gehört. Abhängig vom Reading "stream", also davon, auf welcher Zone ein Client gerade hört, schaltet sich dann der Controller auf den passenden MPD und updated beim Umschalten alle Readings dementsprechend.

Wenn du Zeit hast, schau doch mal in die Schnittstelle vom Controller. Also die Readings die er bietet, als auch die Kommandos die man per "set" absetzen kann. Ich habe mich an den https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV orientiert, was hoffentlich auch der Visualisierung zuträglich ist.

unimatrix

wegen dem pulse sink...ich verzweifle daran, mopidy auf pulse abspielen zu lassen. Angeblich fehlendes MP3 Plugin im gestreamer. Kann aber iwie so einfach nicht sein.

drdownload

meine config (relevante teile bzw. änderungen zum default)

pulse
system.pa
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-pipe-sink file=/tmp/pulsefifo_1 sink_name=pulsefifo_1
load-module module-pipe-sink file=/tmp/pulsefifo_2 sink_name=pulsefifo_2
load-module module-pipe-sink file=/tmp/pulsefifo_3 sink_name=pulsefifo_3
load-module module-pipe-sink file=/tmp/pulsefifo_4 sink_name=pulsefifo_4
load-module module-pipe-sink file=/tmp/pulsefifo_5 sink_name=pulsefifo_5

pulse
daemon.conf
default-sample-rate = 48000

mopidy
multi_zone1.conf
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! pulsesink server=127.0.0.1 device=1

und noch die mopidy deps

sysadmin@debianmini:~$ mopidy deps
Executable: /usr/bin/mopidy
Platform: Linux-3.16.0-4-amd64-x86_64-with-debian-8.6
Python: CPython 2.7.9 from /usr/lib/python2.7
Mopidy: 2.1.0 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
  tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-MusicBox-Webclient: 2.3.0 from /usr/local/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.1.0: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-Local-SQLite: 1.0.0 from /usr/local/lib/python2.7/dist-packages
  uritools>=1.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
    ipaddress: 1.0.17 from /usr/local/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.1: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-Moped: 0.7.0 from /usr/local/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.0.0: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-Local-Images: 1.0.0 from /usr/local/lib/python2.7/dist-packages
  uritools>=1.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
    ipaddress: 1.0.17 from /usr/local/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.1: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-Podcast: 2.0.1 from /usr/local/lib/python2.7/dist-packages
  Mopidy>=1.1.1: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
  uritools>=1.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
    ipaddress: 1.0.17 from /usr/local/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  cachetools>=1.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
Mopidy-Spotify: 3.0.0 from /usr/lib/python2.7/dist-packages
  Mopidy>=2.0: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  pyspotify>=2.0.5: 2.0.5 from /usr/lib/python2.7/dist-packages
    cffi>=1.0.0: 1.1.2 from /usr/lib/python2.7/dist-packages
      pycparser: 2.10 from /usr/lib/python2.7/dist-packages
  requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
GStreamer: 1.4.4.0 from /usr/lib/python2.7/dist-packages/gi
  Detailed information:
    Python wrapper: python-gi 3.14.0
    Relevant elements:
      Found:
        uridecodebin
        souphttpsrc
        appsrc
        alsasink
        osssink
        oss4sink
        pulsesink
        id3demux
        id3v2mux
        lamemp3enc
        mad
        mpegaudioparse
        vorbisdec
        vorbisenc
        vorbisparse
        oggdemux
        oggmux
        oggparse
        flacdec
        flacparse
        shout2send
      Not found:
        flump3dec
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

Danke. Das passt alles so bei mir. Es ist ein anderes Problem, da ist irgendwas faul mit meiner Installation. Aber egal, das mach ich später.

Für die ganze Konfig und Doku werd ich wohl demnächst eine WIKI Seite erstellen.

drdownload

Hi, habe gerade auf meinem blanken Test-FHEM das Snapcast Modul-Update ausprobiert. FHEM stürzt jetzt zwar nicht mehr ab, aber das Modul meldet trotzdem einen JSON Fehler

2017-01-16 20:38:48 Snapcast snapcast lastError: Invalid JSON: {"id":37,"jsonrpc":"2.0","result":{"clients":[{"config":{"latency":0,"name":"Mi5 Test","stream":"Buero","volume":{"muted":false,"percent":44}},"connected":false,"host":{"arch":"arm64-v8a","ip":"10.0.0.196","mac":"78:02:f8:21:77:7a","name":"MI5-AlexPhone","os":"Android 6.0"},"lastSeen":{"sec":1484470481,"usec":769346},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Radio Kitchen","stream":"Wohnzimmer","volume":{"muted":false,"percent":100}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.189","mac":"a0:f4:59:c7:c3:95","name":"android-740a459bf24dd0a","os":"Android 4.2.2"},"lastSeen":{"sec":1484595527,"usec":326142},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Yamaha Wohnzimmer","stream":"Wohnzimmer","volume":{"muted":false,"percent":67}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.117","mac":"08:61:51:20:54:37","name":"android-58377744637334b8","os":"Android 4.4.2"},"lastSeen":{"sec":1484595527,"usec":418044},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":22,"name":"Radio Badezimmer","stream":"Wohnzimmer","volume":{"muted":true,"percent":68}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.105","mac":"30:39:26:d8:c8:c3","name":"xperiap-alex","os":"Android 5.1.1"},"lastSeen":{"sec":1484595528,"usec":880379},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":2,"name":"Marantz Office","stream":"Buero","volume":{"muted":false,"percent":93}},"connected":true,"host":{"arch":"armeabi-v7a","ip":"10.0.0.142","mac":"e0:b9:4d:1d:3f:b6","name":"android-13b65b673dcc71d4","os":"Android 6.0.1"},"lastSeen":{"sec":1484475525,"usec":200463},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}},{"config":{"latency":0,"name":"Office","stream":"Wohnzimmer","volume":{"muted":true,"percent":33}},"connected":false,"host":{"arch":"armeabi-v7a","ip":"10.0.0.138","mac":"3c:cf:5b:99:30:64","name":"android-66f49b5f8c6823b7","os":"Android 5.1.1"},"lastSeen":{"sec":1483898839,"usec":448375},"snapclient":{"name":"Snapclient","protocolVersion":2,"version":"0.10.0"}}],"server":{"host":{"arch":"x86_64","ip":"","mac":"","name":"debianmini","os":"Debian GNU/Linux 8.6 (jessie)"},"snapserver":{"controlProtocolVersion":1,"name":"Snapserver","protocolVersion":1,"version":"0.10.0"}},"streams":[{"id":"Wohnzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_1","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Wohnzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_1?name=Wohnzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Badezimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_2","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Badezimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_2?name=Badezimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Buero","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_3","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Buero","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_3?name=Buero&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Schlafzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_4","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Schlafzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_4?name=Schlafzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Kinderzimmer","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/pulsefifo_5","query":{"buffer_ms":"20","codec":"ogg","mode":"read","name":"Kinderzimmer","sampleformat":"48000:16:2"},"raw":"pipe:///tmp/pulsefifo_5?name=Kinderzimmer&sampleformat=48000:16:2&codec=ogg&mode=read","scheme":"pipe"}},{"id":"Airport","status":"idle","uri":{"fragment":"","host":"","path":"/tmp/shairport_1","query":{"buffer_ms":"20
2017-01-16 20:38:48 Snapcast snapcast lastError: Invalid JSON: ","codec":"ogg","mode":"read","name":"Airport","sampleformat":"44100:16:2"},"raw":"pipe:///tmp/shairport_1?name=Airport&sampleformat=44100:16:2&codec=ogg&mode=read","scheme":"pipe"}}]}}
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

danke für das Feedback. Ich habe gestern noch gebastelt und den jetzigen Fehler auch bemerkt. Ich will das bis heute Abend endgültig gelöst haben.

drdownload

Wenn du eine Wiki-Seite dazu machst würde ich mich anbieten den Part mit der Mopidy + Pulse + Snapcast im Wiki einzuarbeiten.
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

gerne, behalte ich  im Auge!

unimatrix

@drdownload: Dein System müsste jetzt auch mit 100 Streams laufen :)

drdownload

Sehr gut, danke, dann kann ich endlich den blauen Flügel meines Schlosses auch integrieren ;)
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,