Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Will

Hallo Reinerlein,

versuche im Moment die Speak Funktion zum Laufen zu bringen.

Ich bekomme es so hin, dass beim Absetzen eines set Speak ein MP3 File im lokalen Folder (/mnt/SonosSpeak) abgelegt wird. Da kein File im "oeffentlichen" Bereich landet (NAS //192.168.1.10/public/zzfunc) wird auch nichts abgespielt.

Log:
2013-02-06 22:03:44 SONOSPLAYER sonos_Living_Room transportState: PLAYING
2013-02-06 22:03:44 SONOSPLAYER sonos_Living_Room infoSummarize2: PLAYING => (Annie Lennox) 'Sing' vom Album 'Songs Of Mass Destruction'
2013-02-06 22:03:44 SONOSPLAYER sonos_Living_Room PLAYING => (Annie Lennox) 'Sing' vom Album 'Songs Of Mass Destruction'
2013-02-06 22:03:58 SONOSPLAYER sonos_Living_Room lastSetActionName: Pause
2013-02-06 22:03:58 SONOSPLAYER sonos_Living_Room lastSetActionResult: Success!
2013-02-06 22:03:58 SONOSPLAYER sonos_Living_Room transportState: PAUSED_PLAYBACK
2013-02-06 22:03:58 SONOSPLAYER sonos_Living_Room infoSummarize2: PAUSED_PLAYBACK => (Annie Lennox) 'Sing' vom Album 'Songs Of Mass Destruction'
2013-02-06 22:03:58 SONOSPLAYER sonos_Living_Room PAUSED_PLAYBACK => (Annie Lennox) 'Sing' vom Album 'Songs Of Mass Destruction'
2013-02-06 22:04:05 SONOSPLAYER sonos_Living_Room lastSetActionName: Speak
2013-02-06 22:04:05 SONOSPLAYER sonos_Living_Room lastSetActionResult: TempPlaying is currently running: Speak


Meine Eintraeg in der fhem.cfg

define sonos SONOS
attr sonos room sonos
attr sonos targetSpeakDir /mnt/SonosSpeak
attr sonos targetSpeakURL //192.168.1.10/public/zzfunc

Gibt es eine bestimmte Syntax des targetSpeakURL? Ich habe alles schon durchprobiert smb://, http://, //, "nix".
Habe den lokalen Ordner /mnt/SonosSpeak acuh schon per samba freigegeben (Freigabe funktioniert) und als targetSpeakURL angegeben, auch ohne Erfolg.

Kannst Du mir was Idiotensicheres empfehlen?

Im Wiki benutzt Du zB http://192.168.178.45/Sonos - kann das ueber http funktionieren?

Vielen Dank fuer kurze Klaerung.

W

Reinerlein

Hi Will,

sorry, da ist mir im Wiki ein Tippfehler unterlaufen, den ich auch gerade korrigiert habe.
Es muss natürlich ein UNC-Pfad sein.

Versuch es bitte mal mit \\192.168.1.10\public\zzfunc Natürlich musst du das so anpassen, dass unter dieser Adresse auch die generierten Dateien erreichbar sind (zum Testen einfach in einem Windows-Dateiexplorer diese Adresse eingeben, und schauen, was du so siehst).

In deinem Log habe ich aber noch einen Fehler bei meiner Umsetzung gefunden. Ich blockiere parallele Abspielversuche, da ich am Ende sonst nicht mehr weiß, was ich wiederherstellen sollte. Das wird wohl im Fehlerfall (wie bei dir gerade) nicht vernünftig zurückgesetzt.
Dazu steht im Log bei dir:lastSetActionResult: TempPlaying is currently running: Speak

Ich werde das für die nächste Version beheben. Du müsstest halt auf jeden Fall einen FHEM-Neustart durchführen, dann wird das auch zurückgesetzt.

Grüße Reinerlein

Christoph

Hi Reiner,

anbei der fhem-Log von mir, im Perl Log landet nichts


Gruß Christoph

Reinerlein

Hi Christoph,

ok, danke für das Log... ich versuche das mal bei mir nachzustellen...

Grüße Reinerlein

krikan

Hallo Reinerlein,

anscheinend habe ich das gleiche Problem wie Christoph und hänge mich einmal an den Beitrag.

Als FHEM-Fritzbox-User habe ich zu Testzwecken ein jungfräuliches FHEM mit Deinem Sonos-Modul unter Windows mit Activstate Perl aufgesetzt. FHEM stürzt anscheinend nach Defintion von Sonos immer ab. Um Probleme mit Windows auszuschließen, habe ich in Virtualbox ein Debian mit FHEM und dem Sonos-Modul aufgesetzt. Auch hier endet dies nach Definition von Sonos in einem Absturz von FHEM. In der WEB-Oberfläche von FHEM taucht der ZP90 nie auf. Mir gehen leider die Ideen aus, was ich falsch mache. Die FHEM-Logs von Windows und Unix sind angehängt und sehen für mich ziemlich gleich aus.

Dabei hatte ich zu Testzwecken den PLAY:5 und das Dock noch nicht einmal eingeschaltet...

Hast Du noch Ideen? Kann ich noch irgendwelche Infos zur Hilfe liefern.

Danke, Christian

Reinerlein

Hallo Christian,

danke für die Rückmeldung. Da scheint es mal wieder ein Thread-Beendigungsproblem (in diesem Fall mal wieder zu früh) zu geben.

In meinen beiden Umgebungen ist mein Player ja nun schon bekannt und in der Config eingetragen, sodass der Discovery-Prozess nicht zum Tragen kommt. Das werde ich mal kurz zurücksetzen und testen, da es dort ja anscheinend mal wieder hakt...

Grüße Reinerlein

krikan

Hallo Reinerlein!

Danke für die Info. Werde es mal händisch anlegen.

Keine Ahnung, ob es für Dich wichtig ist, aber folgende Meldung tritt bei dn Abstürzen regelmäßig auf:

Perl exited with active threads:
1 running and unjoined
0 finished and unjoined
0 running and detached
Use of implicit split to @_ is deprecated at ./FHEM/21_SONOSPLAYER.pm line 232.


Gruß, Christian


Reinerlein

Hi Christian,

also die Ausgabe zu den Threads ist normal. FHEM ruft die Funktion zum Abbauen der Devices (UndefFn, dort würde der Thread abgebaut werden) beim Beenden von Fhem nicht mehr auf. Da wird wohl davon ausgegangen, dass ja sowieso alles gleich vorbei ist :-)

