Sonos steuern

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

Vorheriges Thema - Nächstes Thema

eburkon

Servus Reinerlein,

ich kann leider noch nicht testen aber zuerst ein paar Erklärungen zu meinem Setup.

Ich habe ein Connect (Diele) dass mit dem LAN verbunden ist und ein Play3 dass per Wifi angebunden
ist. Kein Stereo-Verbund nichts spezielles.

Zum Zeitpunkt des Tests lief auf dem Play3 ein italienischer Radiosender (RTL.it), der immer so
seltsame Tags mitliefert. Das wird z.B. auch im Controller falsch angezeigt.

Die Tests habe ich eigentlich mit dem Connect gemacht. Dort lief zu dem Zeitpunkt eine ganz simple
Playlist mit Titeln von meinem NAS.

Test folgt heute Abend.

Danke für die Mühe.
    Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

krikan

Hallo Reiner,

habe jetzt ca. 2 Stunden Dein Sonos-Modul unter Windows getestet (eher gequält) -> sieht super aus; es läuft und es gab keinen Absturz

Einzige Merkwüdigkeit, die ich hatte:

Play:5 vom Netz genommen und dann auf Play im Webfrontend gedrückt. Ergebnis:

2013.02.14 18:44:42 5: Cmd: >set Sonos_Kueche Play<
2013.02.14 18:44:42 5: Triggering Sonos_Kueche (1 changes)
2013.02.14 18:44:42 5: Notify loop for Sonos_Kueche lastSetActionName: Play
2013.02.14 18:44:43 3: SONOS1: ProxyObject exists: UPnP::ControlPoint::ControlProxy=HASH(0x6f09450)
2013.02.14 18:45:04 2: SONOS1: DeleteProxyObjects for 'K?che'
2013.02.14 18:45:04 5: Triggering Sonos_Kueche (1 changes)
2013.02.14 18:45:04 5: Notify loop for Sonos_Kueche lastSetActionResult: Exception ERROR: 500 Can't connect to 192.168.178.27:1400 (10060) at FHEM/lib/UPnP/ControlPoint.pm line 785 thread 1.
2013.02.14 18:45:04 4: /fhem?cmd.Sonos_Kueche=set%20Sonos_Kueche%20Play&room=Sonos / RL: 2077 / text/html; charset=UTF-8 /  /


Bei nächsten Aufruf einer Funktion im Webfrontend kam das Übliche:
ERROR: SonosPlayer disappeared
Danach lief es problemlos weiter.

Werde mal weiter testen; komme nur leider wahrscheinlich in den nächsten Tagen nicht viel dazu.

Danke und Gruß, Christian

Reinerlein

Hi Christian,

das sieht doch super aus.

Die Fehlermeldungen sind genau die richtigen. In dem Augenblick, wo du auf den Knopf drückst, und festgestellt wird, das der Player verschwunden ist, werden die alten Verbindungsinformationen gelöscht (DeleteProxyObjects) und eine Fehlermeldung an den Aufrufer zurückgegeben, die dann im Log landet (deswegen danach erst der Exception Log bei lastSetActionResult).

Beim nächsten Mal sind die ProxyObjects dann eben genau nicht mehr da, und es wird gar nicht mehr versucht eine Verbindung aufzubauen...

Schön.. dann brauchen wir im Augenblick erstmal nur das Problem von Ekkehard lösen...

Grüße Reiner

Reinerlein

Hi Christian,

was beim Verschwinden von Playern aber sein sollte, ist das dieses Löschen auch automatisch nach dem eingestellten IsAlive-Interval (also Standardmäßig 10 Sekunden) erfolgen sollte. Danach sollte sowieso nur noch die "disappeared"-Meldung kommen...

Grüße Reiner

eburkon

Servus Reiner,

ich hab jetzt mit der von Dir zur Verfügung gestellten Version nochmal den Test gemacht.
Log im Anhang.
Hoffe das hilft weiter.

Gruss
   Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

Reinerlein

Hi Ekkehard,

hmm.. leider ist nix im Log drin, was darauf hindeuten würde, was da wirklich passiert.

Kannst du mal das Feature mit der minimalen (oder auch maximalen) Lautstärke aktivieren?
Einfach das Attribut maxVolume auf 100 an dem entsprechenden PlayerDevice setzen. Damit hast du keine Einschränkung, aber die Infos werden geliefert (sollte zumindest so sein)...
Dann liefert uns der Player wenigstens Information zu seiner Lautstärke und den anderen Abspielwerten (wenn das Feature aktivierbar ist)...

Grüße Reiner

Reinerlein

Hallo zusammen,

ich habe mal ein paar Fehlerausgabemöglichkeiten eingebaut. Leider kann ich das Problem von Ekkehard bei mir nicht nachstellen, weswegen ich dort ein wenig stochern muss...

In der neuen Version sind Hauptsächlich Debug-Fehler-Ausgaben hinzugekommen.

Aber zwei Kleinigkeiten sind auch drin:
- Wenn ein Musikstück kein Cover hat, dann wird nun das FHEM-Logo verwendet :-)
- Wenn man RTL.it hört, dann werden die Informationen nun korrekt zurechtgeschnippelt

Wie immer als Komplettpaket, obwohl wie immer nur die beiden FHEM-Perl-Module angefasst wurden...

Grüße Reiner

Reinerlein

Hallo zusammen,

solange keine Reaktion... da muss entweder was fehlerhaft sein, oder alles funktionieren...
Und siehe da, ich habe noch einen Tippfehler mit großer Wirkung entdeckt. Nach dem Abspielen einer Sprachdurchsage wird der Wert von "CurrentTempPlaying" nicht zurückgesetzt.
Das hat zur Folge, dass man nur eine Durchsage machen kann, und alle folgenden (bis zum nächsten Neustart von FHEM) mit einer Fehlermeldung verweigert werden...

Im Anhang nun eine um diesen Fehler korrigierte Version.

Desweiteren habe ich den Wert von state umgeschrieben. Dort werden jetzt nur noch Anführungsstriche ersetzt, da die für die Probleme bei der Anzeige verantwortlich waren. Also werden jetzt alle Umlaute und sonstige Sonderzeichen im STATE ordnungsgemäß abgelegt.

Grüße Reiner

krikan

Hallo Reiner,

Folgendes ist bei mir unter Windows aufgefallen:

Sporadisch stürzt FHEM mit folgender Fehlermeldung ab:

Use of uninitialized value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 988.
Select error -1 (10038)


Leider kann ich noch nichts genaueres liefern, da ich derzeit wenig Zeit habe. Ich bin mir auch nicht sicher, ob obige 1. Zeile immer im Zusammenhang mit der 2. Zeile auftaucht. Sorry.


Gruß, Christian

Reinerlein

Hi Christian,

ok, das kommt von meiner Zusatz-Fehler-Ausgabe-Ecke. Das müsste als Reaktion auf eine Play/Pause usw. Anforderung gekommen sein...
Eigentlich müsstest du als Ergebnis dieser Aktion eine Meldung mit dem Anfang "Error! UPnP-Fault-Fields:" gehabt haben. Eines der Felder dieser Fehlerausgabe war halt nicht gefüllt. Interessant wäre aber, ob die anderen was enthielten, sprich wie die Meldung komplett aussah...

Kannst du mir diese Info noch zukommen lassen?
Danke schon mal dafür...

Grüße Reiner

krikan

Hallo Reiner,

klar kannst Du die FHEM-Logs haben ;-). Es betrifft reproduzierbar das Dock (fhem.zip), in dem kein ipod steckt. Einmal hatte ich das auch bei einem S5. Das FHEM-Log (S5.zip) habe ich Dir auch mal beigefügt, obwohl ich es nicht reproduzieren kann.

Einen Zusammenhang mit der select-Fehlermeldung scheint es aber nicht zu geben. Absturz von fhem nur bei select-Fehler; der Fehler "Error! UPnP-Fault-Fields:" tritt häufiger auf und es läuft anscheind weiter.

Hoffe es hilft Dir ein wenig. Ansonsten melde Dich bitte.

Danke und Gruß, Christian

Reinerlein

Hi Christian,

hmmm... das mit den Select-Fehlern kann ich nicht wirklich nachvollziehen. Könnte aber ein Problem mit Windows und den Threads sein... Ich werde da nochmal was umstricken, da ich glaube, dass ich da noch eine Beendigung drin habe (die sorgen ja immer für die Probleme). An der Stelle, wenn ein SonosPlayer verschwindet, beende ich noch den Thread und lasse ihn neustarten...

Aber das mit den anderen Meldungen erscheint mir eher normal:
Wenn in dem Dock kein Gerät steckt, kann man auch nix steuern, das Gerät ist aber natürlich trotzdem da, und muss bei Bedarf sofort steuerbar sein... das erscheint mir erstmal normal... oder wie siehst du das? Wie läuft das denn bei dem Original-Sonos-Controller?
Da werden vermutlich die Buttons ausgeblendet sein. Das könnte ich auch abfragen, würde aber ja nix ändern, da das ja nur Kosmetik auf der Oberfläche wäre, und FHEM als Haussteuerung eher ohne Oberfläche im Hintergrund läuft...
Ich denke mit der jetzigen Art und Weise (natürlich mit ausgebauten "use of unitialized value"-Meldungen) läuft das einigermaßen gut...

Ich baue da mal an den Threads rum, und melde mich dann wieder...

Grüße Reiner

krikan

Hallo Reiner,

das mit den select-Abstürzen ist leider ein wenig nervig. Das Poblem existiert bei mir auch erst bei den neueren Versionen der Module. Es wäre prima, wenn Du auch dafür wie immer eine Lösung hättest.

Zum Dock: Für mich -bin anscheinend der einzige Dock-Besitzer- reicht der derzeitige Zustand vollkommen. Hauptsache die Abstürze, die es in den ersten Versionen durch das Dock noch gab, sind wie aktuell weg. Im Controller taucht das bestückte Dock übrigens bei den Musikquellen und nicht bei den Räumen auf.

Nochmals ein großes Dankeschön für Deine Sonos-Module.

Gruß, Christian

Reinerlein

Hi Christian,

treten denn diese Fälle überhaupt beim ab- bzw. anschalten von Playern auf?
Ich habe die Thread-Beendigung in diesen Fällen jetzt raus, und teste das gerade bei mir...

Desweiteren habe ich noch eine Steuerungs- und Abfragemöglichkeit eingebaut: Balance.
Man kann dort jetzt einen Wert zwischen -100 (ganz links) bis 100 (ganz rechts) angeben und auch abfragen. Desweiteren wird dieser Wert automatisch aktualisiert, wenn man die Lautstärkegrenzen aktiviert hat...

Außerdem habe ich noch etwas an der allgemeinen Perfomance gearbeitet, da ich ja sowieso ein bißchen was umbauen musste, um die Thread-Beendigung herauszubekommen.
Desweiteren habe ich noch Unstimmigkeiten beim Wiedererkennen von Playern gefunden, bzw. des Events (presence=appeared) dazu. Diese habe ich vom Konzept her etwas umgebaut, damit das besser und ohne Blockaden funktioniert...
Auch das Verschwinden eines Players wird nun sauber mittels eines Events (presence=disappeared) gemeldet, und alles ordentlich aufgeräumt...

Viel passiert also, und es sieht soweit erstmal gut aus, und ist wie beschrieben in meiner Umgebung im Test. Wahscheinlich heute Abend oder Morgen gibt es das dann wieder hier...

Grüße Reinerlein

P.S.: Sorry, wenn da immer noch soviel rumgebaut wird, aber ich habe das Gefühl, dass der Code mittlerweile sauberer konzeptioniert ist und immer stabiler läuft (von Ausnahmen mal abgesehen :-).

krikan

Hallo Reiner,

das Select-Problem tritt vollkommen unregelmäßig auf; scheint nicht vom An- und ausschalten abhängig zu sein. Da Du ja schon wieder sehr fleißig warst, würde ich Deine neue Version (nach Veröffentlichung) einfach mal testen. Dann brauchst Du Dich nicht noch mit altem Kram beschäftigen.

Es ist vollkommen OK, dass Du so viel umbaust. Keine Entschuldigung notwendig. Ist super, das Du Sonos einbindest!

Immer her mit neuen Versionen....

Gruß, Christian