Sonos 7.1 pseudo

Begonnen von ch.eick, 13 März 2020, 11:09:48

Vorheriges Thema - Nächstes Thema

ch.eick

Hallo zusammen.

Fuer Sonos gibt es momentan noch keinen 7.1 Sound.
Nun habe ich einen grossen Raum und noch zwei Sonos One (es gehen auch andere Lautsprecher, die sich steuern lassen), mit denen ich den Raum fuellen wollte.
Diese zwei Lausprecher habe ich nun als zusaetzliches Stereo Paar fuer vorne links und rechts eingesetzt.

Vorgehensweise:

1. Die Lautsprecher im Sonos System hinzufuegen.
2. Gescheite Namen waehlen
3. Als Stereo Paar definieren
4. Die Balance zum Hoehrzentrum herausfinden
5. Eine Grundlautstaerke definieren

6. Ein Test...
6.1 Das Lautsprecher Paar der bestehenden Surrround Gruppe hinzufuegen.
6.2 Lautstaerke und Balance nachjustieren
6.3 Das Verhaeltnis von den vorderen 5.1 Lautsprechern zum neuen Lautsprecher Paar austesten.

==> Nun sollten folgende Werte bekannt sein.
Balance - im Stereo Paar
Volume - des 5.1 Systems
Offset - Das ist die Differenz der 5.1 Lautsprecher zum neuen Stereo Paar


Man bemerkt, dass die Lautstaerkeregelung ueber die Fernseher Fernbedienung und das Mute schalten leider nicht mit dem Stereo Paar gekoppelt ist.
Mit der Sonos App kann man natuerlich jede Lautstaerke separat oder in der Gruppe regeln, aber der WAF sinkt immens, da es zwei Fernbedienungen gibt ;-)

Beim einschalten des Fernsehers geht das Sonos System auf "SPDIF-Wiedergabe" und "PLAYING", was das Signal fuer die Aktivierung ist.
Nun werden die Startbedingungen gesetzt, damit einem nicht die Ohren weg fliegen :-)
Danach wird die Gruppe der 5.1 Lautsprecher erweitert.

Beim Abschalten des Fernsehers wird dann die Gruppe wieder aufgeloest.
EDIT: Kaum hatte ich es reingestellt kommt schon der erste Update, ist ja immer so.
         cmd_2 hat nun eine regex, die das Ende des Streams vom Fernseher checked. Ansonsten wurde erst wieder deaktiviert, wenn die Sonos in den Standby ging.
         Der Deaktivierungsloop ist auch direkt behoben.

cmd_3 steuert die Lautstaerke Kopplung, wobei auch Volume 0 die Zusatzlautsprecher auf 0 setzt. Frau kennt Mute nicht immer;-)

cmd_4 reagiert auf Mute

disable 1 hilft, wenn man mal das Rambazambe nicht moechte.


defmod Sonos_7.1_pseudo DOIF \
################################################################################################################\
## 1 Aktivierung von pseudo 7.1 mit einem extra Sonos Stereo Paar\
##\
( [Sonos_Wohnzimmer:currentTrackHandle:[spdif<\/res>.*.<r:streamInfo>(\d)] ] ne "0" and\
  [$SELF:cmd_nr] ne "1" )\
     (      \
      {Log 3, "Sonos_7.1_pseudo cmd_1 : 7.1 aktiviert"}\
      {fhem("set Sonos_Wohnzimmer Volume  ". ReadingsVal("Sonos_7.1_pseudo","Volume","na") ."")}\
      {fhem("set Sonos_Mobile_2_L Volume  ". (ReadingsVal("Sonos_7.1_pseudo","Volume","na")+ReadingsVal("Sonos_7.1_pseudo","Offset",0)) ."")}\
      {fhem("set Sonos_Mobile_2_L Balance ". ReadingsVal("Sonos_7.1_pseudo","Balance","na") ."")}\
      {fhem("set Sonos_Wohnzimmer AddMember Sonos_Mobile_2_L")}\
     )\
################################################################################################################\
## 2 Deaktivierung von pseudo 7.1 wenn der Fernseher nicht mehr aktiv ist\
##\
DOELSEIF\
    ([Sonos_Wohnzimmer:currentTrackHandle:[spdif<\/res>.*.<r:streamInfo>(\d)] ] eq "0" and\
     [$SELF:cmd_nr] ne "2" )\
     (\
      {Log 3, "Sonos_7.1_pseudo cmd_2 : 7.1 deaktiviert"}\
      {fhem("set Sonos_Wohnzimmer RemoveMember Sonos_Mobile_2_L")}\
     )\
################################################################################################################\
## 3 Kopplung der Lautstärke, damit das Stereo Paar auf die Fernbedienung des Fernsehers reagiert\
## \
DOELSEIF\
  ([Sonos_Wohnzimmer:transportState] eq "PLAYING" and\
   [Sonos_Wohnzimmer:currentTitle] eq "SPDIF-Wiedergabe" and\
   [Sonos_Wohnzimmer:Volume] )\
     (\
      {fhem("set Sonos_Mobile_2_L Volume ". (ReadingsVal("Sonos_Wohnzimmer","Volume",0)+ReadingsVal("Sonos_7.1_pseudo","Offset",0)) ."")}\
      {if (ReadingsVal("Sonos_Wohnzimmer","Volume","na") eq 0) {fhem("set Sonos_Mobile_2_L Volume 0")} }\
     )\
     (\
      {Log 3, "Sonos_7.1_pseudo cmd_3 : Volume gekoppelt ". ReadingsVal("Sonos_Wohnzimmer","Volume",0) ." ". ReadingsVal("Sonos_Mobile_2_L","Volume",0)}\
     )\
################################################################################################################\
## 4 Nun noch Mute weiter leiten\
## \
DOELSEIF\
  ([Sonos_Wohnzimmer:transportState] eq "PLAYING" and\
   [Sonos_Wohnzimmer:currentTitle] eq "SPDIF-Wiedergabe" and\
   [Sonos_Wohnzimmer:Mute] ne "")\
     (\
      {fhem("set Sonos_Mobile_2_L Mute ". ReadingsVal("Sonos_Wohnzimmer","Mute",0) ."")}\
     )

attr Sonos_7.1_pseudo DbLogExclude .*
attr Sonos_7.1_pseudo alias Sonos_7.1_pseudo
attr Sonos_7.1_pseudo disable 0
attr Sonos_7.1_pseudo do always
attr Sonos_7.1_pseudo readingList Volume Offset
attr Sonos_7.1_pseudo room Multimedia->Sonos
attr Sonos_7.1_pseudo setList Volume:slider,0,1,70 Offset:slider,0,1,40
attr Sonos_7.1_pseudo verbose 0
attr Sonos_7.1_pseudo wait 0:0:1,2


Nun sind noch die Grundwerte im Device zu setzen

setreading Sonos_7.1_pseudo Balance 75        <<< Die Lautsprecher stehen WAF freundlich
setreading Sonos_7.1_pseudo Offset 26           <<< Das erhoeht die Lautstaerke entsprechend der 5.1 Lautsprecher
setreading Sonos_7.1_pseudo Volume 20         <<< Bei dieser 5.1 Lautstaerke geht es nach dem aktivieren los

## Im 5.1 Device musste ich noch folgendes Attribut setzen, damit ein "Volume" Event erzeugt wird.
setattr Sonos_Wohnzimmer generateVolumeEvent 1


Und nun viel Spass
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick