CUL_MAX: fix fake* groupId

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@3548 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
mgehre 2013-07-30 15:37:20 +00:00
parent 33c4b61059
commit 391c05a1ca

View File

@ -173,13 +173,16 @@ CUL_MAX_Set($@)
} elsif($setting ~~ ["fakeSC", "fakeWT"]) { } elsif($setting ~~ ["fakeSC", "fakeWT"]) {
return "Invalid number of arguments" if(@args == 0); return "Invalid number of arguments" if(@args == 0);
my $dest = $args[0]; my $dest = $args[0];
my $destname;
#$dest may be either a name or an address #$dest may be either a name or an address
if(exists($defs{$dest})) { if(exists($defs{$dest})) {
return "Destination is not a MAX device" if($defs{$dest}{TYPE} ne "MAX"); return "Destination is not a MAX device" if($defs{$dest}{TYPE} ne "MAX");
$destname = $dest;
$dest = $defs{$dest}{addr}; $dest = $defs{$dest}{addr};
} else { } else {
$dest = lc($dest); #address to lower-case $dest = lc($dest); #address to lower-case
return "No MAX device with address $dest" if(!exists($modules{MAX}{defptr}{$dest})); return "No MAX device with address $dest" if(!exists($modules{MAX}{defptr}{$dest}));
$destname = $modules{MAX}{defptr}{$dest}{NAME};
} }
if($setting eq "fakeSC") { 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"); return "Invalid fakeSCaddr attribute set (must not be 000000)" if(CUL_MAX_fakeSCaddr($hash) eq "000000");
my $state = $args[1] ? "12" : "10"; 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)); 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") { } elsif($setting eq "fakeWT") {
@ -202,7 +205,7 @@ CUL_MAX_Set($@)
#First bit is 9th bit of temperature, rest is desiredTemperature #First bit is 9th bit of temperature, rest is desiredTemperature
my $arg1 = (($arg2&0x100)>>1) | (int(2*$args[1])&0x7F); my $arg1 = (($arg2&0x100)>>1) | (int(2*$args[1])&0x7F);
$arg2 &= 0xFF; #only take the lower 8 bits $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, 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)); sprintf("%02x%02x",$arg1,$arg2), groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "00" ), src => CUL_MAX_fakeWTaddr($hash));