SONOS: Neue Version mit Gruppeninformationen und Titelübernahme bei Slaveplayern

Begonnen von Reinerlein, 04 April 2017, 20:37:18

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo zusammen,

diesmal ein Update ganz im Zeichen von Gruppen und Informationen dazu.

Es gibt jetzt neu den Begriff der "Bonded"-Player. Diese gebundenen Player sind Bestandteil einer "festen" Bindung wie der rechte Player eines Stereopärchens oder die Satellitenplayer in einem 5.1er Verbund.
Es gibt mehrere Readings, die nun Informationen über Slaveplayer liefern, die nicht gebunden sind, bzw. noch frei verfügbar sind.

Des weiteren gibt es eine Liste der Player, deren LineIn-Eingang aktiv ist sowie deren Namen dazu...

Außerdem gibt es nun ein Attribut mit dem man bestimmen kann, dass Slaveplayer die Titelinformationen ihres Masters übernehmen. Das wird am jeweils gewünschten Player eingestellt.

Und es gibt ein Attribut "stopSleeptimerInAction". Mit diesem wird FHEM dazu angehalten, einen etwaig laufenden SleepTimer bei einem neuen transportState "PAUSED_PLAYBACK" oder "STOPPED" zu deaktivieren.
Zusammen mit dem (am Besten temporär eingesetzten) Attribut "saveSleeptimerInAction" kann man damit einen Sleeptimer durch Playeraktionen deaktivieren lassen, und wenn man von FHEM aus was steuert, kann man dieses Deaktiveren temporär aussetzen lassen...

  • Es gibt zwei neue Readings "AvailablePlayerList" und "AvailablePlayerListAlias" am Sonosplayer-Device, wenn das Attribut "getListsDirectlyToReadings" am Sonos-Device gesetzt wurde. Diese Reading geben die anderen noch verfügbaren, nicht gebundenen, Player an. Das ist die Grundlage für eine Player-zur-Abspielgruppe-hinzufügen-Funktion als Listendarstellung.
  • Es gibt zwei neue Readings "AllPlayerNotBonded" und "AllPlayerNotBondedCount" am Sonos-Device, welche alle Masterplayer angibt, die nicht gebunden sind.
  • Es gibt ein neues Reading "IsBonded" am Sonosplayer-Device, welches angibt, ob der Player in einer Bindung zum Masterplayer steht (anstatt ein einfaches Gruppenmitglied zu sein). Gebundene Player sind z.B. der rechte Player im Stereoverbund, sowie die Satellitenplayer in einem 5.1er Surroundsystem (also Subwoofer, hintere Lautsprecher und vordere Lautsprecher).
  • Es gibt drei neue Readings "SlavePlayerNotBonded", "SlavePlayerNotBondedList" und "SlavePlayerNotBondedListAlias" am Sonosplayer-Device, wobei die beiden letzteren nur erzeugt werden, wenn das Attribut "getListsDirectlyToReadings" am Sonos-Device gesetzt wurde.
  • Es gibt jetzt ein Attribut "getTitleInfoFromMaster" am Sonosplayer-Device, mit welchem man ein Slave-Device (auch gebundene) dazu bringen kann, die wichtigsten Abspielreadings automatisch vom Master zu duplizieren.
  • Die Oberflächenauswahl für "AddMember", "RemoveMember" und "CreateStereoPair" wurde auf die nicht bereits gebundenen Player bzw. die Teilnehmer deer Gruppe beschränkt.
  • Es gibt zwei neue Readings "AllPlayer" und "AllPlayerCount" am Sonos-Device. Damit erhält man eine komplette Liste aller Player (und deren Anzahl), egal wie sie gerade verwendet werden.
  • Die mitgelieferte Prozedur für die ReadingsGroup-Anzeigen wurde für das neue Reading "Queue" erweitert, außerdem wurde ein Darstellungsproblem der Gruppierungsanzeige mit aktuellen Versionen von FHEMWEB behoben
  • Es gibt zwei neue Readings "ButtonState" und "ButtonLockState", sowie einen Setter für "ButtonLockState".
  • Es gibt ein neues Reading "LineInPlayer" am Sonos-Device, und wenn das Attribut "getListsDirectlyToReadings" gesetzt ist, auch "LineInPlayerList" und "LineInPlayerListAlias". Diese Liste enthält die gültigen LineIn-Eingänge aller Player, die für die Wiedergabe ausgewählt werden können.
  • Es gibt zwei neue Attribute "stopSleeptimerInAction" und "saveSleeptimerInAction" am Sonosplayer-Device. Mit "stopSleeptimerInAction" wird das Modul dazu angehalten, bei einem Wechsel des TransportState auf "STOPPED" oder "PAUSED_PLAYBACK" einen etwaig aktivierten SleepTimer zu deaktivieren. Mit dem Attribut "saveSleeptimerInAction" kann man dieses Verhalten (z.B. temporär) wieder unterdrücken.
  • Es gibt jetzt ein Reading "ZoneGroupNameDetails" am Sonosplayer-Device, welches die Slavezonen als textuelle Auflistung mittels '+' enthält. Ist leer, wenn es keine Slaveplayer gibt. Enthält den Namen des Gruppenmasters, wenn es einen solchen gibt.
  • Interne Aufräumarbeiten: Mittlerweile überflüssige Codeteile wurden entfernt, und einige Single-Readingsupdates zu einem Bulk-Readingsupdate zusammengefasst.
  • Die Readings "currentFavouriteNameMasked", "currentPlaylistNameMasked" und "currentRadioNameMasked" werden automatisch gesetzt, wenn das Attribut "getListsDirectlyToReadings" gesetzt ist.
  • Tippfehler bei den Readings "RadioList" und "RadioListAlias" korrigiert. Korrekt ist nun "RadiosList" und "RadiosListAlias" (also Mehrzahl bei Radios).

Wie immer ab Morgen per Update oder ab sofort per SVN.

Viel Spaß damit :)

Grüße
Reinerlein

DeeSPe

Hallo Reiner,

nach vielem Aufräumen sind noch irgendwie unklare Meldungen im Log verblieben.

2017.04.28 17:55:02 1: SONOS0: Error during retreiving of FavouriteName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1261.

2017.04.28 17:55:03 1: SONOS0: Error during retreiving of FavouriteName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1261.

2017.04.28 17:56:42 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1293.

2017.04.28 17:56:43 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1293.


Und danach kommt dann meist:
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.


Bin aber nicht 100% sicher ob das was miteinander zu tun hat da mir auch stacktrace keine Informationen liefert.

BTW: Ist es eigentlich nötig so viele Log Meldungen zu erzeugen? Ich muss das Sonos Device auf "verbose 0" setzen damit es mir nicht das Log voll schreibt. Habe auch alle anderen Level probiert, aber erst bei 0 ist wirklich "ausreichend Ruhe".

Gruß
Dan

P.S. War bisher zu faul mal alle Sonos zu löschen und neu anzulegen, hoffe das ist nicht nötig.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Reinerlein

Hi Dan,

5 Level für Logmeldungen sind ja auch nicht viel, die muß man schon ausnutzen :)
Aber es spricht ja auch nichts dagegen, das auf 0 zu setzen...

Zu den Meldungen:
Da wird versucht die Readings "Favourites" und "Radios" zu durchsuchen. Wenn da nichts vernünftiges drinsteht, dann klappt das nicht.
Aber in der aktuellen Version sollte diese Meldung eigentlich schon weg sein... Hast du wirklich die aktuelle Version?
Ansonsten ruf für die fraglichen Player jeweils einmal "get <Playerdevice> FavouritesWithCovers" und "get <Playerdevice> RadiosWithCovers" auf. Dann gibt es das, was er erwartet :)
Ansonsten bietet es sich auch an, die Userreadings für die Favoriten usw. zu entfernen, und das Attribut "getListsDirectlyToReadings" zu setzen.
Dann kannst du die Readings automatisch Aktualisieren lassen (unter https://wiki.fhem.de/wiki/SONOS#Automatische_Aktualisierung_der_Favoriten_.2F_Playlisten_.2F_Radios_durch_Notifies gibt es ein Beispiel dafür).

Grüße
Reiner

DeeSPe

Danke für Deine Tipps Reiner, sie scheinen geholfen zu haben.

Ich habe "get TYPE=SONOSPLAYER FavouritesWithCovers" und "get TYPE=SONOSPLAYER RadiosWithCovers" ausgeführt, die userReadings bei allen Playern gelöscht und "attr Sonos getListsDirectlyToReadings 1" gesetzt.

Die SONOS0 Errors bleiben nun aus.
"Use of uninitialized value $d in hash element at fhem.pl line 4053." ist weiterhin vorhanden, scheint dann aber nichts mit Sonos zu tun zu haben. Mal schauen wie ich herausbekomme woher das noch kommt.

Nochmals Danke.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Jetzt ist endlich zufriedenstellende Ruhe im Log!

"Use of uninitialized value $d in hash element at fhem.pl line 4053." war mein eigenes Modul! :-[ :-[
Dank der anderen Fehlerbehebungen konnte ich das endlich ausfindig machen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe