Sonos steuern

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

Vorheriges Thema - Nächstes Thema

JoeALLb

Hi zusammen.

Nach längerer Abwesenheit wollte ich das Modul wieder in Betrieb nehmen, da mein FHEM auf einen anderen Server umgezogen ist.
Auf dauer war mir der RPI doch zu langsam!

Nun will aber dieses Modul nicht mehr.
Ich habe das Sonos-Device (wie damals) konfiguriert und der State geht auf "connected", es findet jedoch keine Player, fhem ist aktuell.
Mir gehen langsam die Ideen aus.

Welche Netzwerkkarte nimmt das Modul denn? Der Server hat 2 Netzwerkkarten und nur an einer hängt das interne Netz mit den Sonosen. Kann das das Problem sein?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

dev0

Wenn du das andere Netzwerkinterface temporär deaktivierst, dann kannst du die Frage selbst beantworten.

JoeALLb

Zitat von: dev0 am 01 Oktober 2015, 16:03:07
Wenn du das andere Netzwerkinterface temporär deaktivierst, dann kannst du die Frage selbst beantworten.

Nö, weil dann bin ich ausgesperrt... über das Device bin ich verbunden, da ich nicht zuhause bin. FHEM ist praktisch am Router installiert, die Firewall unterbindet jedoch connections nach aussen, nicht aber nach innen.... hab zum Test auch mal die Firewall deaktiviert, selbes ergebnis. Lediglich den Default gateway, der ins Internet zeigt, kann ich nicht entfernen/deaktivieren.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

dev0

Das multicast virtual network routest du auf das interne Interface?

JoeALLb

Zitat von: dev0 am 01 Oktober 2015, 19:05:48
Das multicast virtual network routest du auf das interne Interface?
Über
ip route add 224.0.0.0/4 dev eth0
? ja, das ist eingetragen. Oder ist mehr zu tun?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

dev0

Genau so und ggf. die Firewallregeln noch anpassen.

JoeALLb

Zitat von: dev0 am 07 Oktober 2015, 11:31:50
Genau so und ggf. die Firewallregeln noch anpassen.

Danke!!

Mit der allgemeinen Regel
ACCEPT  loc     fw
ACCEPT  fw      loc


klappt es dann auch! somit ist es gelöst! Wenn Du jedoch noch einen Tip hast, wie ich die weiter einschränken kann... immer gerne!
ACCEPT  loc     fw:224.0.0.0/4
ACCEPT  fw      loc:224.0.0.0/4

hat jedenfalls nicht funktioniert!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

dev0

Zitat von: JoeALLb am 07 Oktober 2015, 13:49:32
Wenn Du jedoch noch einen Tip hast, wie ich die weiter einschränken kann... immer gerne!
ACCEPT  loc     fw:224.0.0.0/4
ACCEPT  fw      loc:224.0.0.0/4

hat jedenfalls nicht funktioniert!

Ich kenne mich mit der shorewall Syntax nicht aus. Über die generierten iptables Regeln könnte ich mal drüber schauen... Aber spätestens am (Perimeter-) Router sollten die Pakete sowieso verworfen werden und Deinem internen Netz vertraust Du doch, oder?

SlvrStrko4

Hallo zusammen,

seit einem Update meiner Distribution habe ich heute ganz viele Fehler im Log die vom Sonos Modul zu kommen scheinen:

Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:27 2: SONOS4: Discover Sonosplayer 'Badezimmer' (S1) Software Revision 5.5 with ID 'RINCON_B8E93783ACBE01400_MR'
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 3: SONOS4: Event: End of Transport-Event for Zone "Sonos_Badezimmer".
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 3: SONOS4: Event: Received Transport-Event for Zone "Sonos_Badezimmer".
2015.10.07 16:44:26 3: SONOS4: Discover: End of discover-event for "Badezimmer".
2015.10.07 16:44:26 2: SONOS4: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000204
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000203
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: Alarm-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000202
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000201
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000200
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: Rendering-Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000199
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: Service-subscribing successful with SID=uuid:RINCON_B8E93783ACBE01400_sub0000000198
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: SonosPlayer 'Badezimmer' is now updated
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:26 2: SONOS4: SonosPlayer 'Badezimmer' (S1) with ID 'RINCON_B8E93783ACBE01400_MR' is already defined (as 'Sonos_Badezimmer') and will only be updated
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:24 2: SONOS4: Discover Sonosplayer 'Badezimmer' (S1) Software Revision 5.5 with ID 'RINCON_B8E93783ACBE01400_MR'
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 7.
2015.10.07 16:44:23 3: SONOS0: Connection accepted from localhost:58760
2015.10.07 16:44:00 0: SONOS4: Setting LogLevel to new value: 3


Das Log ist umgekehrt sortiert.

Woher kommen diese ganzen "Odd number ..." Fehlermeldungen, wieso sind die plötzlich da und was kann ich dagegen tun?

Danke & Gruß

dantist

#2124
Ich glaube, ich habe einen kleinen Bug im Sonos Groups-Befehl gefunden: Wenn der Lautsprecher, der im Groups-Befehl an erster Stelle steht, gleichzeitig der erste Lautsprecher in einer bestehenden Gruppe ist, wird der Groups-Befehl ignoriert.

Beispiel

Bestehende Gruppe:
Sonos_A
Sonos_B
Sonos_C


Wird ignoriert: set Sonos Groups [Sonos_A, Sonos_B]
Funktioniert: set Sonos Groups [Sonos_B, Sonos_A]

