96_Snapcast: fix group volume

git-svn-id: https://svn.fhem.de/fhem/trunk@26284 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2022-08-03 20:19:28 +00:00
parent aff2e34dc3
commit b24a0c45ac

View File

@ -26,11 +26,11 @@ package FHEM::Media::Snapcast; ## no critic 'Package declaration'
use strict; use strict;
use warnings; use warnings;
use Scalar::Util qw(looks_like_number); use Scalar::Util qw( looks_like_number );
use Time::HiRes qw(gettimeofday); use Time::HiRes qw( gettimeofday );
use DevIo; use DevIo;
use JSON (); use JSON ();
use GPUtils qw(GP_Import); use GPUtils qw( GP_Import );
use List::Util qw( max min ); use List::Util qw( max min );
@ -266,14 +266,14 @@ sub Set {
keys %{ $hash->{READINGS} }; keys %{ $hash->{READINGS} };
my @group; my @group;
for my $sid ( @ids ) { for my $sid ( @ids ) {
#= devspec2array("TYPE=Snapcast:FILTER=group=$client"); my $gr = ReadingsVal($name, $sid, '');
#next if ReadingsVal($name, $_, '') ne $client; if ( $client eq $gr ) {
#clients_84a93e695051#2_group 207ff3bc-5082-789c-c444-29471f4ce57e $sid =~ m{\Aclients_(.+)_group\z}xms;
if ( $sid =~ m{\Aclients_(.+)_group\z}xms ) { push @group, $1;
push @group, $1; };
} #clients_84a93e695051_2_group a269028b-7078-210f-0e75-54acd507faaa
} }
#Log3( $hash, 3, "Snap: groups are @group" ); Log3( $hash, 5, "Snap: group members for arg. $client are @group within @ids");
if ( @group ) { if ( @group ) {
if ( $opt eq 'volume' && looks_like_number($value) && $value !~ m{[+-]}x ) { if ( $opt eq 'volume' && looks_like_number($value) && $value !~ m{[+-]}x ) {
#Log3($hash,3,"SNAP: Group absolute volume command, volume: $value"); #Log3($hash,3,"SNAP: Group absolute volume command, volume: $value");
@ -760,10 +760,6 @@ sub _setClient {
# check if volume was given as increment or decrement, then find out current volume and calculate new volume # check if volume was given as increment or decrement, then find out current volume and calculate new volume
if ( $value =~ m{\A([+-])(\d{1,2})\z}x ) { if ( $value =~ m{\A([+-])(\d{1,2})\z}x ) {
#my $direction = $1;
#my $amount = $2;
#$value = eval($currentVol. $direction. $amount);
$value += $currentVol; $value += $currentVol;
$value = max( 0, min( 100, $value ) ); $value = max( 0, min( 100, $value ) );
} }
@ -778,8 +774,9 @@ sub _setClient {
$value = $currentVol - $step; $value = $currentVol - $step;
} }
$value = max( 0, min( 100, $value ) ); $value = max( 0, min( 100, $value ) );
$muteState = 'false' if $value > 0 && ( $muteState eq 'true' || $muteState == 1 ); $muteState = 'false' if ( $value > 0 && ( $muteState eq 'true' || $muteState == 1 ));
} }
return if !looks_like_number($value);
$volumeobject->{percent} = $value + 0; $volumeobject->{percent} = $value + 0;
$value = $volumeobject; $value = $volumeobject;
} }