diff --git a/fhem/FHEM/00_SONOS.pm b/fhem/FHEM/00_SONOS.pm index e4485eee7..7b47b8216 100755 --- a/fhem/FHEM/00_SONOS.pm +++ b/fhem/FHEM/00_SONOS.pm @@ -47,6 +47,8 @@ # Changelog # # SVN-History: +# 16.01.2015 +# Speak hatte eine fehlerhafte Überprüfung der Attribute, und konnte nicht ausgeführt werden. # 15.01.2015 # Für die Setter "LoadPlaylist", "StartPlaylist", "LoadRadio", "StartRadio" und "StartFavourite" kann man jetzt anstatt des Namens einen regulären Ausdruck verwenden. # Beim Erkennen der Player werden einige Abspielreadings ("transportState", "currentTrackURI", "currentTrackDuration", "currentTrackPosition", "currentTrack", "numberOfTracks", "currentStreamAudio" und "currentNormalAudio") nun direkt abgeholt, und werden somit aktuell korrekt gesetzt. diff --git a/fhem/FHEM/21_SONOSPLAYER.pm b/fhem/FHEM/21_SONOSPLAYER.pm index d1a82c9cc..8659c07ed 100755 --- a/fhem/FHEM/21_SONOSPLAYER.pm +++ b/fhem/FHEM/21_SONOSPLAYER.pm @@ -638,21 +638,21 @@ sub SONOSPLAYER_Set($@) { SONOS_DoWork($udn, 'addURIToQueue', $value); } elsif ((lc($key) eq 'speak') || ($key =~ m/speak\d+/i)) { - $key = 'speak0' if (lc($key) eq 'speak'); - - $hash = SONOSPLAYER_GetRealTargetPlayerHash($hash); - $udn = $hash->{UDN}; - - # Hier die komplette restliche Zeile in den zweiten Parameter packen, da damit auch Leerzeichen möglich sind - my $text = ''; - for(my $i = 4; $i < @a; $i++) { - $text .= ' '.$a[$i]; - } - my $sonosName = SONOS_getDeviceDefHash(undef)->{NAME}; - if ((ReadingsVal($sonosName, 'targetSpeakDir', '') eq '') || (ReadingsVal($sonosName, 'targetSpeakURL', '') eq '')) { - return $key.' not possible. Please define valid "targetSpeakDir" and "targetSpeakURL" for Device "'.$sonosName.'" first.'; + if ((AttrVal($sonosName, 'targetSpeakDir', '') eq '') || (AttrVal($sonosName, 'targetSpeakURL', '') eq '')) { + return $key.' not possible. Please define valid "targetSpeakDir"- and "targetSpeakURL"-Attribute for Device "'.$sonosName.'" first.'; } else { + $key = 'speak0' if (lc($key) eq 'speak'); + + $hash = SONOSPLAYER_GetRealTargetPlayerHash($hash); + $udn = $hash->{UDN}; + + # Hier die komplette restliche Zeile in den Text-Parameter packen, da damit auch Leerzeichen möglich sind + my $text = ''; + for(my $i = 4; $i < @a; $i++) { + $text .= ' '.$a[$i]; + } + SONOS_DoWork($udn, lc($key), $value, $value2, $text); } } elsif (lc($key) eq 'alarm') {