Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Phiolin

Grundsätzlich ja, perfmon meldet bei mir relativ oft freezes nach Sonos Befehlen.
Tritt auch erst seit den neueren Versionen in diesem Jahr auf, da gab es ja mal eine größere Überarbeitung.

Bis auf 1-2 Abstürze des Moduls pro Tag läuft es aber "relativ" stabil. ;)

juemuc

Hallo,

wie kann ich erkennen, ob nach einen FHEM-Restart ein Sonos-Player schon Musik abspielt?

Das nachfolgende DOIF erkennt leider nicht, dass der Player schon "spielt". Die Befehle (hier mit "Befehlsfolge" bezeichnet) werden immer ausgeführt.
(["Sonos_Buero:appeared"])
(if [Sonos_Buero:currentFavouriteName] eq "" and
    [Sonos_Buero:transportState] ne "PLAYING")
(Befehlsfolge)

Hat jemand eine Idee? Ich möchte Aktionen durchführen, wenn die Box stromlos war aber nicht bei einem FHEM-Restart.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Reinerlein

Hi Jürgen,

ich habe das über ein Notify gelöst:

Sonos_Schlafzimmer:presence:.appeared {
  if (ReadingsVal("Sonos_Schlafzimmer", "currentTrackURI", "") eq "") {
    fhem "set Sonos_Schlafzimmer LoadRadio Kuschel%20FM ; set Sonos_Schlafzimmer Volume 1"
  }
}


Damit wird sichergestellt, dass beim Anschalten des Players immer etwas geladen wird, und die Lautstärke passt...

Grüße
Reiner

juemuc

Zitat von: Reinerlein am 08 September 2017, 23:34:16
Hi Jürgen,

ich habe das über ein Notify gelöst:

Sonos_Schlafzimmer:presence:.appeared {
  if (ReadingsVal("Sonos_Schlafzimmer", "currentTrackURI", "") eq "") {
    fhem "set Sonos_Schlafzimmer LoadRadio Kuschel%20FM ; set Sonos_Schlafzimmer Volume 1"
  }
}


Damit wird sichergestellt, dass beim Anschalten des Players immer etwas geladen wird, und die Lautstärke passt...

Grüße
Reiner

Hallo Reiner,
und bei einen Shutdown restart passiert nichts?
Bei mir werden die Befehl auch dann ausgeführt. Dies hat zur Folge, das eine Sonos-Box im Status "PLAYING" bei mir dann gestoppt wird.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

juemuc

#2989
Hi Reiner,

ich habe noch ein großes Problem:
Der Aufruf von
set Sonos_Buero PlayURITemp
    \\raspberrypi\SonosSpeak\Die_Balkontuer_ist_offen.mp3
      15

funktioniert ohne Probleme in der Befehlszeile. In einem DOIF wird nur die Laustärke der Sonos-Box auf 15 gesetzt.
defmod Tuer_Fenster_DOIF DOIF ([HM_56B2D0:state] eq "open")\
(IF ([HM_56BA54:state] eq "open")\
   (set Sonos_Buero PlayURITemp \
    \\raspberrypi\SonosSpeak\Das_Schlafzimmerfenster_ist_offen.mp3\
      15 ))\
(IF ([HM_50F361:state] ne "closed")\
   (set Sonos_Buero PlayURITemp \
    \\raspberrypi\SonosSpeak\Die_Balkontuer_ist_offen.mp3\
      15 ) )
attr Tuer_Fenster_DOIF do always


Zusätzlich kommt die Meldung:
Zitat2017.09.09 20:18:23 1: SONOS1: Da keine Endzeit ermittelt werden konnte, wird kein Restoring durchgeführt werden!

Hast Du eine Idee?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

juemuc

Zitat von: juemuc am 09 September 2017, 20:22:53
Hi Reiner,

ich habe noch ein großes Problem:
Der Aufruf von
set Sonos_Buero PlayURITemp
    \\raspberrypi\SonosSpeak\Die_Balkontuer_ist_offen.mp3
      15

funktioniert ohne Probleme in der Befehlszeile. In einem DOIF wird nur die Laustärke der Sonos-Box auf 15 gesetzt.
defmod Tuer_Fenster_DOIF DOIF ([HM_56B2D0:state] eq "open")\
(IF ([HM_56BA54:state] eq "open")\
   (set Sonos_Buero PlayURITemp \
    \\raspberrypi\SonosSpeak\Das_Schlafzimmerfenster_ist_offen.mp3\
      15 ))\
(IF ([HM_50F361:state] ne "closed")\
   (set Sonos_Buero PlayURITemp \
    \\raspberrypi\SonosSpeak\Die_Balkontuer_ist_offen.mp3\
      15 ) )
attr Tuer_Fenster_DOIF do always


Zusätzlich kommt die Meldung:
Hast Du eine Idee?

Zusatzinfo:
Ich nutze nicht set Sonos_Buero Speak 15 de |Die_Balkontuer_ist_offen.mp3| weil danach bei einem "ausgeschalteten" Sonosplayer genau dieses mp3-file zum Abspielen stehen bleibt und nicht das was vorher war. Bei einem "laufenden" Sonosplayer funktioniert es mit "Speak".

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Phiolin

Bei mir gibt das SONOS Modul auch seit gestern wieder mal Vollgas. Meist funktioniert ja alles ganz gut, aber zwischendurch hat es mal so Phasen, da geht dann auch wieder mal gar nichts. :)
2. Tag nacheinander, wo FHEM wegen Out-of-Memory nach einer Latte an SONOS Fehlermeldungen abstürzt:

Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3562, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3614, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3692, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3816, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3891, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3897, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3903, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3913, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3929, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3935, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3939, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3945, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3951, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3955, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4011, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4037, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4077, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4082, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4299, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4311, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4339, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4348, <$client> line 6.
Use of uninitialized value $workType in pattern match (m//) at ./FHEM/00_SONOS.pm line 4357, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4448, <$client> line 6.
Use of uninitialized value $workType in ucfirst at ./FHEM/00_SONOS.pm line 4451, <$client> line 6.
Use of uninitialized value $udn in concatenation (.) or string at ./FHEM/00_SONOS.pm line 5634, <$client> line 6.
2017.09.10 08:17:51 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_getSonosPlayerByUDN" at ./FHEM/00_SONOS.pm line 10002.
2017.09.10 08:17:51 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_Log" at ./FHEM/00_SONOS.pm line 9753.
Out of memory!

anpfeiffer

Da hab ich auch was zu bieten. Seitdem ich den Nanoleaf Aurora habe, wird mein Log-File mit der Meldung:

Loading device description failed with error: 422 Unprocessable Entity (Location: http://192.168.0.66:16021) at ./FHEM/00_SONOS.pm line 2463 thread 1.

zugemüllt. Offensichtlich hält das SonosModul das für einen möglichen Sonos-Lautsprecher und bekommt dann die Antwort 422
Kann ich das irgendwie verhindern?


l2r

attr Sonos usedonlyIPs <IPs deiner Sonosplayer, Kommagetrennt

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

anpfeiffer

Ja, Wissen ist Macht. Danke!

Tobias

Zitat von: Phiolin am 10 September 2017, 08:42:48
Bei mir gibt das SONOS Modul auch seit gestern wieder mal Vollgas. Meist funktioniert ja alles ganz gut, aber zwischendurch hat es mal so Phasen, da geht dann auch wieder mal gar nichts. :)
2. Tag nacheinander, wo FHEM wegen Out-of-Memory nach einer Latte an SONOS Fehlermeldungen abstürzt:

Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3562, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3614, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3692, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3816, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3891, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3897, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3903, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3913, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3929, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3935, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3939, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3945, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3951, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 3955, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4011, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4037, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4077, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4082, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4299, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4311, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4339, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4348, <$client> line 6.
Use of uninitialized value $workType in pattern match (m//) at ./FHEM/00_SONOS.pm line 4357, <$client> line 6.
Use of uninitialized value $workType in string eq at ./FHEM/00_SONOS.pm line 4448, <$client> line 6.
Use of uninitialized value $workType in ucfirst at ./FHEM/00_SONOS.pm line 4451, <$client> line 6.
Use of uninitialized value $udn in concatenation (.) or string at ./FHEM/00_SONOS.pm line 5634, <$client> line 6.
2017.09.10 08:17:51 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_getSonosPlayerByUDN" at ./FHEM/00_SONOS.pm line 10002.
2017.09.10 08:17:51 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_Log" at ./FHEM/00_SONOS.pm line 9753.
Out of memory!


genau DAS habe ich auch manchmal. Und ich bin völlig ratlos...
https://forum.fhem.de/index.php/topic,76521.0.html
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Reinerlein

Hi Tobias,

aus irgendeinem Grunde scheint die Prozedur nicht mit korrekten Daten beliefert zu werden.

Als erste Maßnahme könntest du nach Zeile 2503 (die mit der Zuweisung an $workType) eine Prüfung einbauen:

return if (!defined($workType));


Aber den Grund, warum da etwas falsch aufgerufen wird, bekommt man damit auch nicht raus...

Grüße
Reiner

juemuc

Hallo,

ich würde gerne über die Lautsärke-Buttons den Sender(Favoriten) wechseln. Hierzu habe ich folgende Definitionen:defmod Buero_Favoriten_V_DOIF DOIF ([Sonos_Buero:"UD"]) \
({my @fav = split(/\|/, \
            "[Sonos_Buero:FavouritesListAlias]");;;;\
my $pos = SONOS_posInList("[currentFavouriteName_Buero]",\
   @fav);;;;\
my $anz=$#fav;;;;\
if ($pos < $anz)\
   {$pos=$pos+1}\
else\
   {$pos=0};;;;\
my $next_current_favorit=$fav["$pos"];;;;\
my $ncf = urlEncode($next_current_favorit);;;;\
fhem("set Sonos_Buero StartFavourite $ncf")})
attr Buero_Favoriten_V_DOIF do always

und defmod Buero_Favoriten_Z_DOIF DOIF ([Sonos_Buero:"DU"]) \
({my @fav = split(/\|/, \
            "[Sonos_Buero:FavouritesListAlias]");;;;\
my $pos = SONOS_posInList("[currentFavouriteName_Buero]",\
   @fav);;;;\
my $anz=$#fav;;;;\
if ($pos > 0)\
   {$pos=$pos-1}\
else\
   {$pos=$anz};;;;\
my $next_current_favorit=$fav["$pos"];;;;\
my $ncf = urlEncode($next_current_favorit);;;;\
fhem("set Sonos_Buero StartFavourite $ncf")})
attr Buero_Favoriten_Z_DOIF do always


Leider funktioniert dies nur einmal. Im Eventlog wird auch beim 2. mal kein "UD" oder "DU" Ereignis angezeigt.
Sieht jemand den Fehler.

Viele Grüße
Jürgen 
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

math78

Hallo,

kann mir jemand bei folgendem Fehler im Log helfen:
PERL WARNING: Redundant argument in sprintf at ./FHEM/00_SONOS.pm line 574.
2017.09.19 17:12:17 1: stacktrace:
2017.09.19 17:12:17 1:     main::__ANON__                      called by ./FHEM/00_SONOS.pm (574)
2017.09.19 17:12:17 1:     main::SONOS_getTitleRG              called by ./FHEM/00_SONOS.pm (525)
2017.09.19 17:12:17 1:     main::SONOS_getCoverTitleRG         called by (eval 45742) (1)
2017.09.19 17:12:17 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (861)
2017.09.19 17:12:17 1:     main::readingsGroup_2html           called by ./FHEM/33_readingsGroup.pm (1207)
2017.09.19 17:12:17 1:     main::readingsGroup_detailFn        called by ./FHEM/01_FHEMWEB.pm (3078)
2017.09.19 17:12:17 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (1690)
2017.09.19 17:12:17 1:     main::FW_makeDeviceLine             called by ./FHEM/01_FHEMWEB.pm (1852)
2017.09.19 17:12:17 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1065)
2017.09.19 17:12:17 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (548)
2017.09.19 17:12:17 1:     main::FW_Read                       called by fhem.pl (3448)
2017.09.19 17:12:17 1:     main::CallFn                        called by fhem.pl (692)


Kommt dauernd vor.

Vielen Dank.

Matthias

Phiolin

#2999
Zitat von: Reinerlein am 13 September 2017, 12:29:17
Hi Tobias,

aus irgendeinem Grunde scheint die Prozedur nicht mit korrekten Daten beliefert zu werden.

Als erste Maßnahme könntest du nach Zeile 2503 (die mit der Zuweisung an $workType) eine Prüfung einbauen:

return if (!defined($workType));


Aber den Grund, warum da etwas falsch aufgerufen wird, bekommt man damit auch nicht raus...

Grüße
Reiner

Ich hab mal versucht, bei mir dahinter zu kommen.
Daher habe ich in dieser Sub am Anfang die oben vorgeschlagene Prüfung und zusätzlich Log Output eingebaut "Invalid data passed to DoQueue...":

sub SONOS_Discover_DoQueue($) {
        my ($data) = @_;

        my $workType = $data->{WorkType};
        if (!defined($workType)) {
            my $debugParam = join(q{, }, map{qq{$_ => $data{$_}}} keys %data);
                        SONOS_Log undef, 1, "Invalid data passed to DoQueue: $debugParam";
                        return;
       }


Ich habe dann außerdem an der praktisch einzigen Stelle, wo vielleicht was beim enqueue der Tasks schieflaufen könnte, entsprechendes Logging eingebaut. Das scheint meines Erachtens in SONOS_Client_ConsumeMessage zu sein, wo um Zeile 10454 die Message DoWork anhand einer groben Regexp aufgesplittet wird. Hier habe ich entsprechend Log-Output eingebaut, um die Daten auszugeben, die in die Queue geschoben werden:

        } elsif ($msg =~ m/DoWork:(.*?):(.*?):(.*)/i) {
                my %data;
                $data{WorkType} = $2;
                $data{UDN} = $1;

                if (defined($3)) {
                        my @params = split(/--#--/, decode_utf8($3));
                        $data{Params} = \@params;
                } else {
                        my @params = ();
                        $data{Params} = \@params;
                }

                # Auf die Queue legen wenn Thread läuft und Signalhandler aufrufen, wenn er nicht sowieso noch läuft...
                if ($SONOS_Thread != -1) {
                        SONOS_Log undef, 1, "Enqueing work task: msg: $msg";
                        SONOS_Log undef, 1, "Further debug data: worktype: $2";
                        SONOS_Log undef, 1, "Further debug data: UDN: $1";
                        SONOS_Log undef, 1, "Further debug data: params: $3";
                        $SONOS_ComObjectTransportQueue->enqueue(\%data);
                        #threads->object($SONOS_Thread)->kill('HUP') if ($SONOS_ComObjectTransportQueue->pending() == 1);
                }


Anhand der Timestamps im Log kann ich nun zumindest zuordnen, dass es in der Regel die refreshProcessAnswer Requests sind, die irgendwo "verloren" gehen. Hier einige Auszüge:

Hier 3 aufeinanderfolgende refreshProcessAnswer tasks, bei denen der mittlere um 17:46:46 aus unerfindlichen Gründen offenbar "verloren" geht, wie man an der "Invalid data" Fehlermeldung erkennen kann:

2017.09.26 17:46:16 1: SONOS0: Enqueing work task: msg: DoWork:undef:refreshProcessAnswer:
2017.09.26 17:46:16 1: SONOS0: Further debug data: worktype: refreshProcessAnswer
2017.09.26 17:46:16 1: SONOS0: Further debug data: UDN: undef
2017.09.26 17:46:16 1: SONOS0: Further debug data: params:
2017.09.26 17:46:46 1: SONOS0: Enqueing work task: msg: DoWork:undef:refreshProcessAnswer:
2017.09.26 17:46:46 1: SONOS0: Further debug data: worktype: refreshProcessAnswer
2017.09.26 17:46:46 1: SONOS0: Further debug data: UDN: undef
2017.09.26 17:46:46 1: SONOS0: Further debug data: params:
2017.09.26 17:46:46 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 17:47:16 1: SONOS0: Enqueing work task: msg: DoWork:undef:refreshProcessAnswer:
2017.09.26 17:47:16 1: SONOS0: Further debug data: worktype: refreshProcessAnswer
2017.09.26 17:47:16 1: SONOS0: Further debug data: UDN: undef
2017.09.26 17:47:16 1: SONOS0: Further debug data: params:


Hier noch ein Beispiel, wieder ist es vermutlich der refreshProcessAnswer Task, der irgendwie nicht ankommt:

2017.09.26 13:32:09 1: SONOS0: Enqueing work task: msg: DoWork:undef:refreshProcessAnswer:
2017.09.26 13:32:09 1: SONOS0: Further debug data: worktype: refreshProcessAnswer
2017.09.26 13:32:09 1: SONOS0: Further debug data: UDN: undef
2017.09.26 13:32:09 1: SONOS0: Further debug data: params:
2017.09.26 13:32:09 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 13:32:21 3: SONOS4: Transport-Subscription for ZonePlayer "RINCON_949F3E85047601400_MR" has expired and is now renewed.


Das lässt sich so beliebig fortsetzen.
Durchschnittlich wird die sub SONOS_Discover_DoQueue an manchen Tagen bei mir alle paar Minuten aufgerufen, ohne das valide Parameter dabei übergeben werden. Meistens ist dann ein Restart, in der Regel des kompletten FHEM Prozesses, in Kürze unumgänglich.
An anderen Tagen dagegen sehe ich gar keine Probleme. Offenbar dauert es immer erst ein paar Tage, bevor irgendwas das SONOS Modul durcheinanderbringt. Dann ist allerdings meistens auch ein Restart die einzige Lösung.
Hier noch ein grep auf "Invalid data passed to DoQueue" aus meinem Log, nur um zu zeigen, dass es Tage gibt, an denen es absolut gar kein Problem gibt, und dann wieder Tage, wo das stark gehäuft auftritt. Die Tageszeit scheint dabei nur eine untergeordnete Rolle zu spielen. In der Regel sind meine SONOS Boxen eigentlich idle, ich verwende aktuell nur wenige Sprach-Meldungen, hauptsächlich morgens beim Wecken und Abends zum Schlafen gehen. Die Fehler treten aber eher den ganzen Tag über auf, wenn es denn erst mal begonnen hat:

2017.09.20 06:49:45 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 08:02:04 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 08:06:35 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 08:34:42 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 09:12:43 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 09:38:47 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 09:41:47 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 10:50:42 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 10:58:13 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 11:24:43 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 11:44:44 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 11:57:14 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 12:03:44 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 12:12:24 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 12:18:24 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 12:27:24 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 12:43:04 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 12:59:38 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 13:14:37 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 13:19:23 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 13:21:44 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 14:32:16 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 14:38:46 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 15:13:47 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 16:16:49 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 16:31:49 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 17:08:20 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 17:13:50 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 17:50:51 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 18:22:18 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 18:52:48 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 19:03:49 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 19:46:50 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 20:12:20 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 20:14:20 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 20:35:51 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 20:38:21 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 21:00:52 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 21:18:22 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 21:23:22 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 21:23:52 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 21:43:14 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 22:09:45 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 22:14:15 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 22:52:45 1: SONOS4: Invalid data passed to DoQueue:
2017.09.20 23:24:49 1: SONOS1: Invalid data passed to DoQueue:
2017.09.20 23:37:19 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 00:11:50 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 01:02:51 1: SONOS4: Invalid data passed to DoQueue:
2017.09.21 01:37:52 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 02:02:53 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 02:39:54 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 02:45:54 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 02:56:54 1: SONOS4: Invalid data passed to DoQueue:
2017.09.21 03:06:24 1: SONOS4: Invalid data passed to DoQueue:
2017.09.21 03:46:26 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 03:51:26 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 04:41:27 1: SONOS4: Invalid data passed to DoQueue:
2017.09.21 06:11:51 1: SONOS1: Invalid data passed to DoQueue:
2017.09.21 06:28:25 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 07:08:46 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 07:14:11 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 07:24:10 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 07:36:45 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 07:44:33 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 08:12:38 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 08:37:29 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 08:43:24 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 09:13:32 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 09:21:32 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 09:35:02 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 09:40:33 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 09:47:03 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 10:34:34 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 10:44:34 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 10:49:34 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 10:59:35 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 11:11:05 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 11:45:36 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 12:21:37 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 12:32:07 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 12:36:07 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 13:32:09 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 13:42:09 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 14:12:40 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 14:13:10 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 14:23:40 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 14:48:11 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 15:10:42 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 15:29:12 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 16:07:14 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 16:11:14 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 16:15:14 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 16:24:44 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 16:25:14 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 16:36:14 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 16:50:15 1: SONOS1: Invalid data passed to DoQueue:
2017.09.26 17:34:46 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 17:37:16 1: SONOS4: Invalid data passed to DoQueue:
2017.09.26 17:46:46 1: SONOS1: Invalid data passed to DoQueue:


Ebenfalls habe ich übrigens das Problem, dass auch in anderen SONOS Threads schon mal erwähnt wurde, dass SONOS Speak Meldungen entweder teilweise unvollständig abgespielt werden oder direkt 2 mal hintereinander, und das völlig ohne ersichtlichen Grund.
Wie bei den verloren Daten erweckt das manchmal das Gefühl, als würden hier mehrere Threads gleichzeitig arbeiten und sich gegenseitig in die Quere kommen. Es läuft aber definitiv nur 1 SONOS Prozess auf meinem System - was aber natürlich nicht ausschließt, dass der vielleicht im Hintergrund doch einen Thread zuviel erstellt hat und die beiden sich gegenseitig um die Daten aus der Queue kloppen? :)