From b8a0f685a0a5c13315b1aec7bfbee086eaf0f252 Mon Sep 17 00:00:00 2001 From: rleins <> Date: Fri, 16 Jan 2015 08:29:32 +0000 Subject: [PATCH] Sonos: Correct wrong attribute-check during speak execution git-svn-id: https://svn.fhem.de/fhem/trunk@7587 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_SONOS.pm | 2 ++ fhem/FHEM/21_SONOSPLAYER.pm | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) 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') {