From 7a19d04c9d26f9ebaa4b53dcdb528ecd69019a03 Mon Sep 17 00:00:00 2001 From: mgehre <> Date: Fri, 15 Feb 2013 03:20:32 +0000 Subject: [PATCH] MAX: Fix default values for min/maxTemperature git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@2730 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/10_MAX.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/FHEM/10_MAX.pm b/FHEM/10_MAX.pm index dacc91b12..fb076d744 100755 --- a/FHEM/10_MAX.pm +++ b/FHEM/10_MAX.pm @@ -39,8 +39,8 @@ sub validDecalcification { my ($decalcDay, $decalcHour) = ($_[0] =~ /^(...) (\d{ sub validWeekProfile { return length($_[0]) == 4*13*7; } my %readingDef = ( #min/max/default - "maximumTemperature" => [ \&validTemperature, 30.5], - "minimumTemperature" => [ \&validTemperature, 4.5], + "maximumTemperature" => [ \&validTemperature, "on"], + "minimumTemperature" => [ \&validTemperature, "off"], "comfortTemperature" => [ \&validTemperature, 21], "ecoTemperature" => [ \&validTemperature, 17], "windowOpenTemperature" => [ \&validTemperature, 12], @@ -139,6 +139,7 @@ MAX_CheckIODev($) return !defined($hash->{IODev}) || ($hash->{IODev}{TYPE} ne "MAXLAN" && $hash->{IODev}{TYPE} ne "CUL_MAX"); } +#Idenitify for numeric values and maps "on" and "off" to their temperatures sub MAX_ParseTemperature($) { @@ -153,6 +154,8 @@ MAX_Validate(@) return $readingDef{$name}[0]->($val); } +#Get a reading, validating it's current value (maybe forcing to the default if invalid) +#"on" and "off" are converted to their numeric values sub MAX_ReadingsVal(@) { @@ -417,8 +420,7 @@ MAX_Set($@) my $temperature = $controlpoints[$j]; return "Invalid time: $controlpoints[$j+1]" if(!defined($hour) || !defined($min) || $hour > 23 || $min > 59); return "Invalid temperature" if(!validTemperature($temperature)); - $temperature = 4.5 if($temperature eq "off"); - $temperature = 30.5 if($temperature eq "on"); + $temperature = MAX_ParseTemperature($temperature); #replace "on" and "off" by their values $newWeekprofilePart .= sprintf("%04x", (int($temperature*2) << 9) | int(($hour * 60 + $min)/5)); } Log GetLogLevel($hash->{NAME}, 5), "New Temperature part for $day: $newWeekprofilePart";