Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Christoph,

automatisch erstellte Konfigurationen werden bei FHEM immer erstmal nur im Speicher gehalten, und können mittels "save" in einer Config-Datei festgeschrieben werden.

Das mit den Problemen beim Speichern der fhem.cfg (und dem automatischen Neustart dabei) ist leider normal. Die Threads sind nicht wirklich gut umgesetzt, sodass es dabei zu problemen kommen kann.

Allgemein gibt es wohl einige Module, wo es zu komischen Verhaltensweisen kommen kann, wenn man nur ein "rereadcfg" macht (das ist das was gemacht wird, wenn man direkt die fhem.cfg editiert und speichert).
Leider gehört Sonos mit seinen Threads auch dazu :-(

Zu dem Abspielen:
Ich könnte einen zusätzlichen Befehl einbauen, der beides in einem Schritt durchführt, wenn es dafür eine Mehrheit gibt. Ich persönlich benötige das nicht, da man ja immer mehrere Befehle hintereinander programmieren kann:
define test notify Taster:on set Sonos_Wohnzimmer LoadRadio MeinSender ; set Sonos_Wohnzimmer Play

Grüße Reinerlein

Reinerlein

Hallo zusamen,

kurze Zwischennachricht, damit es hier nicht so ruhig wird :-)

Ich habe ein neues Feature (neben den bekannten Bugfixes) eingebaut, und gerade im Produktivtest bei mir laufen.
Dieses ist auch schon im Wiki beschrieben.

Man kann jetzt eine untere und/oder obere Grenze für die mögliche Lautstärke eines Players definieren. Dabei wird ein weiterer Listener aktiviert, der Änderungen an der Lautstärke mitbekommt, und bei über- oder unterschreiten der jeweiligen Schwelle die Lautstärke auf den gültigen Wert zurücksetzt.
Endlich kann man seinem Sohn/seiner Tochter eine maximale Lautstärke für den eigenen Player festlegen, und muss sich nicht mehr aufregen :-)

Desweiteren habe ich die Erkennungsstruktur umgebaut. Im Prinzip sollte der Dock also nun auch ordentlich erkannt werden. Das muss aber natürlich erst getestet werden, da ich ja keinen hier habe...
So wie ich das herausgelesen habe, kann man am Dock aber keine Lautstärke einstellen. Dort funktionieren dann diese Grenzen natürlich nicht...

Wenn alles gut geht, heute Abend oder Morgen dann das Update...

Grüße Reinerlein

eburkon

Servus miteinander,

ich habe bei mir das Modul jetzt auch soweit auch am Laufen. Danke erst mal.
Meine beiden Sonos ( Connect + Play3 ) werden korrekt angezeigt und zeigen
auch den jeweils gespielten Titel an incl. AlbumArt an.

Was noch nicht klappt ist das steuern. Also z.B. "Mute" produziert im Webfrontend
immer die Anzeige "Error" passieren tut nichts.

Muss ich da noch etwas konfigurieren?

Danke & Gruss
   Ekkehard

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

Reinerlein

Hallo Ekkehard,

eigentlich muss da nix weiter konfiguriert werden...

Edit:
War "Mute" ein Tippfehler, oder nur nicht vollständig wiedergegeben? Es gibt
MuteTohne Parameter: Wechselt den Mute-Zustand

und
Mute on
Mute off
mit dem jeweiligen Parameter: Schaltet auf den angegebenen Zustand.

Wenn das nicht das Problem war:
Kannst du mal deinen globalen Loglevel auf 5 hochstellen (Achtung: wird lang), und mir diesen hier zukommen lassen?
Mir reicht im ersten Schritt der Bereich, wo du dann auf Mute gedrückt hast...

Grüße Reinerlein

krikan

Hallo Reiner,

das hört sich (mal wieder) gut an. Du bist aber so schnell, dass ich mit dem Testen nicht nachkomme ;-).

Das Dock hat einen Lautstärkeregler zur Steuerung der beschickten Zone. Sorry, dass ich das nicht erwähnt hatte. Zur Entschuldigung: Habe den Regler noch nie genutzt.

Gruß, Christian

Reinerlein

Hallo zusammen,

ich habe den aktuellen Code bei mir jetzt zwei Tage durchlaufen lassen, und keinen Fehler mehr festgestellt.
Im Anhang also wieder alles.

Enthalten (V1.8):
- MinVolume und MaxVolume
- Dock sollte jetzt erkannt werden
- Abmeldende Devices, die gar nicht gemeldet oder kein Sonos sind, führen zu keinem Absturz mehr
- PlayerIcon wird nun bei jedem Erkennungsvorgang (also auch beim Neustart von FHEM z.B.) heruntergeladen. Seit Sonos V4.0 sehen die übrigens anders aus :-)

Im Wiki ist wieder eine detaillierte Beschreibung der neuen Möglichkeiten enthalten.

Die nächsten Schritte von meiner Seite sind jetzt erstmal das Einbringen in das offizielle FHEM. Mal schauen, auf welche Weise das erfolgen wird...

Grüße Reinerlein

krikan

Hallo Reiner,

danke für die neue Version.

Leider führt das Dock unter Windows (Linux nicht getestet) reproduzierbar zum Absturz.

In der Kommandozeile erhalte ich folgende Fehlermeldung:

Thread 1 terminated abnormally: Can't call method "GetVolume" on an undefined va
lue at ./FHEM/00_SONOS.pm line 1179.


Das tritt immer dann auf, wenn das Dock erkannt wird. Im FHEM-Log steht dann:

2013.02.13 18:29:12 2: SONOS1: Discover SonosPlayer 'Wireless Dock' (WD100) Software Revision 4.0 with ID 'RINCON_000E5860524201400_MR'

Brauchst Du noch mehr Infos?

Gruß, Christian

Reinerlein

Hi Christian,

*Vor die Stirn klatsch*
Klar, das hilft, das habe ich gesucht gehabt und immer wieder übersehen... ich habe alles mögliche umgestellt und abgesichert, aber diese eine Stelle natürlich nicht :-)

Also im Anhang diesmal nur die eine Datei, um das zu Testen...

Grüße Reiner

krikan

Hallo Reiner,

jetzt wird das Dock automatisch erkannt und angelegt.

Jedoch habe ich immer wieder nach einiger Zeit folgende Meldung in der Kommandozeile verbunden mit einem Absturz von FHEM:

Thread 1 terminated abnormally: Can't use an undefined value as a symbol referen
ce at ./FHEM/00_SONOS.pm line 2035.


Im Fhem-Log sehe ich leider derzeit keine Regelmäßigkeit.

Gruß, Christian

PS: Es laufen jetzt 2xS5, Connect, Dock

Reinerlein

Hi Christian,

hmmm.. das ist aber komisch, weil da eigentlich eine Meldung im Log stehen müsste. Entweder irgendwas von einem "unitialized Value in concatenaton" oder "can't connect to...".

Die Stelle ist beim Aufruf des Hauptthreads per Telnet. In diesem Fall beim syswrite. Das ist noch nie so vorgekommen...

Ich habe mal noch eine Prüfung eingebaut, aber ob die da was verhindert... Ansonsten müsstest du doch mal bitte das Log hochstellen, und hier posten. Vielleicht ist da eine kleine Meldung zwischen, die darauf hindeutet, was hier das Problem ist...

Grüße Reiner

krikan

Ja Reiner,

hast recht, das taucht im Log vorher auf, war mir nur in der Masse bei Loglevel 5 nicht aufgefallen:

2013.02.13 20:28:47 1: SONOS0: Can't connect to localhost:7072
2013.02.13 20:28:47 2: SONOS0: Error during DoTrigger: Can't use an undefined value as a symbol reference at ./FHEM/00_SONOS.pm line 2035.


Brauchst Du das ganze Log?

Ich installiere mal Deine neue Version.

Gruß, Christian

krikan

Hallo Reiner,

leider mit der neuesten Version gleiches Problembild bei mir. Vielleicht ein Spezialfall bei mir!?

Hänge Dir trotzdem mal das FHEM-Log an. Vielleicht bringt es Dir mehr Infos.

Werde auch noch mal unter Linux/Debian testen, ob ich dort das Gleiche Problem habe.

Gruß, Christian

Reinerlein

Hallo Christian,

komische Sache... ich habe zwar die Ursache des Problems selbst gefunden, aber nicht, warum das überhaupt versucht wird.
Das Problem ist, das er versucht aus dem Hauptthread heraus eine Telnet-Verbindung zu sich selbst zu öffnen. Das klappt nicht, da er sich damit selbst blockiert..

Ich habe jetzt erstmal eine Symptombehandlung gemacht, und ihm gesagt, dass wenn er das versuchen sollte, er die Anweisung direkt ausführen soll. Damit versucht er also nicht mehr sich selbst anzurufen...

Bitte teste mal, ob das jetzt bei dir durchläuft, und ob jetzt an irgendeiner anderen Stelle etwas anderes nicht funktioniert...

Danke schon mal.

Grüße Reiner

eburkon

Hallo Reinerlein,

es war von mir nicht richtig angegeben ich meinte MuteT wobei ich da auch noch einen Fehler drin hatte.
Wenn ich Webfrontend auf den MuteT link klicke wird "off" angezeigt. Das stimmt auch wenn ich das richtig verstehe,
da zu diesem Zeitpunkt eine Wiedergabe lief. Allerdings passiert am Sonos nichts.

Wenn ich auf den Linke "Pause" klicke wird "Error!" angezeigt passieren tut ebenfalls nichts.
Das log mit Start des Servers den zwei Aktionen und dem Stop habe ich angefügt.

Ich habe die aktuellsten Versionen der Module für diesen Test verwendet.

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

Reinerlein

Hi Eckkehard,

das ist schon ein komisches Verhalten, da deine MuteT-Rückgabe eigentlich "on" hätte liefern sollen (Mute == "on" => Stille). Das wird über eine abschließende Abfrage direkt vom Player geholt und als Ergebnis zurückgegeben. Das bedeutet: Das Setzen ist fehlgeschlagen, das nachgelagerte Abfragen war erfolgreich.

Ich habe jetzt noch ein paar Ausgaben bzgl. Lautstärkeermittlung eingebaut.
Ist das zufällig eine Zone mit zwei Playern im Rechts/Links-Verbund? Vielleicht kannst du auf deine Konstellation noch kurz näher eingehen.

Bei dir wird bei der Abfrage der "Master"-Lautstärke ein leerer String zurückgeliefert. Das sollte eigentlich nicht sein, und kann ich mir auch gerade nicht erklären...

Desweiteren hast du eine lustige Titelanzeige. Dort stehen eine Menge XML-Tags drin... Ich schaue mir das mal an, und versuche die Kerninformatione da rauszuschnippeln. Mal schauen, wie gut das klappt. Was ist das für ein Sender? Die Tags heißen z.B. "mus_art_1"...
Vielleicht kann ich das bei mir nachstellen.
Desweiteren kann er deswegen irgendwie das CoverArt dazu nicht ermitteln, da in der URL die Tags wieder vorkommen... Das scheint eine echte Sonderlocke zu sein... Leider gilt das für viele Dinge, die Sonos so tut...

Also im Anhang mal eine Version, die eine Log-Zeile enthält, die ich gebrauchen könnte. Diese fängt z.B. mit "SONOS1: Retrieve Current Volumelevels. Master:" an.

Ansonsten wäre es vielleicht hilfreich das Feature mit der Minimalen oder Maximalen Lautstärke zu aktivieren. Dort wird dann bei Level 5 eine Log-Ausgabe mit dem Anfang "Rendering-Event: LastChange:" ausgegeben. Dort stehen einige Informationen über den aktuellen Lautstärke- und Ausgabezustand drin. Das verrät vielleicht auch noch einiges...

Tut mir leid, dass es jetzt soviel ist, aber irgendwie müssen wir das ja rausfinden können :-)

Grüße Reiner