Sonos steuern

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

Vorheriges Thema - Nächstes Thema

det.

Hallo Reiner,
Bekomme mit der aktuellen Entwicklerversion nach dem Modulstart folgenden Fehler:
Too many arguments for main::SONOS_GetSpeakFileExtension at ./FHEM/00_SONOS.pm line 1921, near "$workType)" BEGIN not safe after errors--compilation aborted at ./FHEM/00_SONOS.pm line 2336.
Telnet Port 7072 ist eingerichtet 
LG
det.

Reinerlein

Hi Det.,

da war ein Fehler im Prototyp dieser Funktion (es fehlte ein $-Zeichen). Ich finde es interessant, dass das erst bei dir auftritt, du bist ja schließlich nicht der erste, der das Modul verwendet :-)

Ich habe die Dev-Version korrigiert.

Grüße
Reiner

det.

Hallo Reiner,
Vielen Dank für den schnellen Fix. Sicher sind die anderen Tester so schlau und haben das selbst abgeändert...
Kannst Du gelegentlich ein kleines Beispiel posten, wie das Remote Control zu nutzen ist?
Danke,
LG
det.

Reinerlein

Hi Det.,

im Wiki gibt es ein Beispiel:
http://www.fhemwiki.de/wiki/Remotecontrol.

Kurz gesagt, kannst du mit:

define rc1 remotecontrol
ein RemoteControl-Device definieren.

Danach kannst du in der Weboberfläche das Device anklicken, und hast einen Setter "layout" zur Auswahl, in deren Klappbox du einen Eintrag "Sonos" findest.
Danach brauchst du nur noch den Setter "makenotify" mit deinem zu steuernden Sonos-Device auszuführen.

Danach sollten die dargestellten Buttons funktionieren...

Grüße
Reiner

Torben

Hallo,

ich habe das Modul neu installiert und immer mal wieder das Problem, dass alle Player und die Bridge als "Dissappeared" auftauchen.

Internals
DEF    RINCON_000xxx01400_MR
NAME Sonos_Wohnzimmer
NR 26
STATE initialized
TYPE SONOSPLAYER
UDN RINCON_000xxx1400_MR

Readings (Auszug)
currentTitle Let's Fall In Love 2014-01-05 22:32:39
presence disappeared 2014-01-05 22:42:59
state initialized 2014-01-05 22:42:59
transportState PLAYING 2014-01-05 22:32:42

Bei den Readings stimmen z.B. Titel und Zeit nicht überein. Diesen Titel hatte ich zuletzt gegen 17 Uhr gehört.

Folgendermaßen wurde das System nach dem
define Sonos SONOS localhost:4711 30 automatisch
erkannt und in der fhem.cfg abgelegt:

