Multiroom Audio

Begonnen von TWART016, 21 August 2015, 01:32:51

Vorheriges Thema - Nächstes Thema

TWART016

Hallo,

ich möchte ein Multiroom Audiosystem einrichten. Bei der Recherche bin ich auf folgende Möglichkeiten gestoßen:
   - Apple: Airport, ...
   - Sonos
   - Raspberry Pi mit Logitech Media Server (Squeezbox)
Gibt es sonst noch andere Systeme? Das Budget ist leider etwas begrenzt.

Ich habe folgende Anforderung:
   - Räume:
      ○ 1 Wohnzimmer mit AV Receiver und 5.1
      ○ 1 Zimmer mit 2/5/7 guten Lautsprechern
      ○ 2-3 weitere Zimmer mit 1-2 Lautsprechern
   - Zentrale Musikverwaltung
   - Steuerung per App und FHEM
   - Synchrones Abspielen in mehreren oder allen Räumen
   - Airplay fähig
   - Zukunftssicher

Tendenz geht derzeit Logitech Media Server. Wie kann ich mir den Squeezebox-Server vorstellen?
Läuft die Software auf jedem Raspberry Pi oder auf einem der Server und auf den anderen die Slaves? Wie kann ich mir das Multiroom vorstellen? Kann man "Gruppen" von einem oder mehreren Raspberry Pi's erstellen?

Ich gehe mal davon aus, dass ein beliebiger NAS / PC als Musikquelle verwendet werden kann.

Werden die Raspberry Pi's (Squeezebox-Server) irgendwie miteinander verbunden?

Kann auf den Raspberry Pi's parallel noch eine andere Anwendung laufen?

Wie können die Lautsprecher angeschlossen werden?? Klinke? Lautsprecherkabel? HDMI zu AV-Receiver? ...?

Derzeit habe ich noch einen Raspberry Pi B+ und einige normale Lautsprecher, die ich gerne einbinden würde. Weiter Raspberry Pi's sind bereits in Planung.


Gruß
TWART016

joginet

Moin !
Eine kurze Antwort - die Arbeit ruft...  ;D

Zitatoder auf einem der Server und auf den anderen die Slaves?
Genau.

ZitatWie kann ich mir das Multiroom vorstellen? Kann man "Gruppen" von einem oder mehreren Raspberry Pi's erstellen?
Die Raspis müssen sich im selben LAN befinden und werden vom Squeezebox-Server automatisch erkannt.
Man kann dann festlegen, welche "Clients" eine Wiedergabe starten und welche sich dazuschalten ("syncen") sollen.

Zitatch gehe mal davon aus, dass ein beliebiger NAS / PC als Musikquelle verwendet werden kann.
Ja, die Netzwerkfreigabe muß auf dem Pi (oder PC), auf dem der Squeezebox-Server läuft gemounted werden.

ZitatWerden die Raspberry Pi's (Squeezebox-Server) irgendwie miteinander verbunden?
Ja, LAN/WLAN

ZitatKann auf den Raspberry Pi's parallel noch eine andere Anwendung laufen?
Theoretisch ja. Auf dem piCorePlayer, den ich als "Client" verwende wird aber nur ein "minimal-Linux" gebootet, das nur den Player startet.

ZitatWie können die Lautsprecher angeschlossen werden?? Klinke? Lautsprecherkabel? HDMI zu AV-Receiver? ...?
Klinke. Besser ist der Sound mit einem HDMI-Audioextractor oder einem Hifiberry-Aufsatz.

Gruß, Jochen

Meine Konfig: FHEM auf NUC i5 mit Mint, HM-LAN, div. HM Schalter und Heizungsthermostate, FB 6840LTE mit Dect200, HUE bridge, HUE bulbs + Lightstrips, VU+Duo2 und Philips-TV Steuerung, Pushmail, Floorplan, Sprachsteuerung + Feedback per Arduino mit MOVI-Shield, LMS Multiroom mit 7x Pi

kvo1

ZitatZitat

    Kann auf den Raspberry Pi's parallel noch eine andere Anwendung laufen?

Theoretisch ja. Auf dem piCorePlayer, den ich als "Client" verwende wird aber nur ein "minimal-Linux" gebootet, das nur den Player startet.

Du kannst aber den "Squeezelite player" auch per Hand installieren, viel mehr ist im piCorePlayer-Image m.E.
auch nicht drin !
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

gravidi

#3
Hi,

als kleiner Tip am Rande. Wenn du dich für den Squeezebox Server entscheidest kannst du nicht nur picore Squeezeplayer oder Max2Play Squeezeplayer oder selbstinstallierte squeezeplayer Software nutzen, sondern auch Kodi durch ein Addon (XSqueeze) zum Squeezeplayer verwandeln. Alternative gibt es auch für Apple Geräte die App IPeng die aus deinen Apple Geräten einen Squeezeplayer erstellt. Alle diese Sourcen kannst du dann auch im Squeezeserver verwalten und vollständig nutzen.

Edit:
Vielleicht einfacher zu verstehen. Wie man es machen kann bzw wie mein Setup aussieht:

Squeezebox Server läuft auf meinem Server (geht auch RPI)

Wohnzimmer EG -> HTPC mit Kodi und XSqueeze Plugin hängt am Amp
Küche EG -> Windows Tablet mit Kodi und XSquezze Plugin / Lautsprecher vom Tablet
Flur EG -> Dort hängt mein IPad an der Wand für mein HomeControl Dashboard (Smartvisu) / im Background läuft Ipeng
Gästezimmer OG -> TV mit RPI mit Max2play, Kodi und Squeezeplayer / Lautsprecher per Klinke
Schlafzimmer OG -> TV mit RPI und Kodi und XSqueeze Plugin
Gallerie DG -> RPI mit Squeezeplayer / Lautsprecher mit Klinke
Dachterasse DG -> Tragbarer Player mit Ipeng

All diese Systeme sind im FHEM mit den Modulen SB_Player und SB_Server eingebunden und voll steuerbar. Ich habe mir noch ein kleines Smartvisu Dashboard für Multiroomaudio geschrieben wo auch Gruppen und Playlisten gewähl werden können.

Das ganze ist eine Menge Arbeit wenn man es vernünftig haben möchte. Sonos ist auf jedenfall einfacher in der Gesamtkonfiguration aber eben auch teurer.
FHEM: 5.6 RPI2 / CUL / BLUETOOTH / HMCFGLAN
ESXi HomeServer
CISCO WAP371 AC Cluster / 3 APs
CISCO ASA5505 SEC
Zodac HTPC & 2x RPI HTPC / 2x Trendnet HD IPCam PoE

igami

Zitat von: gravidi am 21 August 2015, 11:42:45
Ich habe mir noch ein kleines Smartvisu Dashboard für Multiroomaudio geschrieben wo auch Gruppen und Playlisten gewähl werden können.

Könntest du dazu noch einen Screenshot posten, oder gibt es den schon irgendwo im Forum?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

gravidi

#5
Anbei ein Screenshot. Im forum gibt es das noch nicht. Ich wollte eh mal einen meine Steuerung unter "Projekte" zeigen. Bin ich aber noch nicht zu gekommen.

Edit:

Ich mag eine aufgeräumte UI :)
FHEM: 5.6 RPI2 / CUL / BLUETOOTH / HMCFGLAN
ESXi HomeServer
CISCO WAP371 AC Cluster / 3 APs
CISCO ASA5505 SEC
Zodac HTPC & 2x RPI HTPC / 2x Trendnet HD IPCam PoE

TWART016

#6
Hallo,

besten Dank für die Antworten.

Zitat von: joginet am 21 August 2015, 07:16:20
Klinke. Besser ist der Sound mit einem HDMI-Audioextractor oder einem Hifiberry-Aufsatz.
Was machen die Teile genau? Soundkarte als Aufsatz bzw. externe? Was ist der Unterschied zu einer USB Soundkarte?
Was heißt besser? höhere Qualität, lauter, basshaltiger?

Zitat von: gravidi am 21 August 2015, 11:42:45
Alternative gibt es auch für Apple Geräte die App IPeng die aus deinen Apple Geräten einen Squeezeplayer erstellt. Alle diese Sourcen kannst du dann auch im Squeezeserver verwalten und vollständig nutzen.
Das iPad oder das iPhone ist also nur eine Wiedergabequelle bzw. Lautsprecher und somit ein "Slave"? Sowie ich es sehe, gibt es das auch für Android und Windows, also auf allen relevanten Plattformen.

Zitat von: gravidi am 21 August 2015, 11:42:45
Dachterasse DG -> Tragbarer Player mit Ipeng

Was genau? Smartphone, Tablet? Gehen auch tragbare Lautsprecher?

Zitat von: gravidi am 21 August 2015, 11:42:45
Das ganze ist eine Menge Arbeit wenn man es vernünftig haben möchte. Sonos ist auf jedenfall einfacher in der Gesamtkonfiguration aber eben auch teurer.
Das ist auch der Grund, warum ich mir Squeezeplayer ansehe ;)

Zitat von: gravidi am 21 August 2015, 12:43:31
Anbei ein Screenshot. Im forum gibt es das noch nicht. Ich wollte eh mal einen meine Steuerung unter "Projekte" zeigen. Bin ich aber noch nicht zu gekommen.
Eine Einleitung im Forum wäre wirklich nicht schlecht. Könntest du vielleicht den Code zur Verfügung stellen? Mit Smartvisu bin ich auch gerade dabei. Kennt ihr gute Threads dazu, eventuell auch mit Musikplayer-Integration?

Edit: Mit den Playlisten wollte ich das genau so schon immer haben :D


Gruß
TWART016




igami

Zitat von: gravidi am 21 August 2015, 12:43:31
Ich wollte eh mal einen meine Steuerung unter "Projekte" zeigen.

Da freue ich mich schon drauf, bin momentan dabei mich da ein bisschen einzulesen, aber für die Gruppensteuerung hatte ich noch keine gute Idee, wollte mir das von Sonos abkupfer, wenn ich mal wieder bei meinen Eltern bin :D
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

gravidi

Natürlich kann ich das zur Verfügung stellen.

Smartvisu Teil:

multiroomaudio.html (Wird über das Notenschlüssel Icon im Hauptmenu angesprochen)


{% extends "base.html" %}
{% import "multimedia.html" as multimedia %}
{% block sidebar %}

<div class="block">
<div class="ui-bar-c ui-li-divider ui-corner-top">Infos:</div>
<div class="ui-fixed ui-body-a ui-corner-bottom">
            <div class="multiroomaudiofull_h1">K&uuml;nstler:</div>
            <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.artist', 'service.eg-ar-multiroomaudio.artist') }} </div>
      <div class="multiroomaudiofull_h1">Lied:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.track', 'service.eg-ar-multiroomaudio.track') }}</div>
      <div class="multiroomaudiofull_h1">Album:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.album', 'service.eg-ar-multiroomaudio.album') }}</div>
      <div class="multiroomaudiofull_h1">L&auml;uft:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.duration', 'service.eg-ar-multiroomaudio.duration') }}</div>
      <div class="multiroomaudiofull_h1">Playlist:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlistname', 'service.eg-ar-multiroomaudio.playlistname') }}</div>
      <div class="multiroomaudiofull_h1">Playlist Nr:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlisttrack', 'service.eg-ar-multiroomaudio.playlisttrack') }}</div>
      <div class="multiroomaudiofull_h1">Playlist Count:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlistcount', 'service.eg-ar-multiroomaudio.playlistcount') }}</div>
</div>
  </div>
<div class="block">
<div class="ui-bar-c ui-li-divider ui-corner-top">Etage w&aumlhlen:</div>
<div class="ui-fixed ui-body-a ui-corner-bottom">
      <div class="multiroomaudiofull_h1">Wohnzimmer:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_wohnzimmer.sync', 'service.eg-ar-multiroomaudio.syncwohnzimmer', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Flur:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_flur.sync', 'service.eg-ar-multiroomaudio.syncflur', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Obergeschoss:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_obergeschoss.sync', 'service.eg-ar-multiroomaudio.syncgaestezimmer', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Dachgeschoss:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_dachgeschoss.sync', 'service.eg-ar-multiroomaudio.syncgallerie', 'On', 'Off' ) }}</div>
</div>
</div>
{% endblock %}


{% block content %}
<div  class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>Cover</h3>
                {{ multimedia.image('visu_services_multiroomaudio_server.cover', 'http://deinlmsserver:9000/music/current/cover.jpg?player=deinemacadresse&x=40011', 'fill', '1s') }}
</div>
<div data-role="collapsible">
<h3>Hauseingang Livestream</h3>
                <img id="mjpeg_0" src="http://deineurlzurkamera"  width="100%" height="100%"/>
</div>
</div>
</div>   
 
<div  class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>Master</h3>
            <div class="multiroomaudiofull_h1">Volume:</div>
            {{ basic.slider('visu_services_multiroomaudio_server.volume','service.eg-ar-multiroomaudio.volume','0','100','1') }}
                  <span data-role="controlgroup" data-type="horizontal">
                  {{ basic.button('visu_services_multiroomaudio_server.play', 'service.eg-ar-multiroomaudio.play', '', icon1~'audio_play.png', icon0~'audio_play.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.pause', 'service.eg-ar-multiroomaudio.pause', '', icon1~'audio_pause.png', icon0~'audio_pause.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.stop', 'service.eg-ar-multiroomaudio.stop', '', icon1~'audio_stop.png', icon0~'audio_stop.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.next', 'service.eg-ar-multiroomaudio.next', '', icon1~'audio_ff.png', icon0~'audio_ff.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.back', 'service.eg-ar-multiroomaudio.back', '', icon1~'audio_rew.png', icon0~'audio_rew.png', 'midi') }}
                  </span>
            <div class="multiroomaudiofull_h1">Playlist w&aumlhlen:</div>
                  <span data-role="controlgroup" data-type="horizontal">
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.andreas', 'service.eg-ar-multiroomaudio.andreasplaylist', 'Andreas','','Andreas', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.anke', 'service.eg-ar-multiroomaudio.ankeplaylist', 'Anke','','Anke', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.hiphop', 'service.eg-ar-multiroomaudio.hiphopplaylist', 'HipHop','','HipHop', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.schlager', 'service.eg-ar-multiroomaudio.schlagerplaylist', 'Schlager','','Schlager', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.party', 'service.eg-ar-multiroomaudio.partyplaylist', 'Party','','Party', 'midi') }}
                 
                  </span>
</div>
<div data-role="collapsible">
<h3>Seperat</h3>
            <div class="multiroomaudiofull_h1">Flur:</div>
            {{ basic.slider('visu_services_multiroomaudio_flur.volume','service.eg-flur-multiroomaudio.volume','0','100','1') }}
            <div class="multiroomaudiofull_h1">Wohnzimmer:</div>
            {{ basic.slider('visu_services_multiroomaudio_whz.volume','service.eg-whz-multiroomaudio.volume','0','100','1') }}   
            <div class="multiroomaudiofull_h1">Obergeschoss:</div>
            {{ basic.slider('visu_services_multiroomaudio_obergeschoss.volume','service.og-gz-multiroomaudio.volume','0','100','1') }}
            <div class="multiroomaudiofull_h1">Dachgeschoss:</div>
            {{ basic.slider('visu_services_multiroomaudio_dachgeschoss.volume','service.dg-gal-multiroomaudio.volume','0','100','1') }}
</div>     
</div>
</div>
{% endblock %}


Die benötigten CSS Klassen: (aus der visu.css)


@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,700);
.multiroomaudiofull_h1 {
font-family: 'Open Sans', sans-serif;
font-weight: 700;
font-size:22px;
color:#ffffff;
text-align:left;
}

.multiroomaudiofull_h2 {
font-family: 'Open Sans', sans-serif;
font-weight: 300;
font-size:20px;
color:#ffffff;
text-align:left;
}


Fhem Teil:

Ein Sync Beispiel für "Etage wählen", hier Obergeschoss -> Sync bzw unsync

Dummy zum auslösen des DOIF (Ist als On/Off Gad in fronthem)


##Obergeschoss
define sync_obergeschoss_onoff_dummy dummy
attr sync_obergeschoss_onoff_dummy alias SyncObergeschoss
attr sync_obergeschoss_onoff_dummy group Dummys
attr sync_obergeschoss_onoff_dummy icon im_bullhorn
attr sync_obergeschoss_onoff_dummy room Multiaudio
attr sync_obergeschoss_onoff_dummy setList off on
attr sync_obergeschoss_onoff_dummy webCmd on:off


Der DOIF Anteil:


##Logik: sync obergeschoss bei dummy on - bei dummy off unsync
define sync_obergeschoss_onoff_logik DOIF ([sync_obergeschoss_onoff_dummy] eq "on") (set multiroomaudiofirstsyncer sync Obergeschoss) DOELSEIF ([sync_obergeschoss_onoff_dummy] eq "off") (set multiroomaudioobergeschoss unsync)



Wichitg zu wissen:

Ich habe einen Squeezeplayer (multiroomaudiofirstsyncer) auf meinem Server der immer läuft. Smartvisu/fronthem holt sich die Infos nur von diesem ab und alle Räume werden nur mit diesem gesynct.
FHEM: 5.6 RPI2 / CUL / BLUETOOTH / HMCFGLAN
ESXi HomeServer
CISCO WAP371 AC Cluster / 3 APs
CISCO ASA5505 SEC
Zodac HTPC & 2x RPI HTPC / 2x Trendnet HD IPCam PoE

igami

Vielen Dank, werde ich mich dann genauer mit befassen, wenn es bei mir zur Einrichtung kommt.

Kannst du damit auch mehrere Gruppen definieren oder nur eine?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

kvo1

Hallo Gravidi
das UI ist sehr schon gemacht, sieht echt gut aus!

Das mit dem Max2play und Addon (XSqueeze) für Kodi kannte ich auch noch nicht !

Wenn Du mehr vorstellst, lass es uns bitte wissen!






RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

dev0

Zitat von: TWART016 am 21 August 2015, 01:32:51
ich möchte ein Multiroom Audiosystem einrichten.

Wenn du dich für Sonos entscheiden würdest, dann würdest du hier ein passendes FHEM/smartVISU Widget finden:
http://forum.fhem.de/index.php/topic,35598.msg325050.html#msg325050

/Uli

TWART016

Hallo gravidi,

besten Dank. Sobald ich dazu komme, werde ich sicherlich noch einige Fragen haben.

Zitat von: gravidi am 21 August 2015, 15:17:41
Wichitg zu wissen:

Ich habe einen Squeezeplayer (multiroomaudiofirstsyncer) auf meinem Server der immer läuft. Smartvisu/fronthem holt sich die Infos nur von diesem ab und alle Räume werden nur mit diesem gesynct.

Der Squeezeplayer auf den Raspberry Pi Master wird also dringend online benötigt, damit der Sync funktioniert? Wenn das so ist, hab ich kein Problem mit, der soll so oder so immer laufen, da dort auch FHEM installiert ist.


Gruß
TWART016

Sebastian

Zitat von: gravidi am 21 August 2015, 15:17:41
Natürlich kann ich das zur Verfügung stellen.

Smartvisu Teil:

multiroomaudio.html (Wird über das Notenschlüssel Icon im Hauptmenu angesprochen)


{% extends "base.html" %}
{% import "multimedia.html" as multimedia %}
{% block sidebar %}

<div class="block">
<div class="ui-bar-c ui-li-divider ui-corner-top">Infos:</div>
<div class="ui-fixed ui-body-a ui-corner-bottom">
            <div class="multiroomaudiofull_h1">K&uuml;nstler:</div>
            <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.artist', 'service.eg-ar-multiroomaudio.artist') }} </div>
      <div class="multiroomaudiofull_h1">Lied:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.track', 'service.eg-ar-multiroomaudio.track') }}</div>
      <div class="multiroomaudiofull_h1">Album:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.album', 'service.eg-ar-multiroomaudio.album') }}</div>
      <div class="multiroomaudiofull_h1">L&auml;uft:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.duration', 'service.eg-ar-multiroomaudio.duration') }}</div>
      <div class="multiroomaudiofull_h1">Playlist:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlistname', 'service.eg-ar-multiroomaudio.playlistname') }}</div>
      <div class="multiroomaudiofull_h1">Playlist Nr:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlisttrack', 'service.eg-ar-multiroomaudio.playlisttrack') }}</div>
      <div class="multiroomaudiofull_h1">Playlist Count:</div>
      <div class="multiroomaudiofull_h2">{{ basic.value('visu_services_multiroomaudio_server.playlistcount', 'service.eg-ar-multiroomaudio.playlistcount') }}</div>
</div>
  </div>
<div class="block">
<div class="ui-bar-c ui-li-divider ui-corner-top">Etage w&aumlhlen:</div>
<div class="ui-fixed ui-body-a ui-corner-bottom">
      <div class="multiroomaudiofull_h1">Wohnzimmer:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_wohnzimmer.sync', 'service.eg-ar-multiroomaudio.syncwohnzimmer', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Flur:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_flur.sync', 'service.eg-ar-multiroomaudio.syncflur', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Obergeschoss:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_obergeschoss.sync', 'service.eg-ar-multiroomaudio.syncgaestezimmer', 'On', 'Off' ) }}</div>
      <div class="multiroomaudiofull_h1">Dachgeschoss:</div>
      <div class="multiroomaudiofull_h2">{{ basic.flip('visu_services_multiroomaudio_server_dachgeschoss.sync', 'service.eg-ar-multiroomaudio.syncgallerie', 'On', 'Off' ) }}</div>
</div>
</div>
{% endblock %}


{% block content %}
<div  class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>Cover</h3>
                {{ multimedia.image('visu_services_multiroomaudio_server.cover', 'http://deinlmsserver:9000/music/current/cover.jpg?player=deinemacadresse&x=40011', 'fill', '1s') }}
</div>
<div data-role="collapsible">
<h3>Hauseingang Livestream</h3>
                <img id="mjpeg_0" src="http://deineurlzurkamera"  width="100%" height="100%"/>
</div>
</div>
</div>   
 
<div  class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>Master</h3>
            <div class="multiroomaudiofull_h1">Volume:</div>
            {{ basic.slider('visu_services_multiroomaudio_server.volume','service.eg-ar-multiroomaudio.volume','0','100','1') }}
                  <span data-role="controlgroup" data-type="horizontal">
                  {{ basic.button('visu_services_multiroomaudio_server.play', 'service.eg-ar-multiroomaudio.play', '', icon1~'audio_play.png', icon0~'audio_play.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.pause', 'service.eg-ar-multiroomaudio.pause', '', icon1~'audio_pause.png', icon0~'audio_pause.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.stop', 'service.eg-ar-multiroomaudio.stop', '', icon1~'audio_stop.png', icon0~'audio_stop.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.next', 'service.eg-ar-multiroomaudio.next', '', icon1~'audio_ff.png', icon0~'audio_ff.png', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server.back', 'service.eg-ar-multiroomaudio.back', '', icon1~'audio_rew.png', icon0~'audio_rew.png', 'midi') }}
                  </span>
            <div class="multiroomaudiofull_h1">Playlist w&aumlhlen:</div>
                  <span data-role="controlgroup" data-type="horizontal">
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.andreas', 'service.eg-ar-multiroomaudio.andreasplaylist', 'Andreas','','Andreas', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.anke', 'service.eg-ar-multiroomaudio.ankeplaylist', 'Anke','','Anke', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.hiphop', 'service.eg-ar-multiroomaudio.hiphopplaylist', 'HipHop','','HipHop', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.schlager', 'service.eg-ar-multiroomaudio.schlagerplaylist', 'Schlager','','Schlager', 'midi') }}
                  {{ basic.button('visu_services_multiroomaudio_server_playlist.party', 'service.eg-ar-multiroomaudio.partyplaylist', 'Party','','Party', 'midi') }}
                 
                  </span>
</div>
<div data-role="collapsible">
<h3>Seperat</h3>
            <div class="multiroomaudiofull_h1">Flur:</div>
            {{ basic.slider('visu_services_multiroomaudio_flur.volume','service.eg-flur-multiroomaudio.volume','0','100','1') }}
            <div class="multiroomaudiofull_h1">Wohnzimmer:</div>
            {{ basic.slider('visu_services_multiroomaudio_whz.volume','service.eg-whz-multiroomaudio.volume','0','100','1') }}   
            <div class="multiroomaudiofull_h1">Obergeschoss:</div>
            {{ basic.slider('visu_services_multiroomaudio_obergeschoss.volume','service.og-gz-multiroomaudio.volume','0','100','1') }}
            <div class="multiroomaudiofull_h1">Dachgeschoss:</div>
            {{ basic.slider('visu_services_multiroomaudio_dachgeschoss.volume','service.dg-gal-multiroomaudio.volume','0','100','1') }}
</div>     
</div>
</div>
{% endblock %}


Die benötigten CSS Klassen: (aus der visu.css)


@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,700);
.multiroomaudiofull_h1 {
font-family: 'Open Sans', sans-serif;
font-weight: 700;
font-size:22px;
color:#ffffff;
text-align:left;
}

.multiroomaudiofull_h2 {
font-family: 'Open Sans', sans-serif;
font-weight: 300;
font-size:20px;
color:#ffffff;
text-align:left;
}


Fhem Teil:

Ein Sync Beispiel für "Etage wählen", hier Obergeschoss -> Sync bzw unsync

Dummy zum auslösen des DOIF (Ist als On/Off Gad in fronthem)


##Obergeschoss
define sync_obergeschoss_onoff_dummy dummy
attr sync_obergeschoss_onoff_dummy alias SyncObergeschoss
attr sync_obergeschoss_onoff_dummy group Dummys
attr sync_obergeschoss_onoff_dummy icon im_bullhorn
attr sync_obergeschoss_onoff_dummy room Multiaudio
attr sync_obergeschoss_onoff_dummy setList off on
attr sync_obergeschoss_onoff_dummy webCmd on:off


Der DOIF Anteil:


##Logik: sync obergeschoss bei dummy on - bei dummy off unsync
define sync_obergeschoss_onoff_logik DOIF ([sync_obergeschoss_onoff_dummy] eq "on") (set multiroomaudiofirstsyncer sync Obergeschoss) DOELSEIF ([sync_obergeschoss_onoff_dummy] eq "off") (set multiroomaudioobergeschoss unsync)



Wichitg zu wissen:

Ich habe einen Squeezeplayer (multiroomaudiofirstsyncer) auf meinem Server der immer läuft. Smartvisu/fronthem holt sich die Infos nur von diesem ab und alle Räume werden nur mit diesem gesynct.

Hi,

wie hast du die dazugehörigen GADs definiert ?
Bei mir aktualisiert er die Tracks erst wenn ich die Seite neu lade.
Interessieren würde mich auch wie die GADs für Play, Pause etc definiert sind.
Das funktioniert bei mir nämlich nicht.

Gruß
Gruß
Sebastian

gravidi

#14
Hallo Sebastian,

das wird vermutlich nicht an Smartvisu liegen, sondern an deinen FHEM Einstellungen für den Squeeze Player.

Trag mal bitte beim Player folgendes attr ein.

attr meinplayer donotnotify false

EDIT:

Hatte die Gads überlesen ;)

Beispiel für Play:

mode:item
device: meinplayer
reading: null
converter: Direct
cmd set: play
FHEM: 5.6 RPI2 / CUL / BLUETOOTH / HMCFGLAN
ESXi HomeServer
CISCO WAP371 AC Cluster / 3 APs
CISCO ASA5505 SEC
Zodac HTPC & 2x RPI HTPC / 2x Trendnet HD IPCam PoE

dominik

Ich habe gerade mein Multiroom mit BOSE SoundTouch aufgebaut. War lange am überlegen ob SONOS oder BOSE, aber folgendes hat mich dazu bewogen BOSE zu kaufen:
- Die kleine Version für Küche/Bad/... gibt es bereits ab 166€
- Buttons am Speaker (das war mir sehr wichtig, ich möchte keine App, das dauert viel zu lange)
- Multiroom über Bluetooth (damit kann ich über alle Geräte abspielen und bin ziemlich zukunftssicher)
- Integration in FHEM über von BOSE offiziell zur Verfügung gestellte Schnittstellen (Das FHEM Modul dazu entwickle ich gerade http://forum.fhem.de/index.php/topic,46838.0.html :) )

Was mich noch stört:
- BOSE unterstützt noch kein DLNA, es gibt zwar die DLNA Service (Volume funktioniert sogar), aber diese sind nicht 100% implementiert. Ich hoffe das ändert sich noch.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

gravidi

#16
Hallo Dominik,

ich glaube da gehen die Geschmäcker auseinandern und ist auch abhängig was schon für eine Infrastruktur vorhanden ist (Geräte, Wlan etc).

Bei mir ist es so, das ich in jedem Raum schon irgentein Gerät habe was den Squeeze Player nutzen kann, sei es Tablet in der Küche, Tablet im Flur, Kodi/HTPC im Wohnzimmer, Gästezimmer,Schlafzimmer, Gallerie und Dachterrasse.

Daher entschied ich mich dafür diese Geräte einfach dafür zu nutzen und bei mir kein autarkes System einzuführen. Das hat den Vorteil das ich imense Kosten spare alle Räume abzudecken und muss mir keine weiteren zusätzlichen Geräte hinstellen.

Sollte ich mich mal für eine andere Lösung entscheiden, würde ich auf jedenfall SONOS nehmen. SONOS ist am weitesten ausgereift und nutzt WLAN mit einem eigenen Meshnetzwerk.

EDIT:

DLNA ist mir nicht so wichtig und -soweit ich weiss- auch kein Multiroom Protokoll.
FHEM: 5.6 RPI2 / CUL / BLUETOOTH / HMCFGLAN
ESXi HomeServer
CISCO WAP371 AC Cluster / 3 APs
CISCO ASA5505 SEC
Zodac HTPC & 2x RPI HTPC / 2x Trendnet HD IPCam PoE

dominik

Hallo gravidi,

ich wollte damit nicht sagen, dass BOSE die beste Lösung ist. Für mich war es aber das. Bei SONOS sah ich leider gar keine offenen Schnittstellen, deswegen war mir das System nicht ganz zukunftssicher. Mit Bluetooth hat man aber immer etwas was vermutlich auch noch die nächsten 5 Jahren gehen wird. WLAN ist bei mir ganz gut in der gesamten Wohnung, daher war WLAN bei SONOS auch kein Argument. Des Weiteren war beim Testen der Klang meiner Ansicht nach bei BOSE besser als bei SONOS, aber das ist definitiv Geschmacksache ;)

Ich habe nämlich auch einen Sony Airplay/DLNA Player mit proprietärer App. Was ist passiert: App keine Updates mehr, Airplay ab iOS9 nicht mehr vernünftig möglich. Einzig DLNA als offener Standard kann ich noch selbst nutzen.

Deswegen ist mir DLNA auch so wichtig :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

spilu

Auch ich möchte demnächst ein Multiroom-System aufbauen. Grundlage sollen mehrere RPi2 und Squeezebox sein ... so weit so gut, Anleitungen ginbt es ja und ich lass mich überraschen, ob es klappt :-D

Aber eine Frage vorab, deren Antwort ich noch nirgens lesen und mangels System nicht ausprobieren konnte:
Ist es möglich, in ein solches System ein Smartphone/Tablet als temporäre Quelle einzufügen? Wenn ja, wie? ;-)

Anwendungsbeispiel:
- Besuch ist da und hat gute Musik auf dem Mobilgerät (MP3 oder spotify oder sonstwas)
- einloggen ins heimische WLAN, zB per GastWLAN
- fremdes Mobilgerät steht nun (wie?) als Quelle zur Verfügung
- Musiksammlung kann nun auch über die Squeezeplayer ausgegeben werden

Ist das grundsätzlich möglich? Oder eher maximal aufwendig?

Danke und vuele Grüße
spilu

TWART016

Hallo,

welche Lautsprecher verwendet ihr für die unterschiedlichen Zimmergrößen (Bad, Küche, Schlafzimmer, 10m², 20 m², 30m²)?
Ich würde  nur ungern mehr als 50-80€ pro Lautsprecher / pro Raum ausgeben.

Schließt ihr die Lautsprecher über Klinke oder Raspberry Pi Aufsatz an?


Gruß
TWART016

TWART016

Hallo,

wie kann das xSqueeze Addon auf Openelec (Kodi) installiert werden?

Die Schritte von der Installation habe ich durchgeführt.
http://kodi.wiki/view/Add-on:XSqueeze

Das Addon erscheint jedoch nicht.

Zudem habe ich im Log ein Python Fehler, dass es fehlt.


Gruß
TWART016