diff --git a/fhem/FHEM/73_MPD.pm b/fhem/FHEM/73_MPD.pm index 244add87e..6f56a1e55 100644 --- a/fhem/FHEM/73_MPD.pm +++ b/fhem/FHEM/73_MPD.pm @@ -17,7 +17,7 @@ # GNU General Public License for more details. ################################################################ -# Version 0.8 - 01.02.14 +# Version 0.9 - 15.02.14 package main; @@ -132,8 +132,10 @@ sub MPD_updateConfig($) $hash->{".playlist"} = ""; $hash->{".music"} = ""; $hash->{".outputs"} = ""; + $hash->{".lasterror"} = ""; $hash->{".lcd"} = AttrVal($name, "lcdDevice", undef); $hash->{PRESENT} = 0; + $hash->{VOLUME} = 0; ## kommen wir via reset Kommando ? if ($hash->{".reset"}) @@ -153,12 +155,15 @@ sub MPD_updateConfig($) # Playlisten und Dateien laden ? - $error = mpd_cmd($hash, "i|lsinfo|music") if (AttrVal($name, "loadMusic", 0) && !$error); - Log 3 ,"$name could not load music -> $error" if ($error); - - $error = mpd_cmd($hash, "i|lsinfo|playlists") if (AttrVal($name, "loadPlaylists", 0) && !$error); - Log 3 ,"$name could not load playlists -> $error" if ($error); - + if (AttrVal($name, "loadMusic", 0) && !$error) + { $error = mpd_cmd($hash, "i|lsinfo|music"); + Log 3 ,"$name could not load music -> $error" if ($error); + } + if (AttrVal($name, "loadPlaylists", 0) && !$error) + { + $error = mpd_cmd($hash, "i|lsinfo|playlists"); + Log 3 ,"$name could not load playlists -> $error" if ($error); + } if (!$error) { @@ -216,7 +221,7 @@ sub MPD_Undef ($$) { sub MPD_GetUpdate($) { my ($hash) = @_; my $name = $hash->{NAME}; - + my $lasterror = $hash->{".lasterror"}; my $error = mpd_cmd($hash, "status"); @@ -227,10 +232,18 @@ sub MPD_GetUpdate($) { $error = mpd_cmd($hash, "currentsong"); } - readingsSingleUpdate($hash,"state",$hash->{STATE},1); + readingsBeginUpdate($hash); + readingsBulkUpdate($hash, "state", $hash->{STATE}); + readingsBulkUpdate($hash, "error", $error) if ($error); + readingsEndUpdate($hash, 1); - Log 3 , "$name, $error" if ($error); + if ($error && ($error ne $lasterror)) + { + Log 3 , "$name, $error"; + $hash->{".lasterror"} = $error; + } + InternalTimer(gettimeofday()+$hash->{INTERVAL}, "MPD_GetUpdate", $hash, 0) if ($hash->{INTERVAL}); my_lcd($hash) if (defined($hash->{".lcd"})); @@ -242,6 +255,7 @@ sub MPD_GetUpdate($) { Log 4 , "$name IdleStart with PID : ".$hash->{helper}{RUNNING_PID}{pid}; } + return; } @@ -832,7 +846,7 @@ sub MPD_summaryFn($$$$) {
set <name> <what>
get <name> <what>