SONOS: Neue Version vom 15.4.2018

Begonnen von Reinerlein, 15 April 2018, 12:26:43

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo,

hier mal ein kleines Release...

Folgendes ist enthalten:

  • Streams über Alexa (z.B. Sonos One) werden nun korrekt als Radiostreams dargestellt
  • Es werden nun auch Updateinformationen und die interne Softwareversionsnummer gesucht und als Reading gesetzt: "softwareRevisionAvailable", "softwareRevisionInternal" und "softwareRevisionInternalAvailable"
Wie immer ab sofort im Subversion oder ab Morgen per update...

Grüße
Reinerlein

Jamo

Hallo Reiner,
ich bekomme seit neuestem (Umzug von Raspberry B/Jessie -> Raspberry B+/Stretch) jetzt oft folgende Fehlermeldungen nach dem Einschalten der Sonosplayer Schaltsteckdosen und enablen des Sonos devices.
Das hängt nicht mit der version vom 15.4 zusammen, das kam in der vorherigen version vor dem 15.4 auch schon.
Ist das kritisch? 
2018.04.16 20:43:16 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_getSonosPlayerByUDN" at ./FHEM/00_SONOS.pm line 9815.
2018.04.16 20:43:16 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_Log" at ./FHEM/00_SONOS.pm line 9566.

Ich habe dazu schon im Forum gesucht, das ist schon öfter aufgetreten, aber ich habe keine Lösung gefunden.
Ist ja auch nur eine Warnung.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Reinerlein

Hi inoma,

hmm... diese Meldung kommt, weil er folgendes loggen möchte:

"The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '".(defined($udn) ? $udn : 'undef')."'. This should not happen!";


Wie dort steht, sollte dieser Fall eigentlich gar nicht eintreten :)
Gut, das er ihn auch nicht loggen kann, weil er genau an derselben Stelle wieder ankommen wird, und damit die Endlos-Rekursion erzeugt, die Perl da verhindert, ist auch ein Problem :)
Das schaue ich mir mal an...

Dein eigentliches Problem ist aber ein anderes: Er versucht einen Logeintrag zu einer Player-UDN zu erzeugen, die in Fhem nicht gefunden werden konnte. Leider konnte er die UDN ja nicht loggen...
Das sollte wirklich nicht auftreten, da alle Sonos-Devices immer als Fhem-Devices erzeugt werden sollten...
Gibt es im Log eine Fehlermeldung, dass so etwas mal schiefgegangen ist?

Grüße
Reinerlein

Jamo

#3
Hallo Reiner,
danke für die schnelle Antwort. Ich habe den loglevel leider auf 0, und kann eine 'Fehlermeldung, dass so etwas mal schiefgegangen ist' nicht finden.
Ich mache den Loglevel aber jetzt mal hoch, und schicke Dir den log sobald das nochmal auftritt.
Das einzige was mir einfällt ist das ich einen Sonos Play:1 im Wohnzimmer habe, den ich nicht immer einschalte.
Ansonsten habe ich zusätzlich 2 Sonos Play:1 Stereo Pärchen (also insgesamt 4), und 2 einzelne Sonos Play:1 als Mono Lautsprecher, die ich alle über Schaltsteckdosen einschalte, aber alles ist in FHEM definiert.

Beste Grüsse!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Reinerlein

Hi inoma,

damit diese Meldung weg ist, und das Logging klappt, musst du die Zeile 9566 anpassen:

SONOS_Log undef, 0, "The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '".(defined($udn) ? $udn : 'undef')."'. This should not happen!";
also als ersten Parameter ein "undef" übergeben...

Dann sehen wir später vielleicht auch mehr im Log :)

Grüße
Reinerlein

Jamo

Hallo Reiner,
der Fehler ist noch nicht wieder aufgetreten, ich habe aber den Loglvel auf 4 gestellt und melde mch wieder sobald der Fehler wieder auftritt. Danke!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

So, jetzt aber:
ONOS0: The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '_MR'. This should not happen!
2018.04.19 00:09:00 3: SonosRG: <{getGroupsRG()}@ZoneGroupState>: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 2117.

2018.04.19 00:09:01 0: SONOS0: The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '_MR'. This should not happen!
2018.04.19 00:09:01 3: SonosRG: <{getGroupsRG()}@ZoneGroupState>: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 2117.

2018.04.19 00:09:01 0: SONOS0: The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '_MR'. This should not happen!
2018.04.19 00:09:01 3: SonosRG: <{getGroupsRG()}@ZoneGroupState>: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 2117.

2018.04.19 00:09:02 0: SONOS0: The Method 'SONOS_getSonosPlayerByUDN' cannot find the FHEM-Device according to '_MR'. This should not happen!
2018.04.19 00:09:02 3: SonosRG: <{getGroupsRG()}@ZoneGroupState>: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 2117.

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Reinerlein

Hi inoma,

kannst du mal bitte den Inhalt des Readings "ZoneGroupState" deines Sonos-Devices hier posten?
Irgendwas ist dort drin anders, als der reguläre Ausdruck es erwartet :)

Danke schon mal...

Grüße
Reiner

Jamo

#8
So schauts aus, aber das wird ja immer neu erzeugt, Du brauchst das ja eigentlich in dem Moment wo der Fehler auftritt, oder?

<ZoneGroups><ZoneGroup Coordinator="RINCON_5CAAFD22856E01400" ID="RINCON_5CAAFD22856E01400:186"><ZoneGroupMember UUID="RINCON_B8E9378ED7EC01400" Location="http://172.21.0.11:1400/xml/device_description.xml" ZoneName="Kueche" Icon="x-rincon-roomicon:living" Configuration="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" ChannelMapSet="RINCON_B8E9378ED7EC01400:LF,LF;RINCON_B8E9378B0AA601400:RF,RF" BootSeq="2218" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="1" SecureRegState="2" VoiceState="0"/><ZoneGroupMember UUID="RINCON_B8E937B0815001400" Location="http://172.21.0.13:1400/xml/device_description.xml" ZoneName="Bad" Icon="x-rincon-roomicon:living" Configuration="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" BootSeq="3110" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="1" SecureRegState="2" VoiceState="0"/><ZoneGroupMember UUID="RINCON_949F3E0498E401400" Location="http://172.21.0.43:1400/xml/device_description.xml" ZoneName="Flur" Icon="x-rincon-roomicon:tvroom" Configuration="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" BootSeq="1766" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="1" SecureRegState="2" VoiceState="0"/><ZoneGroupMember UUID="RINCON_B8E9378B0AA601400" Location="http://172.21.0.12:1400/xml/device_description.xml" ZoneName="Kueche" Icon="x-rincon-roomicon:living" Configuration="1" Invisible="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" ChannelMapSet="RINCON_B8E9378ED7EC01400:LF,LF;RINCON_B8E9378B0AA601400:RF,RF" BootSeq="1829" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="5" SecureRegState="2" VoiceState="0"/><ZoneGroupMember UUID="RINCON_5CAAFD22856E01400" Location="http://172.21.0.41:1400/xml/device_description.xml" ZoneName="Schlaf" Icon="x-rincon-roomicon:masterbedroom" Configuration="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" ChannelMapSet="RINCON_5CAAFD22856E01400:LF,LF;RINCON_5CAAFD228CD401400:RF,RF" BootSeq="3082" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="1" SecureRegState="2" VoiceState="0"/><ZoneGroupMember UUID="RINCON_5CAAFD228CD401400" Location="http://172.21.0.42:1400/xml/device_description.xml" ZoneName="Schlaf" Icon="x-rincon-roomicon:masterbedroom" Configuration="1" Invisible="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" ChannelMapSet="RINCON_5CAAFD22856E01400:LF,LF;RINCON_5CAAFD228CD401400:RF,RF" BootSeq="3097" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="0" RoomCalibrationState="5" SecureRegState="2" VoiceState="0"/></ZoneGroup><ZoneGroup Coordinator="RINCON_B8E93702F1C401400" ID="RINCON_B8E93702F1C401400:3716882973"><ZoneGroupMember UUID="RINCON_B8E93702F1C401400" Location="http://172.21.0.10:1400/xml/device_description.xml" ZoneName="BOOST" Icon="x-rincon-roomicon:viper" Configuration="1" Invisible="1" IsZoneBridge="1" SoftwareVersion="42.2-51240" MinCompatibleVersion="41.0-00000" LegacyCompatibleVersion="36.0-00000" BootSeq="3048" TVConfigurationError="0" WirelessMode="0" WirelessLeafOnly="0" HasConfiguredSSID="0" ChannelFreq="2462" BehindWifiExtender="0" WifiEnabled="1" Orientation="-1" RoomCalibrationState="0" SecureRegState="2" VoiceState="0"/></ZoneGroup></ZoneGroups>

