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