Autor Thema: Squeezebox Modul - erste Version  (Gelesen 403336 mal)

Offline tomster

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Squeezebox Modul - erste Version
« Antwort #735 am: 28 Mai 2015, 00:59:43 »
Vielen Dank für die Aufklärung!

Ich hab zwar eh nur noch ein Auge offen, werd das aber morgen einmal abchecken.
Was mir nur bei der (vermeintlich) korrekten Syntax auffällt:
Dann würde aber wohl auch beim befehl "unsync" ALLES ge-unsynct werden und nicht nur 1 Player, oder?

Wäre die Logik andersrum nicht sinnvoller?

Offline joginet

  • Full Member
  • ***
  • Beiträge: 229
Antw:Squeezebox Modul - erste Version
« Antwort #736 am: 28 Mai 2015, 06:50:38 »
Zitat
Was mir nur bei der (vermeintlich) korrekten Syntax auffällt:
Dann würde aber wohl auch beim befehl "unsync" ALLES ge-unsynct werden und nicht nur 1 Player, oder?

Wäre die Logik andersrum nicht sinnvoller?

Moin Tomster,

beim unsync-Befehl ist es wieder andersrum:

set terrasse.SB_Player unsync kueche
trennt den Player "terrasse.SB_Player" vom Master "kueche"

Das kannst Du für jeden Player machen, der mit der Küche gesynct ist.

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

Offline tomster

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Squeezebox Modul - erste Version
« Antwort #737 am: 28 Mai 2015, 16:52:14 »
Ahhh, ok. Vielen Dank!
Das klingt zwar plausibel, macht's mir aber nicht unbedingt einfacher, die sync/unsync-Geschichte in's Tablet UI zu integrieren. Werd da wohl noch ein bissl Hirnschmalz drauf verwenden müssen...

Hat jemand auch eine Erklärung für das Stoppen des Masters beim sync?

Offline gravidi

  • Jr. Member
  • **
  • Beiträge: 60
Antw:Squeezebox Modul - erste Version
« Antwort #738 am: 29 Mai 2015, 15:09:18 »
Moin tomster,

vielleicht hilft dir meine Lösung ansatzweise.

Ich nutze Smartvisu und habe mir mein Dashbaord als Multiroomaudiozentrale gebaut.

Neben Cover, Infos zum Track, Album, Künstler, Buttons für die Wiedergabe und Buttons für Playlisten habe ich jeweils einen Button pro Etage um diese als Player "heranzuholen" und zu syncen.

Normalerweise kannst du jeden Player mit jedem Player syncen. Das macht es schwierig auf der GUI zu händeln und die Mitbewohner kommen leicht durcheinander.

Bei mir hat sich herausgestellt das es einfacher ist einen zentralen Player zu haben wo alle Infos herkommen und die jeweiligen Playlisten ausgewählt werden. Diesen Player habe ich einfach als "Master" auf meinen Pi installiert und die restlichen Player syncen einfach alle mit diesem. Auf dem Pi läuft auch FHEM daher ist der eh immer an. Vorteil dabei ist natürlich auch das die GUI dann extrem einfacher zu entwickeln ist.

Grüße

Grav
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

Offline joginet

  • Full Member
  • ***
  • Beiträge: 229
Antw:Squeezebox Modul - erste Version
« Antwort #739 am: 29 Mai 2015, 16:39:08 »
Moin zusammen,
ich hab's in meiner "GUI" (Floorplan) so gelöst:

http://forum.fhem.de/index.php/topic,33088.msg288020.html#msg288020


Ist evt. ein bischen aufwändig mit den vielen dummys - aber so kann jeder Player auf Tastendruck mit jedem gesynct werden.
Hat sich in der Praxis bisher bestens bewährt...

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

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Squeezebox Modul - erste Version
« Antwort #740 am: 02 Juni 2015, 08:13:29 »
Normalerweise kannst du jeden Player mit jedem Player syncen. Das macht es schwierig auf der GUI zu händeln und die Mitbewohner kommen leicht durcheinander.

Ich hatte auch mal versucht, mir etwas einfach bedienbares zu basteln, bin damals aber gescheitert bzw. hatte den Versuch erstmal beiseite gelegt. Durch den Beitrag

ich hab's in meiner "GUI" (Floorplan) so gelöst:

http://forum.fhem.de/index.php/topic,33088.msg288020.html#msg288020


auf eine Idee gebrachte, habe ich mir eine meiner Meinung nach praktikable Lösung ohne Dummys gebaut, die ich hier kurz vorstellen möchte:

Meine Ausgangssituation:
Ich habe fünf SqueezePlayer in meinem FHEM: OG.ez.RA.Player, OG.ku.RA.Player, OG.ba.RA.Player, DG.sz.RA.Player, DG.wz.RA.Player

Vorbereitung:
Zunächst benötige ich in jedem SqueezePlayer fünf neue userReadings, die den SyncStatus mit den anderen Player enthalten (eigentlich jeweils nur vier, da der SyncStatus mit sich selbst nicht benötigt wird, aber so ist der Befehl einfacher):

attr .G\...\.RA.Player userReadings
OG.ez.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ez.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
OG.ku.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ku.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
OG.ba.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ba.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
DG.sz.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'DG.sz.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
DG.wz.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'DG.wz.RA.Player') != -1) {return 'synced'} else {return 'not synced'}}

Die "Schaltzentrale":
Für die Bedienung habe ich mir nun zunächst eine ReadingsGroup für alle Player gebaut - in Zukunft soll die Bedienung auf in jedem Raum möglich sein -> da wird dann jeweils nur eine Zeile der ReadingsGroup verwendet:

define Test.RG readingsGroup <>,<OG.ez.RA.Player>,<OG.ku.RA.Player>,<OG.ba.RA.Player>,<DG.sz.RA.Player>,<DG.wz.RA.Player>\
OG.ez.RA.Player:<OG.ez.RA.Player>,<>,!OG.ku.RA.Player,!OG.ba.RA.Player,!DG.sz.RA.Player,!DG.wz.RA.Player\
OG.ku.RA.Player:<OG.ku.RA.Player>,!OG.ez.RA.Player,<>,!OG.ba.RA.Player,!DG.sz.RA.Player,!DG.wz.RA.Player\
OG.ba.RA.Player:<OG.ba.RA.Player>,!OG.ez.RA.Player,!OG.ku.RA.Player,<>,!DG.sz.RA.Player,!DG.wz.RA.Player\
DG.sz.RA.Player:<DG.sz.RA.Player>,!OG.ez.RA.Player,!OG.ku.RA.Player,!OG.ba.RA.Player,<>,!DG.wz.RA.Player\
DG.wz.RA.Player:<DG.wz.RA.Player>,!OG.ez.RA.Player,!OG.ku.RA.Player,!OG.ba.RA.Player,!DG.sz.RA.Player,<>\

attr Test.RG commands { 'OG.ez.RA.Player.synced' => 'set $READING unsync $DEVICE', 'OG.ez.RA.Player.not synced' => 'set $DEVICE sync $READING', 'OG.ku.RA.Player.synced' => 'set $READING unsync $DEVICE', 'OG.ku.RA.Player.not synced' => 'set $DEVICE sync $READING', 'OG.ba.RA.Player.synced' => 'set $READING unsync $DEVICE', 'OG.ba.RA.Player.not synced' => 'set $DEVICE sync $READING', 'DG.sz.RA.Player.synced' => 'set $READING unsync $DEVICE', 'DG.sz.RA.Player.not synced' => 'set $DEVICE sync $READING', 'DG.wz.RA.Player.synced' => 'set $READING unsync $DEVICE', 'DG.wz.RA.Player.not synced' => 'set $DEVICE sync $READING' }
attr Test.RG nonames 1
attr Test.RG notime 1
attr Test.RG valueIcon { 'OG.ez.RA.Player.synced' => 'it_network', 'OG.ez.RA.Player.not synced' => 'it_television', 'OG.ku.RA.Player.synced' => 'it_network', 'OG.ku.RA.Player.not synced' => 'it_television', 'OG.ba.RA.Player.synced' => 'it_network', 'OG.ba.RA.Player.not synced' => 'it_television', 'DG.sz.RA.Player.synced' => 'it_network', 'DG.sz.RA.Player.not synced' => 'it_television', 'DG.wz.RA.Player.synced' => 'it_network', 'DG.wz.RA.Player.not synced' => 'it_television' }

Der Vorteil gegenüber der Dummy-Lösung, davon abgesehen, dass man nicht so viele Dummys braucht, ist, dass der Status per Longpoll aktualisiert wird. Das heißt, wenn ich einen Player in einem Raum synce, wird das im anderen auch angezeigt...

Anbei noch ein Screenshot, wie es aktuell aussieht.

Ronny

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1473
  • FHEMonaut
Antw:Squeezebox Modul - erste Version
« Antwort #741 am: 02 Juni 2015, 08:50:23 »
Hallo Ronny,

sieht gut aus, danke das Du das hier vorstellst  ;) , muss ich mal testen ... bin ohnehin noch mitten in diesem Thema !

Der Vorteil der anderen Lösung (von Jochen) ist, daß man die Player auch noch steuern kann (Lautstärke , Playlists etc) !

Wie hast du das gelöst ?

Gruss klaus
« Letzte Änderung: 02 Juni 2015, 09:03:46 von kvo1 »
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

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Squeezebox Modul - erste Version
« Antwort #742 am: 02 Juni 2015, 19:17:10 »
Der Vorteil der anderen Lösung (von Jochen) ist, daß man die Player auch noch steuern kann (Lautstärke , Playlists etc) !

Wie hast du das gelöst ?

Da es sich um eine ReadingsGroup handelt, kann diese nahezu beliebig erweitert werden. Ich habe mit zum Beispiel eine Readingsgroup für jeden Plaver gebaut und diese im jeweiligen Raum plaziert - diese habe ich nun um Buttons zur Synchronisation erweitert -> siehe Anhang...

Ronny

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1473
  • FHEMonaut
Antw:Squeezebox Modul - erste Version
« Antwort #743 am: 02 Juni 2015, 20:00:36 »
Phuuuu wie schick ist das denn  :D

Zitat
Ich habe mit zum Beispiel eine Readingsgroup für jeden Plaver gebaut und diese im jeweiligen Raum plaziert - diese habe ich nun um Buttons zur Synchronisation erweitert -> siehe Anhang...

Würdest Du eine eine Readingsgroup  beispielhaft hier posten...... das steigert den WAF ganz enorm  ;) ;D

klaus
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

Offline joginet

  • Full Member
  • ***
  • Beiträge: 229
Antw:Squeezebox Modul - erste Version
« Antwort #744 am: 02 Juni 2015, 20:44:15 »
Da schliesse ich mich an - echt cool - Respekt !
Besonders der Volume-Slider gefällt mir - ist das die Tablet-UI ?

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

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1473
  • FHEMonaut
Antw:Squeezebox Modul - erste Version
« Antwort #745 am: 02 Juni 2015, 20:48:58 »
Irgendwie will das mit dem Anlegen der Userreadings nicht klappen.

attr .G\...\.RA.Player userReadings
OG.ez.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ez.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
OG.ku.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ku.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
OG.ba.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'OG.ba.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
DG.sz.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'DG.sz.RA.Player') != -1) {return 'synced'} else {return 'not synced'}},
DG.wz.RA.Player:synced {if (index(ReadingsVal($name,'synced',''), 'DG.wz.RA.Player') != -1) {return 'synced'} else {return 'not synced'}}

wie würden diese aussehen ?

kvo1
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

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Squeezebox Modul - erste Version
« Antwort #746 am: 02 Juni 2015, 20:50:04 »
Wie heißen denn deine Player?

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1473
  • FHEMonaut
Antw:Squeezebox Modul - erste Version
« Antwort #747 am: 02 Juni 2015, 20:53:43 »
Wie heißen denn deine Player?

squeeze_pi2
squeeze_pi3
squeeze_Galaxy
squeeze_Denver
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

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Squeezebox Modul - erste Version
« Antwort #748 am: 02 Juni 2015, 20:59:33 »
Dann musst du die Namen aus dem Statement entsprechend anpassen: aus .G\... usw. müsste zum Beispiel squeeze_.* werden. Und dann müssten meine Namen (z.B. OG.ku.RA.Player) noch durch deine entsprechenden Namen ersetzt werden...

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1473
  • FHEMonaut
Antw:Squeezebox Modul - erste Version
« Antwort #749 am: 02 Juni 2015, 21:20:37 »
so das passt schon mal .... (hoffe ich)

attr squeeze_.* userReadings
squeeze_pi2:synced {if (index(ReadingsVal($name,'synced',''), 'squeeze_pi2') != -1) {return 'synced'} else {return 'not synced'}},
squeeze_pi3:synced {if (index(ReadingsVal($name,'synced',''), 'squeeze_pi3') != -1) {return 'synced'} else {return 'not synced'}},
squeeze_Galaxy:synced {if (index(ReadingsVal($name,'synced',''), 'squeeze_Galaxy') != -1) {return 'synced'} else {return 'not synced'}},
squeeze_Denver:synced {if (index(ReadingsVal($name,'synced',''), 'squeeze_Denver') != -1) {return 'synced'} else {return 'not synced'}}

jetzt habe ich noch ein Problem mit der RG ... hier mit den commands und der Anzeige der ICONS

klaus
« Letzte Änderung: 02 Juni 2015, 22:46:23 von kvo1 »
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