Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: inoma am 13 Juli 2017, 23:48:38
am stateformat hatte ich eigentlich gar nichts geändert, das kommt automatisch wenn die Player 'generiert' werden (also wenn man das SONOS device das erste mal definiert).
Kommt also irgendwo von Reinerlein.
Hallo inoma,

komisch ist bei mir nicht so. Allerdings sind meine "Player" auch schon etwas älter. Letztens (nach einem Update?) wurden die aber eh ziemlich "zerrissen".
Ich werde die wohl mal neu anlegen lassen.

Wenn ich aber die commandref richtig verstehe, kannst Du durchaus auch ein anderes reading als state verwenden:
Zitat<struct_type>_map
Mit diesem Attribut, das dem Struktur-Mitglied zugewiesen werden muss, koennen die Werte, die die einzelnen Struktur- Mitglieder melden, umdefiniert werden, damit man unterschiedliche Geraeteklassen zusammenfassen kann. Es existieren drei Varianten:
readingName
nehme den Wert von readingName anstatt von state

Probiert habe ich das jetzt nicht.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Esjay

Hallo zusammen, ich hoffe es ist ok, wenn meine erste Frage nicht direkt eine Frage zum Modul ist,sondern eher zum technischen. Ich habe mir beim Primeday ein Doppelpack Play 1 zugelegt, diese werde ich wohl demnächst noch um eine Playbase erweitern,dann besteht die Möglichkeit entweder per Optischem Ausgang aus meiner Ax Box (E2) oder aus meinem Samsung TV zu speisen. Vll hat hier ja jemand ebenfalls diese Kombi, und kann mir sagen, was mehr Sinn macht.

Dann würde es mich interessieren, ob ich, bevor ich über einen Sonos Lautsprecher eine Sprachausgabe ausgebe, die Quelle/Gruppe irgendwie wechseln muss, oder ob die Ausgabe einfach beim Fernseh gucken beispielsweise"dazwischen" quatscht.

Meine nächste Frage bezieht sich auf die Stabilität des Moduls. Ich hatte noch nicht so viel Zeit mich mit Sonos und Fhem zu beschäftigen, da ich wie gesagt erst vor kurzem zugeschlagen habe, und zweitens noch die nächsten Tage am Strand von Bibione verweile  8). Da es wohl einen enormen Funktionsumfang gibt, habe Ich beiläufig mitbekommen, dass es für jede Version ein neuen Theard gibt, daher ist es nicht so einfach den Überblick zu behalten. Und daher meine Frage, ob es Sinnvoll ist die Sonos Devices auf dem Hauptsystem laufen zu lassen, oder doch ein 2 System aufzusetzen.

Liebe Grüße

markusphi

Zitat von: Esjay am 14 Juli 2017, 16:05:04
diese werde ich wohl demnächst noch um eine Playbase erweitern,dann besteht die Möglichkeit entweder per Optischem Ausgang aus meiner Ax Box (E2) oder aus meinem Samsung TV zu speisen. Vll hat hier ja jemand ebenfalls diese Kombi, und kann mir sagen, was mehr Sinn macht.
direkt an den TV macht am meisten Sinn

Zitat
Dann würde es mich interessieren, ob ich, bevor ich über einen Sonos Lautsprecher eine Sprachausgabe ausgebe, die Quelle/Gruppe irgendwie wechseln muss, oder ob die Ausgabe einfach beim Fernseh gucken beispielsweise"dazwischen" quatscht.
Die Sprachausgabe quatscht einfach los/dazwischen.
Das wirst Du aber nicht wirklich wollen wenn der TV läuft und gerade im Krimmi der Täter genannt wird....
Du musst Dich also drum kümmern unter welchen Voraussetzungen (z.B. Fernseher ist aus) Sprachausgabe erfolgt.
Wenn Dein TV im Netz ist, nicht schwierig.

Zitat
Meine nächste Frage bezieht sich auf die Stabilität des Moduls. Ich hatte noch nicht so viel Zeit mich mit Sonos und Fhem zu beschäftigen, da ich wie gesagt erst vor kurzem zugeschlagen habe, und zweitens noch die nächsten Tage am Strand von Bibione verweile  8). Da es wohl einen enormen Funktionsumfang gibt, habe Ich beiläufig mitbekommen, dass es für jede Version ein neuen Theard gibt, daher ist es nicht so einfach den Überblick zu behalten. Und daher meine Frage, ob es Sinnvoll ist die Sonos Devices auf dem Hauptsystem laufen zu lassen, oder doch ein 2 System aufzusetzen.

Liebe Grüße

Hier ist das ausreichend stabil - nachdem ich im Modul die IP der Player eingetragen habe

Otto123

Hallo Esjay,

Sonos läuft bei mir seit Januar 2015, völlig ohne Probleme.  Jetzt vor kurzem musste ich mal was neu machen, dass kann schon immer mal passieren wenn die Module intensiv weiterentwickelt werden. Irgendwann passt vielleicht was nicht mehr mit den alten Definitionen. Irgendwann muss der alte Zopf ab.  ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Elektrolurch

Hallo,

ich habe ein reading "roomicon" mit dem Inhalt "living". Ich hätte gerne den Player mit dem Icon "living" dargestelt. Weiß jemand, wie der Pfad zum dem Icon lautet?

Elektrolurch
configDB und Windows befreite Zone!

Reinerlein

Hi Elektrolurch,

die Roomicons sind nur Sonos-intern vorhanden, und nicht herunterladbar (zumindest habe ich das noch nicht entdeckt).
Du müsstest dir also ein Bildchen mittels eines Screenshots aus der Mac- oder Windows-Software heraus erzeugen...
Oder natürlich, es hat schon mal jemand gemacht, und kann es hier hochladen :)

Grüße
Reiner

Nobby1805

bei mir z.B.
c:/fhem/www/images/default/icoSONOSPLAYER_icon-S1.png
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Reinerlein

Hi Nobby,

das ist der Pfad zu dem Playersymbol-Icon (also die Darstellung eines S1 z.B.). Das wird in der Default-Erzeugung ja auch für den Player als Icon eingetragen.
Elektrolurch wollte aber vermutlich das Icon für das "Wohnzimmer" haben...

Grüße
Reiner

Nobby1805

Hi Reiner,

:-[ du hast natürlich völlig Recht ... lesen sollte man können  :-[

Gruß Nobby
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

dantist

Wenn ich für ein Notify auf "Select icon" klicke, sehe ich ganz oben in der Liste teils riesige Albumcover, auch von Musik, die in keiner Playliste steckt und die ewig nicht mehr lief. Kann ich die irgendwie löschen?

Eragos

Zitat von: Reinerlein am 10 Juli 2017, 11:36:18
Hi Daniel,

das Sonos-Modul greift auf jeden Fall auf diverse Server im Internet zu. Die Adressen werden bei Sonos ermittelt und verwendet (z.B. TuneIn-Cover bei tunein.com oder Logos bei sonos-logo.ws.sonos.com).
Wenn man da unsichtbar nicht mehr hinkommt, dann blockiert das natürlich alles.
So wie ich die Beschreibung verstehe, kommt statt der eigentlichen Antwort eine Hinweisseite oder ein GIF. Beides kann dann vom Modul nicht mehr korrekt verarbeitet werden, und sorgt natürlich für Fehler...

Die Frage ist ja: Wieso sind anscheinend einige der Adressen, die von Sonos (nicht ausschließlich mein Modul, ich verwende nur diesselben Abfragesysteme) verwendet werden, im pi-hole blockiert?
In der Hauptsache sind das ja Cloud-Dienste und andere Speichersysteme...

Am Einfachsten wird es wohl sein, wenn du dem Pi ohne DHCP eine eigene Adresse gibst, und vor allem dabei nicht den pi-hole als DNS-Server angibst.

Ansonsten: Zeigt der pi-hole in seiner Übersicht nicht, welche Seiten er vom Sonos-Modul aus geblockt hat? Dann müsstest du die doch auf die Whitelist setzen können...

Grüße
Reiner

Ich habe eine ähnliche Kombination (FHEM + Pi-Hole auf RPI, fixed IP) am laufen. Sobald man SONOS definiert, steht FHEM. Es werden keinerlei Logausgaben geschrieben. Augenscheinlich wird am Pi-Hole selber auch nichts geblockt (Logfiles durchgeschaut und ebenfalls den Filter einmal komplett abgeschaltet). In FHEM habe ich dann 'attr global dnsServer 8.8.8.8' gesetzt. Ebenfalls ohne Erfolg. Um Wechselwirkungen mit anderen FHEM Modulen auszuschließen, habe ich FHEM jeweils in einer Minimalkonfiguration mit verbose 5 gestartet.

Testhalber habe ich FHEM auf meinem Mac installiert => SONOS definiert => SONOS wird erkannt und lässt sich steuern :)

Auf dem RPI habe ich danach mit 'define Sonos SONOS 192.168.178.59:4711 30 1 5' den UPnP-Server auf dem Mac definiert. FHEM stürzt immer noch ab (uns reißt den gesamten RPI mit sich), allerdings schreibt er vorher noch ein wenig im Log. Vielleicht hilft das, der Ursache näher zu kommen.


2017.07.22 17:25:59 1: SONOS0: Modify Device: Sonos
2017.07.22 17:26:05 3: Opening Sonos device 192.168.178.59:4711
2017.07.22 17:26:05 5: SW: Establish connection

2017.07.22 17:26:05 3: Sonos device opened
2017.07.22 17:26:05 5: SONOS0: Received from UPnP-Server: 'Sorry. I don't understand you - 'Establish connection'.'
2017.07.22 17:26:05 5: SONOS0: MainTrigger()-Line: Sorry. I don't understand you - 'Establish connection'.
2017.07.22 17:26:05 2: SONOS0: Error during MainTrigger: syntax error at (eval 1984) line 1, at EOF
- Trying to execute 'Sorry. I don't understand you - 'Establish connection'.'
2017.07.22 17:26:05 5: SONOS0: Received from UPnP-Server: 'ReadingsSingleUpdateIfChanged:RINCON_5CAAFD99896201400_MR:roomName:Lounge'
2017.07.22 17:26:05 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_getSonosPlayerByUDN" at ./FHEM/00_SONOS.pm line 10002.
2017.07.22 17:26:05 1: PERL WARNING: Deep recursion on subroutine "main::SONOS_Log" at ./FHEM/00_SONOS.pm line 9753.

Reinerlein

Hi Eragos,

das hilft ein bißchen. Das Problem ist aber nicht einfach erklärbar. Es wird ein String "Establish connection" vom Fhem-Modul in Richtung SubProzess losgesendet, der vom SubProzess eigentlich blockierend erwartet werden sollte. Dieser wartet darauf aber gar nicht mehr...

Versuch mal folgende Zeile hinter "send(listening for commands)" des SubProzesses einzufügen (um die Zeile 10089 ungefähr), also so:

send($client, "This is UPnP-Server listening for commands\r\n", 0);
select(undef, undef, undef, 0.5);

Vielleicht müssen wie dort einfach etwas warten :) pi-hole hängt sich vielleicht, wie Wireshark auch, in die Verarbeitungskette des TCP/IP-Stacks rein, und sorgt für eine Verzögerte Auslieferung...

Danke schon mal...

Grüße
Reiner

Eragos

#2952
Guten Morgen Reiner,

ich habe die Zeile hinzugefügt und erst mal nur auf dem RPI alleine probiert. Hier konnte ich keine Änderung im Verhalten feststellen. Nach der SONOS Device Definition zieht es FHEM ins Nirvana.

In der Kombination mit dem UPnP-Server auf dem Mac, scheinen wir schon mal weiter gekommen zu sein. Nach dem ich das SONOS Device auf dem RPI definiert habe, initialisiert er sich und geht dann in den State open. SONOSPLAYER werden allerdings nicht angelegt. Auch nach einem RescanNetwork nicht. Hier weiß ich allerdings nicht, ob das nicht evtl. so gewollt ist. Ich werde heute Mittag mal den SONOSPLAYER von Hand anlegen und schauen was geht.

EDIT: Hat etwas gedauert, aber nun sind die SONOSPLAYER ebenfalls da und scheinen auf den ersten Blick zu funktionieren :)

Nun erst mal schlafen  8)


2017.07.23 02:59:09 1: SONOS0: Modify Device: Sonos
2017.07.23 02:59:15 3: Opening Sonos device 192.168.178.59:4711
2017.07.23 02:59:15 5: SW: Establish connection

2017.07.23 02:59:15 3: Sonos device opened
2017.07.23 02:59:15 5: SONOS0: Received from UPnP-Server: 'Sorry. I don't understand you - 'Establish connection'.'
2017.07.23 02:59:15 5: SONOS0: MainTrigger()-Line: Sorry. I don't understand you - 'Establish connection'.
2017.07.23 02:59:15 2: SONOS0: Error during MainTrigger: syntax error at (eval 420) line 1, at EOF
- Trying to execute 'Sorry. I don't understand you - 'Establish connection'.'
2017.07.23 02:59:16 5: SONOS0: SetData:Sonos:5:-:syn:::0::
2017.07.23 02:59:16 5: SW: SetData:Sonos:5:-:syn:::0::

2017.07.23 02:59:16 5: SONOS0: SetValues:SONOS:INTERVAL=30|NAME=Sonos
2017.07.23 02:59:16 5: SW: SetValues:SONOS:INTERVAL=30|NAME=Sonos

2017.07.23 02:59:16 5: SW: StartThread

2017.07.23 02:59:53 5: SW: DoWork:SONOS:rescanNetwork:


Viele Grüße
Micha

Reinerlein

Hi Micha,

kannst du mal ein bißchen mit dem Zahlenwert spielen?
Ruhig zum Anfang mal deutlich hoch, vielleicht auf 3-4 Sekunden. Nur um mal zu sehen, ob es wirklich etwas bewirken kann...

Grüße
Reiner

Eragos

#2954
Hallo Reiner,

ich habe diverse Werte ausprobiert, leider ohne Erfolg.

Ich habe mir auf dem RPI mal eine Minimalkonfiguration erstellt und mal den Perl Debugger angeworfen.

Unten findest du ein Tracelog. Nach

main::SONOS_StartClientProcessIfNeccessary(./FHEM/00_SONOS.pm:1815):
...
302:       ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags);
ist dann Feierabend.

Locate:

 
DB<1> l
302==>      ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags);
303     }
304
305     sub shutdown {
306:        @_ == 2 or croak 'usage: $sock->shutdown(HOW)';
307:        my($sock, $how) = @_;
308:        ${*$sock}{'io_socket_peername'} = undef;
309:        shutdown($sock, $how);
310     }
311


Den gesamten Trace findest du im Anhang.