Aber die andere Meldung ist komisch. Die hatte ich noch nicht. Welche Perl-Version hast du denn?
Bei mir läuft folgendes: pi@raspberrypi ~ $ perl -V
Summary of my perl5 (revision 5 version 14 subversion 2)

Vielleicht ist meine Version zu alt? :-)

Grüße Reinerlein

P.S.: Die Threads unter Linux nerven gerade total. Die Implementierung da ist einfach buggy... Entweder es werden anstatt Threads gleich der Hauptprozess gekillt, oder es werden Dateihandles beim Starten von Threads gelöscht, die im Hauptprozess immer noch benötigt werden (wie mein CUL z.B. :-) Oh Mann... das kann sich noch einen Augenblick hinziehen...

krikan

Hallo Reinerlein,

meine Linux-Perl, das zur besagten Fehlermeldung führt, scheint älter zu sein:

test@debian:~$ perl -V
Summary of my perl5 (revision 5 version 10 subversion 1)


Also wohl mein Fehler. Ich werde es mal updaten und berichten. Verstehe aber nicht, warum ein neues Debian ein altes Perl mitbringt...

Unter Windows läuft bei mir was aktuelles:

Summary of my perl5 (revision 5 version 16 subversion 2)

Leider klappt es dort auch nicht. Perl verabschiedet sich dort entweder ohne Meldung oder mit der Theards-Angabe.

Lass Dir ruhig Zeit; trotzdem würde es mich riesig freuen, wenn Du es gelöst bekommst.

Danke und Gruß, Christian

Will

Hi reinerlein,

Nochmal zur speak Funktion:

Ich habe jetzt folgendes setup
targetSpeakDir /mnt/SonosSpeak
targetSpeakURL //192.168.1.103/SonosSpeak

Ist also das gleiche Verzeichnis. Wenn ich den set Befehl Abs Ende wird die mp3 Datei generiert (kann oich ja über prüfen), aber es gibt keine Durchsage - es gibt aber keine berechtigungsthematik, sonos darf hier zugreifen.

Logfile meldet beim ersten mal immer succes, beim zweiten Versuch sagt er
Tempplay is already running (nach Neustart weg)

Hast du eine Idee?

Danke.

W

Reinerlein

Hi Will,

wenn dein Zitat direkt kopiert wurde, dann sind die beiden Schrägstriche am Anfang falsch. Also mal folgendes probieren:
targetSpeakURL \\192.168.1.103\SonosSpeak

Grüße Reinerlein

Reinerlein

Hallo zusammen,

ich habe mal eine Menge im Thread-Verhalten umgestellt.

Nun hoffe ich, dass da etwas einigermaßen stabiles herausgekommen ist.
Meine Tests waren alle Varationen (Nicht konfigurierte Devices, vollständig konfigurierte Devices) unter Windows, und Linux (Raspberry Pi).

Das ganze läuft bei mir stabil. Aber wie das in der Wildnis (also bei euch:-) aussieht... mal schauen...

Was immer noch so ist, und was auch nicht von mir gelöst werden konnte:
Beim Beenden wird immer noch ausgegeben, dass da einige Threads zwar beendet, aber nicht weggeräumt sind. Das sind die Reste der Zwischendurchsagen. Da müssen wir mal beobachten, wie das mit dem Speicherverbrauch aussieht. Sonst muss ich das irgendwie auf eine externe Triggerung umbauen... aber erst mal gucken...

Im Anhang wieder alle Dateien. Es wurden aber ausdrücklich nur die beiden FHEM-Moduldateien verändert (das gilt eigentlich immer)...

Grüße Reinerlein

Will

Supi....

Mit dem neuen update läuft!


W

krikan

Klasse Reinerlein!

Bei mir läuft es unter Windows jetzt. ZP90 und 2x S5 werden problemlos erkannt, angelegt und lassen sich steuern. Was mir auf die Schnelle noch aufgefallen ist:

Im Fhem.log erscheint beim Start für jedes Gerät die nachfolgende DoTrigger-Fehlermeldung; Auswirkung kenne ich nicht:

Zitat2013.02.10 08:57:26 2: SONOS1: Discover SonosPlayer 'Schlafzimmer' (S5) Software Revision 3.8 with ID 'RINCON_000E58530F0401400_MR'
2013.02.10 08:57:26 3: SONOS1: ReRead-Command: fhem('set WEB rereadicons');
2013.02.10 08:57:26 3: SONOS1: ReRead-Command: fhem('set WEBphone rereadicons');
2013.02.10 08:57:26 3: SONOS1: ReRead-Command: fhem('set WEBtablet rereadicons');
2013.02.10 08:57:26 3: SONOS0: ReRead-Command: fhem('set WEB rereadicons');
2013.02.10 08:57:26 3: SONOS0: ReRead-Command: fhem('set WEBphone rereadicons');
2013.02.10 08:57:26 3: SONOS0: ReRead-Command: fhem('set WEBtablet rereadicons');
2013.02.10 08:57:26 1: SONOS1: Successfully autocreated SonosPlayer 'Schlafzimmer' (S5) Software Revision 3.8 with ID 'RINCON_000E58530F0401400_MR'
2013.02.10 08:57:26 2: SONOS1: Service-subscribing successful with SID="uuid:RINCON_000E58530F0401400_sub0000000018" and Timeout="86400s"
2013.02.10 08:57:26 3: SONOS1: Discover: End of discover-event
2013.02.10 08:57:26 2: SONOS0: RetrieveProxyObjects for 'Sonos_Schlafzimmer' (Room 'Schlafzimmer')
2013.02.10 08:57:26 2: SONOS0: Error during DoTrigger: Error creating search socket: Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden.
 at ./FHEM/00_SONOS.pm line 1356.

Mein Sonos-Dock führt leider beim Anschalten dazu, dass Perl abstürzt. Aber das Dock ist ja eh leider aus dem Programm von Sonos....

Danke und Gruß, Christian

Reinerlein

Hi Christian,

das klingt doch gut. Das mit der Fehlermeldung passiert, wenn mehrere Player erkannt werden sollen... das passe ich also noch an...

Kannst du mal den LogLevel auf 5 stellen (Achtung, das wird lang) und deinen Dock erkennen lassen (möglichst ohne alle anderen Komponenten). Da wird es irgendwas geben, was ich anspreche, was es bei dem Dock halt nicht gibt...

Grüße Reinerlein