From 89c225d75271b73634d8e89bb18e5e859b1997da Mon Sep 17 00:00:00 2001 From: mgehre <> Date: Thu, 23 Apr 2015 21:54:14 +0000 Subject: [PATCH] MAX: add 'set desiredTemperature manual ' to override keepAuto git-svn-id: https://svn.fhem.de/fhem/trunk@8473 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_MAX.pm | 63 +++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/fhem/FHEM/10_MAX.pm b/fhem/FHEM/10_MAX.pm index a15be0baf..5a14da233 100755 --- a/fhem/FHEM/10_MAX.pm +++ b/fhem/FHEM/10_MAX.pm @@ -261,12 +261,6 @@ MAX_Set($@) my $until = undef; my $ctrlmode = 1; #0=auto, 1=manual; 2=temporary - if(AttrVal($hash->{NAME},"keepAuto","0") ne "0" - && MAX_ReadingsVal($hash,"mode") eq "auto") { - Log3 $hash, 5, "MAX_Set: staying in auto mode"; - $ctrlmode = 0; #auto - } - if($args[0] eq "auto") { #This enables the automatic/schedule mode where the thermostat follows the weekly program @@ -282,19 +276,31 @@ MAX_Set($@) } elsif(@args == 1) { $temperature = 0; #use temperature from weekly program } else { - return "To many parameters: desiredTemperature auto []"; + return "Too many parameters: desiredTemperature auto []"; } $ctrlmode = 0; #auto + } elsif($args[0] eq "boost") { + return "Too many parameters: desiredTemperature boost" if(@args > 1); + $temperature = 0; + $ctrlmode = 3; + #TODO: auto mode with temperature is also possible + } else { + if($args[0] eq "manual") { + #User explicitly asked for manual mode + $ctrlmode = 1; #manual, possibly overwriting keepAuto + shift @args; + return "Not enough parameters after 'desiredTemperature manual'" if(@args == 0); - if($args[0] eq "boost") { - return "To many parameters: desiredTemperature boost" if(@args > 1); - $temperature = 0; - $ctrlmode = 3; - #TODO: auto mode with temperature is also possible + } elsif(AttrVal($hash->{NAME},"keepAuto","0") ne "0" + && MAX_ReadingsVal($hash,"mode") eq "auto") { + #User did not ask for any mode explicitly, but has keepAuto + Log3 $hash, 5, "MAX_Set: staying in auto mode"; + $ctrlmode = 0; #auto + } - } elsif($args[0] eq "eco") { + if($args[0] eq "eco") { $temperature = MAX_ReadingsVal($hash,"ecoTemperature"); } elsif($args[0] eq "comfort") { $temperature = MAX_ReadingsVal($hash,"comfortTemperature"); @@ -305,8 +311,8 @@ MAX_Set($@) if(@args > 1) { #@args == 3 and $args[1] == "until" return "Second parameter must be 'until'" if($args[1] ne "until"); - return "Not enough parameters: desiredTemperature [until