diff --git a/fhem/CHANGED b/fhem/CHANGED index 91e5d924e..0c078d40a 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - change: 70_DENON_AVR: improved soundMode readings (thx Shadow3561) - bugfix: 21_HEOSMaster: fix rename passwordstore bug - bugfix: 73_GardenaSmartBridge: fix rename passwordstore bug - feature: 73_WaterCalculator: New Attribute DecimalPlace diff --git a/fhem/FHEM/70_DENON_AVR.pm b/fhem/FHEM/70_DENON_AVR.pm index 01ffd7ef6..3311033c9 100755 --- a/fhem/FHEM/70_DENON_AVR.pm +++ b/fhem/FHEM/70_DENON_AVR.pm @@ -458,7 +458,8 @@ my $DENON_db = { 'SUP03' => 'resolution3', 'SUP04' => 'resolution4', }, - 'FRM' => 'firmware', + 'FRMAVR' => 'firmware_AVR', + 'FRMDTS' => 'firmware_DTS', 'AIS' => { 'FSV' => 'samplingRate', 'FOR' => 'audioFormat', @@ -1541,12 +1542,35 @@ DENON_AVR_Parse(@) readingsBulkUpdate($hash, "Volume-Max", $2.$percent); $return = "Volume-Max".$2; } - #Einschaltlautstärke + #Einschaltlautstärke elsif ($msg =~ /^SSVCTZMAPON (.+)/) { - readingsBulkUpdate($hash, "Volume-Startup", $1); - $return = "Volume-Startup ".$1; - } + + my $mutelevel = $1; + + if($1 eq 'LAS') + { + readingsBulkUpdate($hash, "Volume-Startup", "last") if($mutelevel ne "unknown"); + $return = "Volume-Startup"."$1"; + + } + elsif($1 eq 'MUT') + { + readingsBulkUpdate($hash, "Volume-Startup", "mute") if($mutelevel ne "unknown"); + $return = "Volume-Startup"."$1"; + + } + else + { + if (length($mutelevel) == 2) + { + $mutelevel = $mutelevel.""; + + readingsBulkUpdate($hash, "Volume-Startup", $mutelevel) if($mutelevel ne "unknown"); + $return = "Volume-Startup".$mutelevel; + } + } + } #Volume elsif ($msg =~ /^MV(.+)/) { @@ -1721,7 +1745,7 @@ DENON_AVR_Parse(@) $return = "smartselect ".$quick; } } - #Sound + #Sound elsif ($msg =~ /^MS(.+)/) { my $sound = DENON_GetValue('SOUND', $1); @@ -1732,8 +1756,8 @@ DENON_AVR_Parse(@) } if ($sound ne "unknown") { - readingsBulkUpdate($hash, "sound", $sound); - $return = "sound ".$sound; + readingsBulkUpdate($hash, "sound_out", $sound); + $return = "sound_out ".$sound; } } #tuner band @@ -2055,8 +2079,13 @@ DENON_AVR_Parse(@) # } elsif ($1 eq 'INF') # SSINFFRM 0000-0000-0000-00 { - #Firmware - if ($2 eq "FRM") { # SSINFFRM 0000-0000-0000-00 + #Firmware_AVR + if ($2 eq "FRMAVR") { # SSINFFRMAVR 0000-0000-0000-00 + my $status = DENON_GetValue('SS', $1, $2); + readingsBulkUpdate($hash, $status, $3) if($status ne "unknown"); + $return = $status." ".$3; + } + if ($2 eq "FRMDTS") { # SSINFFRMDTS 0.00.00.00 my $status = DENON_GetValue('SS', $1, $2); readingsBulkUpdate($hash, $status, $3) if($status ne "unknown"); $return = $status." ".$3; @@ -2070,18 +2099,18 @@ DENON_AVR_Parse(@) if ($1 eq 'AIS') { - #input signal + #input signal if ($2 eq 'SIG') { my $signal = DENON_GetValue('SS', $cmd1, $1, $2, $value); - readingsBulkUpdate($hash, "signal", $signal) if($signal ne "unknown"); - $return = "signal ".$signal; + readingsBulkUpdate($hash, "sound_signal_in", $signal) if($signal ne "unknown"); + $return = "sound_signal_in ".$signal; if($signal =~ /^na (.+)/) { - my $sound = ReadingsVal( $name, "sound", "?" ); - Log3 $name, 2, "DENON_AVR $name: unknown input signal <$1>, sound <$sound>."; + my $sound = ReadingsVal( $name, "sound_out", "?" ); + Log3 $name, 2, "DENON_AVR $name: unknown input signal <$1>, sound_out <$sound>."; } - } + } # samplingRate, audioFormat elsif ($2 eq 'FSV' || $2 eq 'FOR') { @@ -2219,7 +2248,7 @@ DENON_AVR_Get($@) return "argument is missing" if (int(@a) < 2 && int(@a) > 3); - if ($a[1] =~ /^(power|volumeStraight|volume|mute|eco|display|input|disconnect|reconnect|remotecontrol|autoStandby|sound|statusRequest|mediaInfo|surroundMode|zone)$/) + if ($a[1] =~ /^(power|volumeStraight|volume|mute|eco|display|input|disconnect|reconnect|remotecontrol|autoStandby|sound_out|statusRequest|mediaInfo|surroundMode|zone)$/) { if ($a[1] eq "statusRequest") { @@ -2288,7 +2317,7 @@ DENON_AVR_Get($@) push(@inputs, $key); } } - return "Unknown argument $a[1], choose one of power volumeStraight volume mute eco display input disconnect reconnect remotecontrol autoStandby sound statusRequest mediaInfo surroundMode zone:2,3,4"; + return "Unknown argument $a[1], choose one of power volumeStraight volume mute eco display input disconnect reconnect remotecontrol autoStandby sound_out statusRequest mediaInfo surroundMode zone:2,3,4"; } }