define Sonos SONOS localhost:4711 30
define Sonos_BRIDGE SONOSPLAYER RINCON_000xxx01400_MR
attr Sonos_BRIDGE group BRIDGE
attr Sonos_BRIDGE icon icoSONOSPLAYER_icon-ZB100.png
attr Sonos_BRIDGE model Sonos_ZB100
attr Sonos_BRIDGE room Sonos
define Sonos_Kueche SONOSPLAYER RINCON_000xxx1400_MR
attr Sonos_Kueche generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" #suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
attr Sonos_Kueche generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
attr Sonos_Kueche generateInfoSummarize3 <Volume prefix="Lautstaerke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhoerer aktiv" ifempty=" ~ Kein Kopfhoerer" emptyval="0"/>
attr Sonos_Kueche getAlarms 1
attr Sonos_Kueche group Kueche
attr Sonos_Kueche icon icoSONOSPLAYER_icon-S3.png
attr Sonos_Kueche minVolume 0
attr Sonos_Kueche model Sonos_S3
attr Sonos_Kueche room Sonos
attr Sonos_Kueche stateVariable InfoSummarize2
attr Sonos_Kueche webCmd Play:Pause:Previous:Next:VolumeD:VolumeU:MuteT
define AlbumArt_Kueche weblink image /fhem/icons/SONOSPLAYER/Sonos_Kueche_AlbumArt
attr AlbumArt_Kueche group Kueche
attr AlbumArt_Kueche htmlattr width='200'
attr AlbumArt_Kueche room Sonos
define Sonos_Wohnzimmer SONOSPLAYER RINCON_000xxx01400_MR
attr Sonos_Wohnzimmer generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
attr Sonos_Wohnzimmer generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
attr Sonos_Wohnzimmer generateInfoSummarize3 <Volume prefix="Lautstaerke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhoerer aktiv" ifempty=" ~ Kein Kopfhoerer" emptyval="0"/>
attr Sonos_Wohnzimmer getAlarms 1
attr Sonos_Wohnzimmer group Wohnzimmer
attr Sonos_Wohnzimmer icon icoSONOSPLAYER_icon-ZP120.png
attr Sonos_Wohnzimmer minVolume 0
attr Sonos_Wohnzimmer model Sonos_ZP120
attr Sonos_Wohnzimmer room Sonos
attr Sonos_Wohnzimmer stateVariable InfoSummarize2
attr Sonos_Wohnzimmer webCmd Play:Pause:Previous:Next:VolumeD:VolumeU:MuteT
define AlbumArt_Wohnzimmer weblink image /fhem/icons/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt
attr AlbumArt_Wohnzimmer group Wohnzimmer
attr AlbumArt_Wohnzimmer htmlattr width='200'
attr AlbumArt_Wohnzimmer room Sonos
define Sonos_Bad SONOSPLAYER RINCON_000xxx01400_MR
attr Sonos_Bad generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
attr Sonos_Bad generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
attr Sonos_Bad generateInfoSummarize3 <Volume prefix="Lautstaerke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" #emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhoerer aktiv" ifempty=" ~ Kein Kopfhoerer" emptyval="0"/>
attr Sonos_Bad getAlarms 1
attr Sonos_Bad group Bad
attr Sonos_Bad icon icoSONOSPLAYER_icon-S1.png
attr Sonos_Bad minVolume 0
attr Sonos_Bad model Sonos_S1
attr Sonos_Bad room Sonos
attr Sonos_Bad stateVariable InfoSummarize2
attr Sonos_Bad webCmd Play:Pause:Previous:Next:VolumeD:VolumeU:MuteT
define AlbumArt_Bad weblink image /fhem/icons/SONOSPLAYER/Sonos_Bad_AlbumArt
attr AlbumArt_Bad group Bad
attr AlbumArt_Bad htmlattr width='200'
attr AlbumArt_Bad room Sonos



Kann mir jemand einen Hinweis geben, ob ich grundsätzlich etwas falsch gemacht habe?

Schöne Grüße
Torben

Reinerlein

Hallo Torben,

die erkannten Definition sehen schon mal gut aus.
Ich vermute, dass es ein Problem mit der Ping Erkennung gibt. Stell doch da mal dran rum...

Ansonsten, kannst du mal die Konsolenausgabe des Sonos-Moduls posten (nicht das normale Fhem-Log, sondern das, was auf der Konsole nach z.B. einem manuellen Start ausgegeben wird).

Grüße
Reiner

JoeALLb

Ich hatte diesen Fehler gestern auch,  hab im Log "no Route to destination" gefunden,  was unlogisch war,  da ich das Sonos Pinien könnte und es im selben Netz lokal verbunden ist.... Nur ein fhem Neustart brachte die Lösung.

Gesendet von meinem Xperia Pro mit Tapatalk

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

Will

Hallo Reiner,

weil meine Logfiles immer riesig geworden sind, habe ich Sonos Verbose auf 0 gestellt, dann war "Ruhe" - seit ein paar Tagen taucht folgendes immer wieder auf:

2014.01.05 22:19:56 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 22:19:56 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 22:19:57 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 22:19:57 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 22:19:57 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 23:00:00 2: IT set rev3 off
2014.01.05 23:19:58 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 23:19:58 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 23:19:58 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 23:19:58 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E58C0F22801400_MR" has expired and is now renewed.
2014.01.05 23:19:58 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 23:19:58 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E582DCFC001400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: Transport-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: Rendering-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: Alarm-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and is now renewed.
2014.01.05 23:19:59 3: SONOS5: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_000E587FC86201400_MR" has expired and


ist das normal?

W

Reinerlein

 Hi Will,

da ist dein Verbose-Level mindestens auf 3 gerutscht, und ja, diese Meldungen sind normal. Es sind Statusmeldungen über den internen Zustand der Subscriptions bei den Playern.

Damit die Sonos-Player nicht auf ewig die Subscription-Queue vollmüllen (der Platz dort ist rar auf 32 Einträge beschränkt), sondert Sonos die nach einer bestimmten Zeit mit Inaktivität wieder aus.
Um das zu verhindern, wird nach einer bestimmten Zeit diese Subscription für jeden Eventtyp und Player erneuert.
Da die verwendete UPnp-Library das nicht selber abhandelt (normalerweise sollte sie das), musste ich das selber einbauen...

Mit folgender Adresse kannst du dir die, an einem Player angemeldeten, Controller (also auch das Fhem-Modul) auflisten lassen (IP natürlich auf einen gültigen Player anpassen):

http://a.b.c.d:1400/status/upnp


Grüße
Reiner

Will

Hmmm....sowohl sonos Modul als auch die player stehen auf attr verbose 0.
Ichbeobachte mal weiter....

Sent from my Nexus 7 using Tapatalk


Will

Oder muss ich woanders noch verbose 0 setzen?

Sent from my Nexus 7 using Tapatalk


Reinerlein

Hi Will,

ich verwende an der Stelle (also den SubProzess) noch das globale Verbose.
Ich werde das mal umstellen, kann aber bis Morgen dauern :-)

Grüße
Reiner

Torben

Hallo Reiner,

vielen Dank für die rasche Hilfe. Ich habe mal alle pingTypes ausprobiert. Auch hier funktioniert es mal  und mal nicht. Im Log-File kommt folgende Meldung:

2014.01.06 09:29:01 1: statefile: Reading Sonos_BRIDGE->presence not used out of statefile.
Reading Sonos_Bad->presence not used out of statefile.
Reading Sonos_Kueche->presence not used out of statefile.
Reading Sonos_Wohnzimmer->presence not used out of statefile.


Kann man damit etwas anfangen?

Schöne Grüße
Torben

Reinerlein

Hi Torben,

diese Meldungen sind nur Statusmeldungen. Die Begründung hatte ich schon mal unter http://forum.fhem.de/index.php/topic,10033.msg118891.html#msg118891 kurz umrissen.

Auf jeden Fall ist das kein negativer Aspekt.
Beim pingtype musst du dir einfach einen suchen, mit dem es geht. Ich persönlich verwende "ping", dafür muss Fhem allerdings unter dem Benutzer "root" laufen...

Grüße
Reiner

Reinerlein

Hi Will,

soo, ich habe mir das mit den Verbose-Leveln mal angeschaut.

leider steht zum Zeitpunkt des Define eines Fhem-Devices noch nicht die Attributliste dieses Device zur Verfügung. Auch leider wird im Define bereits der SubProzess angestartet (wofür dieser Wert mit übertragen werden muss).

Das bedeutet:
Beim initialen Start des SubProzess wird das Globale Verbose-Attribut verwendet. Anschließend, wenn das Attribut zur Verfügung steht, und der SubProzess-Thread gestartet wurde, wird das Verbose-Attribut des Sonos-Device verwendet.
Die Folge davon ist, das die ersten Logausgaben noch mit dem Globalen-Verbose-Wert durchgeführt werden. Bis zur Meldung "StartThread", dann wird der Device-Verbose-Wert verwendet...

Grüße
Reiner