Reinerlein

Hi dantist,

das ist so gewollt. Dem ganzen liegt das Prinzip der minimalsten Veränderung zugrunde.
Das bedeutet, dass ich die Groups-Angabe als Minimal-Angabe gesehen habe, die meine Gruppenlandschaft in Zukunft (nach dem Befehl) haben soll.

Wenn du jetzt eine bestehende Gruppe mit A, B und C hast, und einen Group-Befehl mit A und B übergibst, dann ist ja alles schon passiert. Für C hast du ja nichts genaueres festgelegt, der wird damit auch überhaupt nicht beachtet.
Wenn du möchtest, dass C aus der Gruppe herausgenommen wird, dann musst du explizit angeben, was mit C passieren soll.

Eine Angabe von:

set Sonos Groups [Sonos_A, Sonos_B], [Sonos_C]
zieht C aus der Gruppe heraus (und macht den Player zu seiner eigenen Gruppe).

Ein

set Sonos Groups [Sonos_C, Sonos_A, Sonos_B]
macht C zum neuen Master der Gruppe.

Wenn du sicherstellen willst, dass deine Gruppe *nur* aus den angegebenen Playern besteht, dann musst du erst die möglichen Gruppen auflösen:

set Sonos Groups [Sonos_A], [Sonos_B], [Sonos_C]

Im Falle der Auflösung aller Gruppen in einem Schritt kannst du

set Sonos Groups Reset
angeben.

Das Vorgehen hat den Vorteil, dass beim mehrmaligen Aufruf derselben Sequenz die Wiedergabe nicht unterbrochen wird. Es bleibt ja alles beim alten...
Aber ich gebe dir Recht, dass es verwirrend sein kann :)

Grüße
Reinerlein

dantist

#2126
Hallo Reinerlein,

vielen Dank für die Erläuterung! Mit diesen Infos finde ich sicher einen Workaround für mein Projekt.

Noch eine Frage: Wenn ich verschiedene Sonos-Aktionen hintereinander ausführen will, sorgt dein Modul für den korrekten Ablauf, oder sollte man selbst Pausen definieren? z.B. dauert das Gruppieren von Lautsprechern bei mir manchmal bis zu 10 Sekunden. Sollte ich nach dem Groups-Befehl warten, bevor ich z.B. einen Radiosender auf einen Lautsprecher der neuen Gruppe starte, oder ist das nicht nötig?

Gruß
Daniel

Elektrolurch

Hallo Reinerlein,

einen Teil der Fragen hatte ich schon mal (wohl während Deines sicher verdienten Urlaubs :-)) gepostet, sind vmtl. verschütt gegangen. Für einige Dinge habe ich zwischenzeitlich einen Workaround gebastelt.

Bleibt noch:
1. Irgendwo hatte ich gelesen, dass man als Radiosender den Namen des Players angeben kann und somit auf den externen Eingang umschalten kann. Funktioniert leider bei mir aber nicht oder was mache ich da falsch?
elsif($val eq 'extern')
{
my $cmd= "set $master StartRadio $master";
Log3($name,2,(caller(0))[3] . ": $cmd");
fhem($cmd);
return undef;
} # extern input

$master = 'Sonos_G_stezimmer' also ein gültiger Playername

2. Anhängen an playlist mit search-Befehl führt dazu, das Liste wieder von vorne gestartet wird.
Wolltest Du Dir mal ansehen. Ich denke, dass bei laufender Wiedergabe der aktuellen playlist ein anhängen von weiteren Titeln die lfd. Wiedergabe nicht unterbrechen sollte.

Ich sag schon mal danke, für Deine Super-Arbeit.

Gruß

Elektrolurch

configDB und Windows befreite Zone!

Reinerlein

Hi Elektrolurch, Hi Daniel,

jaa.. das war ja einiges, als ich nicht da war :) Wie immer... Kaum ist die Katze aus dem Haus, tanzt das Modul auf dem Tisch... :)

@Daniel: Mir ist gerade aufgefallen, das das mit dem Reset bei dir noch nicht gehen kann. Das ist noch in meinem Entwicklungsstand :) kommt aber demnächst an die Öffentlichkeit...

Im Normalfall puffert das Modul die Befehle in einer Queue im SubProzess, und arbeitet sie nach und nach ab. Trotzdem kann es zu Problemen kommen, wenn z.B. der Player eine Aktion bereits als fertig meldet (der Aufruf also schon zurückkommt), obwohl er in Wirklichkeit noch dabei ist, den Befehl auszuführen, liefert das Modul direkt den nächsten Befehl... Probier es einfach... meistens sollte es klappen...

@Elektrolurch:
Zu dem externen Eingang: Ich meine, das war schon mal wieder dran... Es ist der Befehl PlayURI, dem man den Device-Namen geben kann...

Das mit dem Search-Befehl wollte ich mir noch anschauen, und steht auch auf meinem Zettel :)
Da muss ich irgendeine Prüfung noch reinbauen, bevor der Play-Befehl nochmal abgesetzt wird... kann eigentlich nichts großes sein...

Grüße
Reiner

SVLoneStar

Hallo - ich habe seit 2-3 Tagen das Problem mit der 503 Meldung bei Google Speech. Version von Sonos.pm ist die vom 2.8., die Erweiterung der URL scheint im Modul drin zu sein. Neues Problem bei Google oder alleiniges Problem bei mir...? Danke!
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors