mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 07:19:24 +00:00
MAX: fakeWT uses general temperature handling to support "on" and "off"
git-svn-id: https://svn.fhem.de/fhem/trunk@3820 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
de2f83356a
commit
84c1db55f8
@ -191,24 +191,30 @@ CUL_MAX_Set($@)
|
|||||||
|
|
||||||
my $state = $args[1] ? "12" : "10";
|
my $state = $args[1] ? "12" : "10";
|
||||||
my $groupid = ReadingsVal($destname,"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") {
|
||||||
return "Invalid number of arguments" if(@args != 3);
|
return "Invalid number of arguments" if(@args != 3);
|
||||||
return "desiredTemperature is invalid" if($args[1] < 4.5 || $args[2] > 30.5);
|
return "desiredTemperature is invalid" if(!validTemperature($args[1]));
|
||||||
return "Invalid fakeWTaddr attribute set (must not be 000000)" if(CUL_MAX_fakeWTaddr($hash) eq "000000");
|
return "Invalid fakeWTaddr attribute set (must not be 000000)" if(CUL_MAX_fakeWTaddr($hash) eq "000000");
|
||||||
|
|
||||||
|
#Valid range for measured temperature is 0 - 51.1 degree
|
||||||
$args[2] = 0 if($args[2] < 0); #Clamp temperature to minimum of 0 degree
|
$args[2] = 0 if($args[2] < 0); #Clamp temperature to minimum of 0 degree
|
||||||
|
|
||||||
#Encode into binary form
|
#Encode into binary form
|
||||||
my $arg2 = int(10*$args[2]);
|
my $arg2 = int(10*$args[2]);
|
||||||
#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*MAX_ParseTemperature($args[1]))&0x7F);
|
||||||
$arg2 &= 0xFF; #only take the lower 8 bits
|
$arg2 &= 0xFF; #only take the lower 8 bits
|
||||||
my $groupid = ReadingsVal($destname,"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));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user