Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Phiolin,

danke für diese Untersuchung. Das Verhalten bleibt echt komisch.

Ich habe jetzt mal das Herausholen aus der Queue verändert. Vorher habe ich nur den obersten Wert ermittelt, dann verarbeitet, und dann erst von der Queue genommen.
Jetzt hole ich gleich den obersten Wert konsumierend aus der Queue, und verarbeite ihn. Damit können keine Reste übrigbleben, die vor allem auch gar nicht von irgendeinem anderen Thread fehlerhaft verschlungen werden können...

Ich prüfe das mal bei mir, und checke es dann ein... mal schauen, ob es dann schon etwas besser wird...

Grüße
Reiner

Reinerlein

Hi Phiolin,

soo, habe jetzt eine Version eingecheckt, die die Schlange anders verarbeitet... prüf doch bitte mal, ob es so besser geht.

Außerdem habe ich das sprintf umgebaut. @Matthias, kannst du mal schauen, ob die Meldungen dazu immer noch kommen?

Danke schon mal...

Grüße
Reinerlein

Phiolin

Ok, Update durchgeführt. Dann schauen wir mal. :)

Tobias

HI,
hab seit langem mal wieder ein UPdate gemacht und die Sonsos Module aktualisiert.
Diese Meldungen habe ich manchmal im Log nach einem Restart, sind die bekannt?
Use of uninitialized value $value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 10214, <$client> line 4.
Use of uninitialized value $value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 10218, <$client> line 4.
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

Ho Tobias,

noch nicht so direkt :). Ich habe jetzt eine entsprechende Prüfung eingebaut...

Grüße
Reiner

math78

Hallo Reiner,

die Fehlermeldung "PERL WARNING: Redundant argument in sprintf at ./FHEM/00_SONOS.pm line 574" ist verschwunden.

Dafür habe ich auch wie Tobias die neue Fehlermeldung "Use of uninitialized value $value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 10214, <$client> line 8".

Hast du da schon eine Idee?

LG
Matthias

Reinerlein

Hi Matthias,

wie geschrieben, habe ich da eine Prüfung eingebaut. Warum das überhaupt passiert, kann man damit leider nicht direkt herausfinden...

Soll ich das einchecken? Lohnt sich ja irgendwie gar nicht :)
Geht denn deswegen irgendwas nicht? Tobias schrieb dazu ja nichts...

Grüße
Reiner

math78

Hallo,

Funktionseinschränkungen habe ich zur Zeit keine, nur eben die Fehlermeldungen im Log. Vorwiegend nach dem Restart, manchmal auch zwischendurch.

LG
Matthias

demaya

Hallo,

ich habe bemerkt, dass ein "." im Devicename zu folgender Fehlermeldung in der Raumübersicht oder auch in den Details zu einem Gerät führt:
line 1:
Uncaught SyntaxError: Unexpected token .


Die Browser-Console führt mich dann zu der Zeile, die die ganze Darstellung des "Players" von Sonos übernimmt. Nach Umbenennen bzw. Entfernen des "." funktioniert alles einwandfrei. Meine Konvention sieht so aus, dass ich Punkte verwende. Aber vielleicht hat ja Jemand künftig auch das Problem und man könnte es generell fixen?

Kann gerne als Versuchskaninchen herhalten :)

Danke + Gruß
demaya von demaya.de

FunkOdyssey

Ich bin über etwas merkwürdiges gestolpert und das hat mich ein paar Tage beschäftigt. Bei mir laufen zwei Play1.

Wenn ich in der Sonos-App innerhalb einer Playlist (Charts oder ähnliches) ein Song abspielen möchte, dann habe ich nur selten Glück, dass das gewünschte Lied abgespielt wird. Zu 99% springt die App immer zwischen den Tracks hin und her. Mit viel Glück höre ich ein paar Sekunden vom gewünschten Titel und dann wird wieder zurück zum ersten/vorherigen Titel gesprungen. Kein Muster erkennbar. Und es war auch egal, ob lokale Musik, AmazonMusic oder Spotify.

Ich habe die Gruppierung, WLAN-Probleme usw. relativ schnell ausschließen können. Dann musste ich halt den Sonos-Support einschalten und Diagnoseinformationen zusenden. Relativ schnell erhielt ich die Info, dass sich ein Raspberry bei mir im Netz befindet, der alle paar Sekunden einen Suchbefehl sendet.

Zu diesem Zeitpunkt hatte ich folgende Default-Konfiguration:
define Sonos SONOS localhost:4711 60 10 10

Attributes:
   bookmarkPlaylistDefinition SonosGruppe:(Sonos_Wohnzimmer|Sonos_Kueche)
   bookmarkSaveDir /opt/fhem/SonosBookmarks
   bookmarkTitleDefinition SonosGruppe:(Sonos_Wohnzimmer|Sonos_Kueche)
   deviceRoomView Both
   generateProxyAlbumArtURLs 1
   getListsDirectlyToReadings 1
   reusePort  1
   verbose    1


In dem Augenblick, in dem ich das SONOS-Device deaktiviert habe, waren auch alle meine Probleme mit der Wiedergabe verschwunden.




Ein Wechsel der Intervalle auf folgendes Define hat leider auch nicht geholfen:

define Sonos SONOS localhost:4711 60 10 10




Ursprünglich wollte ich (siehe: Zustand der Sonosplayer vor Ausschaltung einfrieren und wiederherstellen) die Sonos-Geräte ausschalten, wenn niemand mehr im Hause ist. Dieses Feature habe ich während der Fehlersuche bereits ausgeschaltet. Aber dennoch habe ich das Gefühl, dass der Fehler durch einmaliges Ausschalten provoziert werden kann.

- Ich schalte die Player aus
- Das SONOS-Device verbleibt aktiv in FHEM mitsamt der Child-Prozesse. (Ich ändere nichts an der FHEM-Konfiguration. Kein disable.)
- Ich schalte die Player irgendwann wieder ein
- und dann habe ich das Problem mit dem "Track-Skipping"




Kennt jemand dieses Problem?

Reinerlein

Hi FunkOdyssey,

da wirst du immer noch irgendwo einen DoIf oder Notify haben, der auf deine gewünschte Trackänderung mit einem Wiederherstellen des Ursprungszustands reagiert.

Ab einer gewissen Komplexität in der Landschaft sind Seiteneffekte nur schwer zu finden, und noch schwerer im Vorfeld erkennbar. Aber es ist unvermeidbar, dass man sich bei jedem DoIf oder Notify genau überlegen muss, auf welche Situationen es wirklich zutrifft. Meistens ist diese Treffermenge mehr oder weniger deutlich größer als das eigentlich gewünschte Ziel und kann sich im Zusammenspiel dann auch noch gegenseitig Aufrufen...

Grüße
Reiner

FunkOdyssey

Ich kann das nachvollziehen, dass dies vermutet wird, aber ich kann garantieren, dass kein DOIF oder ähnliches die Sonos-Geräte anpackt.
Mal schauen, ob ich den Fehler weiter eingrenzen kann und auch die Log-Stufe erhöhen kann.
Erst einmal werde ich die Bookmark-Attribute wieder entfernen und die Intervalle hochdrehen.

Reinerlein

Hallo demaya,

ich habe das Problem zu dem Punkt-im-Devicenamen-Problem gelöst. Ist beim nächsten Einchecken dabei.
Ich habe aber noch ein anderes Problem in der Mache, sodass ich das jetzt gerade nicht einchecken kann...

Grüße
Reinerlein

Fixel2012

Hi Reiner,

habe in meinem Log das erste Mal dieses Perl Warning gefunden. Durch was es verursacht wird, weiß ich nicht.
Vielleicht kannst du damit was anfangen?  :)

2017.10.11 17:57:26 1: PERL WARNING: Argument "" isn't numeric in numeric ne (!=) at ./FHEM/00_SONOS.pm line 1550.
2017.10.11 17:57:26 1: stacktrace:
2017.10.11 17:57:26 1:     main::__ANON__                      called by ./FHEM/00_SONOS.pm (1550)
2017.10.11 17:57:26 1:     main::SONOS_Read                    called by fhem.pl (3448)
2017.10.11 17:57:26 1:     main::CallFn                        called by fhem.pl (692)


Gruß,

Fixel
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Reinerlein

Hi Fixel,

welche Version hast du denn laufen. In der aktuellen Version gibt es in der Zeile 1550 keinen numerischen Vergleich (sondern einen Stringvergleich).

Sonst poste mal ein paar Zeilen drumherum mit, dann finde ich die Stelle bestimmt auch so...

Grüße
Reiner