From 391c05a1ca59f56bf9ab4217cc3e7ea8581fc616 Mon Sep 17 00:00:00 2001 From: mgehre <> Date: Tue, 30 Jul 2013 15:37:20 +0000 Subject: [PATCH] CUL_MAX: fix fake* groupId git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@3548 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/14_CUL_MAX.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/FHEM/14_CUL_MAX.pm b/FHEM/14_CUL_MAX.pm index 1b13a23e1..277690833 100644 --- a/FHEM/14_CUL_MAX.pm +++ b/FHEM/14_CUL_MAX.pm @@ -173,13 +173,16 @@ CUL_MAX_Set($@) } elsif($setting ~~ ["fakeSC", "fakeWT"]) { return "Invalid number of arguments" if(@args == 0); my $dest = $args[0]; + my $destname; #$dest may be either a name or an address if(exists($defs{$dest})) { return "Destination is not a MAX device" if($defs{$dest}{TYPE} ne "MAX"); + $destname = $dest; $dest = $defs{$dest}{addr}; } else { $dest = lc($dest); #address to lower-case return "No MAX device with address $dest" if(!exists($modules{MAX}{defptr}{$dest})); + $destname = $modules{MAX}{defptr}{$dest}{NAME}; } if($setting eq "fakeSC") { @@ -187,7 +190,7 @@ CUL_MAX_Set($@) return "Invalid fakeSCaddr attribute set (must not be 000000)" if(CUL_MAX_fakeSCaddr($hash) eq "000000"); my $state = $args[1] ? "12" : "10"; - my $groupid = ReadingsVal($hash,"groupid",0); + my $groupid = ReadingsVal($destname,"groupid",0); return CUL_MAX_Send($hash, "ShutterContactState",$dest,$state, groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "06" ), src => CUL_MAX_fakeSCaddr($hash)); } elsif($setting eq "fakeWT") { @@ -202,7 +205,7 @@ CUL_MAX_Set($@) #First bit is 9th bit of temperature, rest is desiredTemperature my $arg1 = (($arg2&0x100)>>1) | (int(2*$args[1])&0x7F); $arg2 &= 0xFF; #only take the lower 8 bits - my $groupid = ReadingsVal($hash,"groupid",0); + my $groupid = ReadingsVal($destname,"groupid",0); return CUL_MAX_Send($hash,"WallThermostatControl",$dest, sprintf("%02x%02x",$arg1,$arg2), groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "00" ), src => CUL_MAX_fakeWTaddr($hash));