From 84c1db55f82ffcbfbe30d3db05197e947442f55c Mon Sep 17 00:00:00 2001 From: mgehre <> Date: Thu, 29 Aug 2013 20:15:28 +0000 Subject: [PATCH] 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 --- fhem/FHEM/14_CUL_MAX.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/14_CUL_MAX.pm b/fhem/FHEM/14_CUL_MAX.pm index 2a82ca44b..2daaa8003 100644 --- a/fhem/FHEM/14_CUL_MAX.pm +++ b/fhem/FHEM/14_CUL_MAX.pm @@ -191,24 +191,30 @@ CUL_MAX_Set($@) my $state = $args[1] ? "12" : "10"; 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") { 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"); + #Valid range for measured temperature is 0 - 51.1 degree $args[2] = 0 if($args[2] < 0); #Clamp temperature to minimum of 0 degree #Encode into binary form my $arg2 = int(10*$args[2]); #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 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)); + sprintf("%02x%02x",$arg1,$arg2), groupId => sprintf("%02x",$groupid), + flags => ( $groupid ? "04" : "00" ), + src => CUL_MAX_fakeWTaddr($hash)); } } else {