Sonos steuern

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

Vorheriges Thema - Nächstes Thema

MarioS1969

#1470
Hallo,
ich bekomme es einfach nicht hin mp3s mit dem Sonos Play:3 abzuspielen. Internetradio funktioniert (2 Sender, Ausschalten, lauter und leiser). Aber mp3 und speak will einfach nicht klappen.

Wenn ich speak aufrufe wie folgt aufrufe:
set Sonos_Wohnzimmer Speak 20 de Hura der Sommer ist da.
wird im Verzeichnis \\192.168.xxx.xxx\mnt\SonosSpeak eine mp3 Datei abgelegt, aber nicht abgespielt.

Kann mir jemand sagen was ich falsch mache?

hier mein Code aus der fhem.cfg

define Sonos SONOS localhost:4711 30
attr Sonos targetSpeakDir /mnt/SonosSpeak
attr Sonos targetSpeakFileHashCache 1
attr Sonos targetSpeakURL \\192.168.xxx.xxx\mnt\SonosSpeak
attr Sonos verbose 5

define Sonos_Wohnzimmer SONOSPLAYER RINCON_B8E9373ACB7401400_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 Sonos
attr Sonos_Wohnzimmer icon icoSONOSPLAYER_icon-S3.png
attr Sonos_Wohnzimmer minVolume 0
attr Sonos_Wohnzimmer model Sonos_S3
attr Sonos_Wohnzimmer room Sonos
attr Sonos_Wohnzimmer stateVariable InfoSummarize2
attr Sonos_Wohnzimmer verbose 5
attr Sonos_Wohnzimmer webCmd Play:Pause:Previous:Next:VolumeD:VolumeU:MuteT

#SWR3
define SWR3 dummy
attr SWR3 devStateIcon Aus:Wecker.Wochenende:Ein Ein:Wecker.Wochenende:Aus
attr SWR3 group Radio
attr SWR3 room Sonos
attr SWR3 setList State:Ein,Aus
attr SWR3 webCmd :

define act_SWR3 notify SWR3 {\
     fhem("set Sonos_Wohnzimmer PlayURI http://mp3-live.swr3.de/swr3_s.m3u");;\
     fhem("set Sonos_Wohnzimmer play");;\
}

# Antenne1
define Antenne dummy
attr Antenne devStateIcon Aus:Wecker.Wochenende:Ein Ein:Wecker.Wochenende:Aus
attr Antenne group Radio
attr Antenne room Sonos
attr Antenne setList State:Ein,Aus
attr Antenne webCmd :

define act_Antenne notify Antenne {\
     fhem("set Sonos_Wohnzimmer PlayURI http://stream.antenne1.de/stream1/livestream.mp3");;\
     fhem("set Sonos_Wohnzimmer play");;\
}

#Radio leiser
define leiser dummy
attr leiser devStateIcon Aus:remotecontrol/black_btn_VOLDOWN:Ein Ein:remotecontrol/black_btn_VOLDOWN:Aus
attr leiser group Radio
attr leiser room Sonos
attr leiser setList State:Ein,Aus
attr leiser webCmd :

define act_leiser notify leiser {\
     fhem("set Sonos_Wohnzimmer volume -3");;\
}

#Radio lauter
define lauter dummy
attr lauter devStateIcon Aus:remotecontrol/black_btn_VOLUP:Ein Ein:remotecontrol/black_btn_VOLUP:Aus
attr lauter group Radio
attr lauter room Sonos
attr lauter setList State:Ein,Aus
attr lauter webCmd :

define act_lauter notify lauter {\
     fhem("set Sonos_Wohnzimmer volume +3");;\
}

#Radio ausschalten
define ausschalten dummy
attr ausschalten devStateIcon Aus:remotecontrol/black_btn_POWEROFF:Ein Ein:remotecontrol/black_btn_POWEROFF:Aus
attr ausschalten group Radio
attr ausschalten room Sonos
attr ausschalten setList State:Ein,Aus
attr ausschalten webCmd :

define act_ausschalten notify ausschalten {\
     fhem("set Sonos_Wohnzimmer stop");;\
}




und hier der Logbucheintrag:


2015.01.21 22:40:11 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:1::http://192.168.xxx.xxx:1400'
2015.01.21 22:40:11 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png');
2015.01.21 22:40:11 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:40:11 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png'!
2015.01.21 22:40:11 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackPosition:0:00:00'
2015.01.21 22:40:11 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'ReadingsSingleUpdateIfChangedNoTrigger:RINCON_B8E9373ACB7401400_MR:Balance:0'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'ReadingsSingleUpdateIfChangedNoTrigger:RINCON_B8E9373ACB7401400_MR:Volume:6'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_B8E9373ACB7401400_MR:0'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_B8E9373ACB7401400_MR:1'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TransportState:STOPPED'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:CrossfadeMode:0'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NumberOfTracks:1'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Track:1'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackURI:http://stream.antenne1.de/stream1/livestream.mp3'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackDuration:0:00:00'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:0::http://192.168.xxx.xxx:1400'
2015.01.21 22:40:12 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png');
2015.01.21 22:40:12 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:40:12 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png'!
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NormalAudio:1'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Title:livestream.mp3'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:AlbumArtist:'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:nextTrackURI:'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:1::http://192.168.xxx.xxx:1400'
2015.01.21 22:40:12 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png');
2015.01.21 22:40:12 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:40:12 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png'!
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackPosition:0:00:00'
2015.01.21 22:40:12 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:40:19 4: SONOS0: Got correct Answer from Subprocess...
2015.01.21 22:40:49 4: SONOS0: Got correct Answer from Subprocess...
2015.01.21 22:40:57 5: SW: 446f576f726b3a52494e434f4e5f42384539333733414342373430313430305f4d523a737065616b303a32302c64652c204875726120536f6d6d657266657269656e2e0d0a
2015.01.21 22:41:00 5: SONOS0: Received from UPnP-Server: 'DoWorkAnswer:RINCON_B8E9373ACB7401400_MR:LastActionResult:PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"'
2015.01.21 22:41:00 4: SONOS0: DoWorkAnswer arrived for Sonos_Wohnzimmer->LastActionResult: 'PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_B8E9373ACB7401400_MR:1'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TransportState:STOPPED'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:CrossfadeMode:0'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NumberOfTracks:1'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Track:1'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackURI://192.168.xxx.xxx/mnt/SonosSpeak/RINCON_B8E9373ACB7401400_MR_Speak_41616841418683e2a592ee5f710efa46b0ea0035.mp3'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackDuration:0:00:00'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:0::http://192.168.xxx.xxx:1400'
2015.01.21 22:41:02 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png');
2015.01.21 22:41:02 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:41:02 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png'!
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NormalAudio:1'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Title:RINCON_B8E9373ACB7401400_MR_Speak_41616841418683e2a592ee5f710efa46b0ea0035.mp3'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:AlbumArtist:'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:nextTrackURI:'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:1::http://192.168.xxx.xxx:1400'
2015.01.21 22:41:02 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png');
2015.01.21 22:41:02 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:41:02 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png'!
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackPosition:0:00:00'
2015.01.21 22:41:02 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'ReadingsSingleUpdateIfChangedNoTrigger:RINCON_B8E9373ACB7401400_MR:Balance:0'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'ReadingsSingleUpdateIfChangedNoTrigger:RINCON_B8E9373ACB7401400_MR:Volume:20'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_B8E9373ACB7401400_MR:0'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_B8E9373ACB7401400_MR:1'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TransportState:STOPPED'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:CrossfadeMode:0'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NumberOfTracks:1'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Track:1'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackURI://192.168.xxx.xxx/mnt/SonosSpeak/RINCON_B8E9373ACB7401400_MR_Speak_41616841418683e2a592ee5f710efa46b0ea0035.mp3'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackDuration:0:00:00'
2015.01.21 22:41:03 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:0::http://192.168.xxx.xxx:1400'
2015.01.21 22:41:03 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png');
2015.01.21 22:41:04 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:41:04 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.png'!
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NormalAudio:1'
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Title:RINCON_B8E9373ACB7401400_MR_Speak_41616841418683e2a592ee5f710efa46b0ea0035.mp3'
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'SetCurrent:AlbumArtist:'
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'SetCurrent:nextTrackURI:'
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_B8E9373ACB7401400_MR:1::http://192.168.xxx.xxx:1400'
2015.01.21 22:41:04 4: SONOS0: Transport-Event: CoverArt konnte nicht gefunden werden. Verwende FHEM-Logo. Bilder-Download: SONOS_DownloadReplaceIfChanged('./FHEM/lib/UPnP/sonos_empty.jpg', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png');
2015.01.21 22:41:04 4: SONOS0: Couldn't retrieve file "./FHEM/lib/UPnP/sonos_empty.jpg" via web. Trying to copy directly...
2015.01.21 22:41:04 4: SONOS0: Identical filecontent for './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png'!
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackPosition:0:00:00'
2015.01.21 22:41:04 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_B8E9373ACB7401400_MR'
2015.01.21 22:41:04 5: SW: 446f576f726b3a52494e434f4e5f42384539333733414342373430313430305f4d523a737065616b303a32302c64652c204875726120536f6d6d657266657269656e2e0d0a


Vielleicht hat ja jemand auch eine schönere Darstellung für die Radiofunktion.

Vielen Dank schon mal im Voraus
Mario
PI 2, PI4,  RFXtrx433, IT-1500, CMR-1000, ITM 100, TFA Temperatursensor, IR-Sensor, FB 7590, LIRC mit Logitech Harmony, FI9821W, Sonos, Twilight, Benzinpreismonitor, HMLAN, HM-Sen-DB-PCB, HM-LC-Bl1PBU-FM, HM-SEC-SC-2, GPIO4 mit fhem2fhem, Shelly

Reinerlein

Hi Mario,

also als erstes kurz zum Radio: Ich würde dir empfehlen, die Radiosender nach Möglichkeit aus den Radiofavoriten zu starten (also per Sonos-Controller den Sender zu den Radiofavoriten hinzufügen, und dann aus Fhem heraus mittels "StartRadio" starten).
Dabei werden dann die üblichen Informationen sowie das Sendercover angezeigt...

Zum Speak: Das sieht so aus, als könnte der Sonosplayer die Datei nicht lesen. Bitte die Rechte und den Zugriff von "aussen" auf die Dateifreigabe genauestens prüfen. Die meisten Probleme sind dort zu finden...

Grüße
Reinerlein

Spartacus

Zitat von: Reinerlein am 21 Januar 2015, 15:49:47
Hi Christian,

Sonos bietet nur ein paar Informationen dazu an:
- Das Reading "ZoneGroupID" des jeweiligen Players: Es enthält die ID des Zonemasters
- Das Reading "currentTrackURI" des jeweiligen Players: Es enthält bei einer Gruppenwiedergabe die RINCON-ID des Masters. Damit erkennt das Modul selbst die Wiedergabe und schreibt z.B. diesen Gruppenwiedergabetext hin...
- Das Reading "ZoneGroupState" des Sonos-Devices: Das ist die Grundlage für den Groups-Getter

Im Wiki gibt es unter den Beispielen (http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel#Beispiel_f.C3.BCr_die_Anzeige_der_Gruppenkonstellation_in_einer_ReadingsGroup) Perl-Code, den ich z.B. verwende, um die Gruppensituation auf der Oberfläche darzustellen (siehe Anhang).

Dort kannst du dir das zerlegen doch rausholen... es ist bei meinem pragmatischen Ansatz auch nicht schwer...
Da kann man sich schnell eine Prozedur schaffen, die einfach prüfen kann, ob zwei gegebene Playerdevices innerhalb derselben Gruppe stehen (sprich innerhalb einer []-Blocks):

sub sameGroup($$) {
my ($first, $second) = @_;
my $groups = CommandGet(undef, SONOS_getDeviceDefHash(undef)->{NAME}.' Groups');

while ($groups =~ m/\[(.*?)\]/ig) {
my @member = split(/, /, $1);

return 1 if (SONOS_isInList($first, @member) && SONOS_isInList($second, @member));
}
return 0;
}


@Christoph: Das mit der API wäre cool. Vieles muss man sich echt mühselig rauskramen und per Wireshark rumschnüffeln :) Es fehlen ja z.B. noch die Satellitenanbindung (das 5.1er System) im Modul...

Grüße
Reinerlein
Hallo Reiner,
das funktioniert perfekt! Klasse Sache!

Ach übrigens:
Das Bilden und Trennen von Stereopaaren funzt auch perfekt und ist zudem noch viel einfacher als wenn man das zu Fuß macht! Wenn jetzt noch der Sub konfiguriert werden könnte, wäre das obercool  8)...aber da gibt es mehrere Einstellmöglichkeiten, die man berücksichtigen müsste (Pegeleinstellung, Platzeinstellung, Lautsprechertyp und in Verbindung mit der Playbar noch weitere...)...aber das mit den Stereopaaren ist schon mal spitze!

Danke und Gruß,
Christian.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

KalleBlomquist

attr Sonos targetSpeakDir /mnt/SonosSpeak
attr Sonos targetSpeakURL \\192.168.x.x\SonosSpeak
attr Sonos targetSpeakFileTimestamp 1

Bei set Sonos_xxx Speak 10 de Hallo Test
Kommt dann immer "speak0 not possible. Please define valid "targetSpeakDir" and "targetSpeakURL" for Device "Sonos" first."

Die Rechte sind auf 777 gesetzt ...

Was kann das noch sein ?

Reinerlein

Hi KalleBlomquist,

du solltest das Modul mal updaten. Dieser Fehler wurde am 16.1. entfernt. Da war mir eine Überprüfung zu scharf geraten :)

Grüße
Reinerlein

KalleBlomquist

Hallo Reinerlein,

perfekt !!! Jetzt klappt es ...

Vielen Dank für Deine ganze Mühe hier  :)

VG
Kalle

Spartacus

Hallo zusammen,
ich habe mir überlegt, alle Devices nach einem einheitlichen Names-Schema in fhem anzulegen und damit auch die Sonos_Devices.

Meine Sonos Player heißen im Sonos selbst wie üblich "Wohnzimmer, Bad, Büro...etc"
Meine fhem Devices heißen jetzt aber z.B. "EG.wz.SON.ZP_120" für "Connect Amp im Wohnzimmer im EG" oder "OG.bz.SON.ZP_S1" für "Play 1 im Bad im OG". Der Vorteil dieser Namen ist, dass ich die Lokation und den Playertyp aus diesen Kürzeln ableiten kann.

Das funktioniert soweit auch ganz gut und die Devices reagieren wie gewohnt, allerdings hat die Sache einen Haken: Das SONOS Modul erkennt meine Player offenbar nicht richtig und meckert dies im fhem log an:
Please define Sonos_Wohnzimmer first
Please define Sonos_Bad first
etc...


Kann man das irgendwie abstellen? Ich würde schon ganz gerne an meinem Namensschema festhalten.

Danke,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

der-Lolo

ich glaube eher du hast irgendwo in der cfg, einer include oder in fhem.save noch verweise auf die namen sonos_Wohnzimmer etc.
dursuch diese dateien mal danach...

Spartacus

Hi der-Lolo
das dachte ich auch! Deshalb habe ich die fhem.save und die eventTypes.txt gelöscht!
Ich finde keinen Verweis auf die alten Namen und mein System ist noch sehr übersichtlich, da nur der Sonos auf diesem Gerät läuft.

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Reinerlein

Hi Christian,

hattest du beim Löschen der fhem.save-Datei auch Fhem vorher beendet?
Sonst wird die beim Beenden neu geschrieben. Lediglich die Config-Datei wird beim Beenden nicht automatisch geschrieben...

Grüße
Reinerlein

Spartacus

#1480
Hallo Reiner,
ja, das habe ich gemacht, ich habe keine Ahnung, wo die alten Namen herkommen..
hier mal die Sonos.cfg
#
# SONOS-Devices
#
define Sonos SONOS localhost:4711 30
attr Sonos group Sonos Devices
attr Sonos room 98-Sonos
attr Sonos sortby 1
attr Sonos targetSpeakDir /mnt/SonosSpeak
attr Sonos targetSpeakURL \\enterprise\SonosSpeak
attr Sonos verbose 3
#
#
# Bridge Keller
define KG.sr.SON.ZB_100 SONOSPLAYER RINCON_000E58EC309A01400_MR
attr KG.sr.SON.ZB_100 alias Bridge Keller
attr KG.sr.SON.ZB_100 group Sonos Devices
attr KG.sr.SON.ZB_100 model Bridge Keller
attr KG.sr.SON.ZB_100 room 98-Sonos
attr KG.sr.SON.ZB_100 sortby 2
#
#
# Bridge Garten
define GH.xx.SON.ZB_100 SONOSPLAYER RINCON_000E5865FFD401400_MR
attr GH.xx.SON.ZB_100 alias Bridge Gartenhaus
attr GH.xx.SON.ZB_100 group Sonos Devices
attr GH.xx.SON.ZB_100 model Sonos_ZB100
attr GH.xx.SON.ZB_100 room 98-Sonos
attr GH.xx.SON.ZB_100 sortby 3
#
#
# CONNECT:AMP, Wohnzimmer
define EG.wz.SON.ZP_120 SONOSPLAYER RINCON_000E583B374001400_MR
attr EG.wz.SON.ZP_120 alias Connect AMP Wohnzimmer
attr EG.wz.SON.ZP_120 getAlarms 1
attr EG.wz.SON.ZP_120 group Connect!AMP
attr EG.wz.SON.ZP_120 minVolume 0
attr EG.wz.SON.ZP_120 model Sonos_ZP120
attr EG.wz.SON.ZP_120 room 98-Sonos
#
#
# SUB, Wohnzimmer
define EG.wz.SON.SUB SONOSPLAYER RINCON_000E5898943A01400_MR
attr EG.wz.SON.SUB alias SUB Wohnzimmer
attr EG.wz.SON.SUB getAlarms 1
attr EG.wz.SON.SUB group Sonos Devices
attr EG.wz.SON.SUB minVolume 0
attr EG.wz.SON.SUB model Sonos_Sub
attr EG.wz.SON.SUB room 98-Sonos
#
#
# Play 1, Bad
define OG.bz.SON.ZP_S1 SONOSPLAYER RINCON_000E58C4F42E01400_MR
attr OG.bz.SON.ZP_S1 alias Play 1 Bad
attr OG.bz.SON.ZP_S1 getAlarms 1
attr OG.bz.SON.ZP_S1 group Play 1
attr OG.bz.SON.ZP_S1 minVolume 0
attr OG.bz.SON.ZP_S1 model Sonos_S1
attr OG.bz.SON.ZP_S1 room 98-Sonos
#
#
#
# Play 1, Schlafzimmer (links)
define OG.sz.SON.ZP_S1_L SONOSPLAYER RINCON_000E58C6EF1C01400_MR
attr OG.sz.SON.ZP_S1_L alias Play 1 Schlafzimmer, links
attr OG.sz.SON.ZP_S1_L getAlarms 1
attr OG.sz.SON.ZP_S1_L group Play 1
attr OG.sz.SON.ZP_S1_L minVolume 0
attr OG.sz.SON.ZP_S1_L model Sonos_S1
attr OG.sz.SON.ZP_S1_L room 98-Sonos
#
#
#
# Play 1, Schlafzimmer (rechts)
define OG.sz.SON.ZP_S1_R SONOSPLAYER RINCON_000E58C6F31C01400_MR
attr OG.sz.SON.ZP_S1_R alias Play 1 Schlafzimmer, rechts
attr OG.sz.SON.ZP_S1_R getAlarms 1
attr OG.sz.SON.ZP_S1_R group Play 1
attr OG.sz.SON.ZP_S1_R minVolume 0
attr OG.sz.SON.ZP_S1_R model Sonos_S1
attr OG.sz.SON.ZP_S1_R room 98-Sonos
#
#
#
# Play 1, Kind 2
define OG.kz.SON.ZP_S1 SONOSPLAYER RINCON_B8E9375131E201400_MR
attr OG.kz.SON.ZP_S1 alias Play 1 Kind 2
attr OG.kz.SON.ZP_S1 getAlarms 1
attr OG.kz.SON.ZP_S1 group Play 1
attr OG.kz.SON.ZP_S1 minVolume 0
attr OG.kz.SON.ZP_S1 model Sonos_S1
attr OG.kz.SON.ZP_S1 room 98-Sonos
#
#
#
# Play 1, Kind 1
define DG.kz.SON.ZP_S1 SONOSPLAYER RINCON_B8E937512F2201400_MR
attr DG.kz.SON.ZP_S1 alias Play 1 Kind 1
attr DG.kz.SON.ZP_S1 getAlarms 1
attr DG.kz.SON.ZP_S1 group Play 1
attr DG.kz.SON.ZP_S1 minVolume 0
attr DG.kz.SON.ZP_S1 model Sonos_S1
attr DG.kz.SON.ZP_S1 room 98-Sonos
#
#
#
# Play 3, Büro
define OG.br.SON.ZP_S3 SONOSPLAYER RINCON_000E58F084FC01400_MR
attr OG.br.SON.ZP_S3 alias Play 3 Büro
attr OG.br.SON.ZP_S3 getAlarms 1
attr OG.br.SON.ZP_S3 group Play 3
attr OG.br.SON.ZP_S3 minVolume 0
attr OG.br.SON.ZP_S3 model Sonos_S3
attr OG.br.SON.ZP_S3 room 98-Sonos
#
#
#
# Play 3, Terrasse
define KG.sk.SON.ZP_S3 SONOSPLAYER RINCON_000E58F224CE01400_MR
attr KG.sk.SON.ZP_S3 alias Play 3 Terrasse
attr KG.sk.SON.ZP_S3 getAlarms 1
attr KG.sk.SON.ZP_S3 group Play 3
attr KG.sk.SON.ZP_S3 minVolume 0
attr KG.sk.SON.ZP_S3 model Sonos_S3
attr KG.sk.SON.ZP_S3 room 98-Sonos
#
#
#
# weitere Konfiguration
# Sonos initialisieren
# siehe 99_mySonosUtils.pm
#
define SonosInit notify .*ZP.*:presence:.appeared  \
define Init_$NAME_Later at +00:02:00 \
{\
  my $reading =(ReadingsVal ("$NAME","playerType",""));;;;;;;;\
  if (($reading eq ("S1")) || ($reading eq ("S3")) || ($reading eq ("ZP120")))\
  {\
   if (ReadingsVal ("$NAME","currentTrackURI","") eq "")\
    {\
     SON_Init('$NAME', $reading)\
    }\
  }\
}
attr SonosInit disable 0
attr SonosInit group Sonos System
attr SonosInit room 98-Sonos
attr SonosInit sortby 1
#
#
# Schlafzimmergruppe setzen, wenn ein Teilnehmer vom Strom getrennt wurde.
#
define not.01.OG.sz.SON.ZP_S1_L notify (OG.sz.SON.ZP_S1_L|OG.bz.SON.ZP_S1):presence:.appeared \
{\
if (!defined ($defs{'at.01.OG.sz.SON.ZP_S1_L'}))\
{\
  define at.01.OG.sz.SON.ZP_S1_L at +00:05:00 \
  {\
   if (!sameGroup('OG.sz.SON.ZP_S1_L','OG.bz.SON.ZP_S1')) \
   {\
    fhem "set Sonos Groups [OG.sz.SON.ZP_S1_L, OG.bz.SON.ZP_S1]"\
   }\
  }\
}\
}
attr not.01.OG.sz.SON.ZP_S1_L alias erstelle Gruppe [Schlafzimmer Bad]
attr not.01.OG.sz.SON.ZP_S1_L group Sonos Script
attr not.01.OG.sz.SON.ZP_S1_L room 99-Dienste
#
#
# Kind 2´s Sonos morgens um 04:00 Uhr von Gruppe [Schlafzimmer Bad ] trennen.
#
define at.01.OG.kz.SON.ZP_S1 at *04:00 \
{\
  if (sameGroup('OG.kz.SON.ZP_S1','OG.sz.SON.ZP_S1_L')) \
  {\
   fhem "set Sonos Groups [OG.sz.SON.ZP_S1_L, OG.bz.SON.ZP_S1]"\
  }\
}


und die mySonosUtils
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub
mySonosUtils_Initialize($$)
{
my ($hash) = @_;
}
#
# prüfe gleiche Gruppe
#
sub sameGroup($$) {
my ($first, $second) = @_;
my $groups = CommandGet(undef, SONOS_getDeviceDefHash(undef)->{NAME}.' Groups');

while ($groups =~ m/\[(.*?)\]/ig) {
my @member = split(/, /, $1);

return 1 if (SONOS_isInList($first, @member) && SONOS_isInList($second, @member));
}
return 0;
}
#
# Sound-Grundeinstellungen
#
sub SON_Init($$)
{
my ($player, $typ) = @_;
if ($typ eq "S1")
{
  {fhem "set $player LoadRadio WDR2%20Ruhrgebiet"}
  {fhem "set $player Volume 5"}
  {fhem "set $player Treble 10"}
  {fhem "set $player Bass 3"}
  {fhem "set $player Balance 0"}
  {fhem "set $player Loudness 1"}
  {fhem "set $player LEDState 0"}
}
if ($typ eq "S3")
{
  {fhem "set $player LoadRadio WDR2%20Ruhrgebiet"}
  {fhem "set $player Volume 10"}
  {fhem "set $player Treble 10"}
  {fhem "set $player Bass 3"}
  {fhem "set $player Balance 0"}
  {fhem "set $player Loudness 1"}
  {fhem "set $player LEDState 0"}
}
if ($typ eq "ZP120")
{
  {fhem "set $player LoadRadio WDR2%20Ruhrgebiet"}
  {fhem "set $player Volume 20"}
  {fhem "set $player Treble 10"}
  {fhem "set $player Bass 5"}
  {fhem "set $player Balance 0"}
  {fhem "set $player Loudness 1"}
  {fhem "set $player LEDState 0"}
}
}
#
# Reduce Volume
#
sub Reduce_Volume($$)
{
my ($player, $time) = @_;
  {
   fhem ("define ReduceVolume$player at +$time
    set Sonos_$player Volume 1 1;;
    set Sonos_$player SleepTimer 02:00:00")
}
}
#
#
# Sleeptimer
#
sub SleepTimer($$$$$)
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my ($player, $ST_offset, $ST_offset_we, $VolDown_offset, $VolDown_offset_we) = @_;
if (($wday == 5) || 
     ($wday == 6) ||
     (Value("SchulferienStart") == 1) ||
     ((Value("Ferientag") == 1) && (Value("SchulferienEnde")!~1)) ||
     (fhem("get Feiertag tomorrow") !~ m/none/))
  {
   fhem ("define ReduceVolume$player at +$VolDown_offset_we
    set Sonos_$player Volume 1 1;;
    set Sonos_$player SleepTimer $ST_offset_we")
  }
else
  {
   fhem ("define ReduceVolume$player at +$VolDown_offset
    set Sonos_$player Volume 1 1;;
    set Sonos_$player SleepTimer $ST_offset")
  }
}
1;


und mehr läuft auf dem rpi derzeit nicht. Es gibt m.E. keinen Verweis auf die Sonos_<Gerätename>.Im log werden alle ehemaligen Gerätenamen angemeckert...

Gruß,
Christian.

P.S. In der Konfig "Schlafzimmergruppe setzen" ist noch ein Syntaxfehler, aber das kann nicht der Fehler sein!

NACHTRAG:
hier noch das Logfile
2015.01.23 14:49:38 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2015.01.23 14:49:38 0: Server started with 24 defined entities (version $Id: fhem.pl 7609 2015-01-17 21:37:05Z rudolfkoenig $, os linux, user fhem, pid 2289)
2015.01.23 14:49:38 1: SONOS0: Kein UPnP-Server gefunden... Starte selber einen und warte 8 Sekunde(n) darauf...
2015.01.23 14:49:46 3: Opening Sonos device localhost:4711
2015.01.23 14:49:46 3: Can't connect to localhost:4711: Connection refused
2015.01.23 14:50:49 1: localhost:4711 reappeared (Sonos)
2015.01.23 14:51:02 3: Please define Sonos_Terrasse first
2015.01.23 14:51:07 3: Please define Sonos_Kind2 first
2015.01.23 14:51:15 3: not.01.OG.sz.SON.ZP_S1_L return value: syntax error at (eval 132) line 5, near ""define at.01.OG.sz.SON.ZP_S1_L at +00:05:00"
  {"
syntax error at (eval 132) line 11, near "}
}"

2015.01.23 14:51:15 3: Please define Sonos_Bad first
2015.01.23 14:51:22 3: Please define Sonos_Wohnzimmer_SW first
2015.01.23 14:51:25 3: Please define Sonos_Keller first
2015.01.23 14:51:32 3: Please define Sonos_Kind1 first
2015.01.23 14:51:39 3: Please define Sonos_Schlafzimmer_RF first
2015.01.23 14:51:46 3: Please define Sonos_Buero first
2015.01.23 14:51:53 3: Please define Sonos_Wohnzimmer first
2015.01.23 14:52:00 3: not.01.OG.sz.SON.ZP_S1_L return value: syntax error at (eval 156) line 5, near ""define at.01.OG.sz.SON.ZP_S1_L at +00:05:00"
  {"
syntax error at (eval 156) line 11, near "}
}"

2015.01.23 14:52:00 3: Please define Sonos_Schlafzimmer first
2015.01.23 14:52:46 3: Please define Sonos_Kind1 first
2015.01.23 14:52:54 3: Please define Sonos_Kind1 first
2015.01.23 14:53:02 3: Please define Sonos_Buero first
2015.01.23 14:53:10 3: Please define Sonos_Buero first
2015.01.23 14:53:19 3: Please define Sonos_Bad first
2015.01.23 14:53:26 3: Please define Sonos_Bad first
2015.01.23 14:54:05 3: Please define Sonos_Terrasse first
2015.01.23 14:54:12 3: Please define Sonos_Terrasse first
2015.01.23 14:54:25 3: Please define Sonos_Schlafzimmer first
2015.01.23 14:54:32 3: Please define Sonos_Schlafzimmer first
2015.01.23 15:01:04 3: Please define Sonos_Schlafzimmer_RF first
2015.01.23 15:01:11 3: Please define Sonos_Schlafzimmer_RF first
2015.01.23 15:02:45 3: Please define Sonos_Kind2 first
2015.01.23 15:02:53 3: Please define Sonos_Kind2 first
2015.01.23 15:03:01 3: Please define Sonos_Wohnzimmer first
2015.01.23 15:03:10 3: Please define Sonos_Wohnzimmer first
2015.01.23 15:04:21 3: Please define Sonos_Wohnzimmer_SW first
2015.01.23 15:04:28 3: Please define Sonos_Wohnzimmer_SW first
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Reinerlein

Hallo Christian,

kannst du den globalen Verbose-Level mal hochsetzen? Dann sieht man vor dieser Fehlermeldung, was Fhem dort eigentlich machen wollte.
Vielleicht erkennt man daran, wo das herkommt...

Grüße
Reiner

oliverk


Vielleicht habe ich es grad nicht gefunden. Ist es möglich die aktuelle Auswahl mit einem set Befehl den Sonos-Favoriten hinzuzufügen ?
Habe mit dem Windows Phone einen Radiosender gewählt. Leider kann die blöde App nicht zu den Favoriten hinzufügen.


Oliver

Fhem: 5.7 auf RaspPi / Fhem: 5.7 auf Cubie
ca. 80 net4home Buskomponenten
zum Spielen diverse FS20, HomeMatic, EnOcean, hue Geräte, Fritz!Box 7490, Fritz!Dect 200, netatmo, eve

Spartacus

Zitat von: Reinerlein am 23 Januar 2015, 16:03:43
Hallo Christian,

kannst du den globalen Verbose-Level mal hochsetzen? Dann sieht man vor dieser Fehlermeldung, was Fhem dort eigentlich machen wollte.
Vielleicht erkennt man daran, wo das herkommt...

Grüße
Reiner
Hallo,
hier mal der Bereich aus dem Log bei Level 5:
2015.01.23 17:50:11 5: Cmd: >define Init_$NAME_Later at +00:02:00
{
  my $reading =(ReadingsVal ("$NAME","playerType",""));;
  if (($reading eq ("S1")) || ($reading eq ("S3")) || ($reading eq ("ZP120")))
  {
   if (ReadingsVal ("$NAME","currentTrackURI","") eq "")
    {
     SON_Init('$NAME', $reading)
    }
  }
}<
2015.01.23 17:50:11 5: Triggering global (1 changes)
2015.01.23 17:50:11 5: Notify loop for global DEFINED Init_EG.wz.SON.ZP_120_Later
2015.01.23 17:50:11 4: eventTypes: SONOSPLAYER EG.wz.SON.ZP_120 presence: appeared -> presence: appeared
2015.01.23 17:50:11 3: Please define Sonos_Wohnzimmer first


Es scheint irgendetwas mit meiner Init_Routine zu tun zu haben, aber ich wüsste nicht, wie er auf den Namen "Sonos-Wohnzimmer" kommt!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Reinerlein

Hallo Christian,

was mich ein bißchen wundert ist das $NAME im Log. Eigentlich sollte die Variable doch schon ersetzt sein, oder?
Vielleicht mal in deine myUtils auslagern, und im Notify $NAME als Parameter weiterreichen (Perl-Anführungsstriche um $NAME nicht vergessen, da es einfach String-Ersetzt wird)?

@Oliver: Diese Richtung habe ich nur für das Speichern im Playlist-Bereich eingebaut. Gerade bei den Favoriten muss man ja genau angeben, was man eigentlich jetzt in dem Favoriten ablegen möchte (Einschließlich eines Namens dafür). Das erschien mir immer etwas undurchsichtig bzw. umständlich zu handhaben.

Grüße
Reiner