Danke!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Reinerlein

Hallo inoma,

uch vermute deinen Boost als Problem.

Kannst du mal die folgenden Zeilen:

# Etwaig von vorher enthaltene Bridges wieder entfernen (wenn sie bereits als Koordinator eingesetzt wurde)
if ($string =~ m/IsZoneBridge="."/) {
for(my $i = 0; $i <= $#group; $i++) {
delete $group[$i] if ($group[$i] eq $udn.'_MR');
}
}


etwas vor der Fehlermeldungszeile, durch folgende ersetzen:


# Etwaig von vorher enthaltene Bridges wieder entfernen (wenn sie bereits als Koordinator eingesetzt wurde)
if ($string =~ m/IsZoneBridge="."/) {
@groups = grep { $_ ne $udn.'_MR' } @groups;
}
Also nur der Part innerhalb des IF-Statements, die Schleife fällt weg...

Da bin ich wohl in die Array-Löschfalle von Perl getappt. Er löscht das Element ja nicht, sondern macht es nur leer. Und damit bekommt man in Folge natürlich auch ein leeres Element in der Sonosplayer-Suche...

Grüße
Reiner

Jamo

#10
Hallo Reiner,
danke danke, alles eingebaut, siehe 'diff'. Bis jetzt läufts einwandfrei. Ich melde mich, falls der Fehler trotzdem nochmal auftreten sollte, aber ich glaube Du hast wahrscheinlich die Ursache schon gefunden.
pi@jessie:/opt/fhem/FHEM $ diff 00_SONOS.pm 00_SONOS.pm.orig
2108c2108,2110
<                                 @groups = grep { $_ ne $udn.'_MR' } @groups;
---
>                               for(my $i = 0; $i <= $#group; $i++) {
>                                       delete $group[$i] if ($group[$i] eq $udn.'_MR');
>                               }
pi@jessie:/opt/fhem/FHEM $


Was mir aber aufgefallen ist, der Boost bekommt jetzt seine eigene Gruppe, siehe angehängtes Bild.
Stört mich nicht weiter, auch in der Sonos App taucht die Bridge nicht als einzelne Gruppe auf.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Reinerlein

H inoma,

ja, klassischer Fall von zu schnell was gemacht :)

Es muss natürlich das Array "group" (ohne "s") gefiltert werden.
Du müsstest in dem Code also die beiden Variablen noch kurz anpassen.

Sorry dafür...

Grüße
Reiner

Jamo

Hallo Reiner,
danke für den tollen Support, ich habs geändert, und jetzt sehe ich wieder nur noch eine Gruppe.
Ich melde mich falls der ursprünglich Fehler nochmal auftreten sollte. Falls nicht, sage ich in einer Woche nochmal Bescheid, dass alles OK ist.
Schönes Wochenende!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

#13
Hallo Reiner,
könntest Du nochmal helfen? Ich bekomme jetzt für die geänderte Zeile '@group = map { SONOS_getSonosPlayerByUDN($_)->{NAME} } @group;' ab- und zu  folgende Fehlermeldung:
SonosRG: <{getGroupsRG()}@ZoneGroupState>: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 2115.

Es funktioniert aber sonst alles.

PS: Ist jetzt die letzten 3 Tage auch nicht wieder aufgetreten, vielleicht beobachte ich nochmal weiter.
Danke und beste Grüsse!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack