MAX: Setting eco, comfort, min, max for WallThermostat (by Jürgen I.)

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@4383 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
mgehre 2013-12-14 22:15:11 +00:00
parent a211b7b3a1
commit 03039b558a

View File

@ -2,8 +2,6 @@
# $Id$ # $Id$
# Written by Matthias Gehre, M.Gehre@gmx.de, 2012-2013 # Written by Matthias Gehre, M.Gehre@gmx.de, 2012-2013
# #
# Dutycycle included by J. Isleib 2013-09-26
#
package main; package main;
use strict; use strict;
@ -369,8 +367,13 @@ MAX_Set($@)
my $windowOpenTemp = int($h{windowOpenTemperature}*2); my $windowOpenTemp = int($h{windowOpenTemperature}*2);
my $windowOpenTime = int($h{windowOpenDuration}/5); my $windowOpenTime = int($h{windowOpenDuration}/5);
my $groupid = MAX_ReadingsVal($hash,"groupid");
my $payload = sprintf("%02x%02x%02x%02x%02x%02x%02x",$comfort,$eco,$max,$min,$offset,$windowOpenTemp,$windowOpenTime); my $payload = sprintf("%02x%02x%02x%02x%02x%02x%02x",$comfort,$eco,$max,$min,$offset,$windowOpenTemp,$windowOpenTime);
return ($hash->{IODev}{Send})->($hash->{IODev},"ConfigTemperatures",$hash->{addr},$payload, callbackParam => "$setting,$args[0]") if($setting eq "measurementOffset") {
return ($hash->{IODev}{Send})->($hash->{IODev},"ConfigTemperatures",$hash->{addr},$payload, groupId => "00", flags => "00", callbackParam => "$setting,$args[0]");
} else {
return ($hash->{IODev}{Send})->($hash->{IODev},"ConfigTemperatures",$hash->{addr},$payload, groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "00" ), callbackParam => "$setting,$args[0]");
}
} elsif($setting eq "displayActualTemperature" and $hash->{type} eq "WallMountedThermostat") { } elsif($setting eq "displayActualTemperature" and $hash->{type} eq "WallMountedThermostat") {
return "Invalid arg" if($args[0] ne "0" and $args[0] ne "1"); return "Invalid arg" if($args[0] ne "0" and $args[0] ne "1");
@ -526,14 +529,24 @@ MAX_Set($@)
$assoclist = join(",", map { defined($_->{type}) && $_->{type} =~ /HeatingThermostat.*/ ? $_->{NAME} : () } values %{$modules{MAX}{defptr}}); $assoclist = join(",", map { defined($_->{type}) && $_->{type} =~ /HeatingThermostat.*/ ? $_->{NAME} : () } values %{$modules{MAX}{defptr}});
} }
my $templistOffset = join(",",map { MAX_SerializeTemperature(($_-7)/2) } (0..14));
my $boostDurVal = join(",", values(%boost_durations));
if($hash->{type} =~ /HeatingThermostat.*/) { if($hash->{type} =~ /HeatingThermostat.*/) {
#Create numbers from 4.5 to 30.5 my $shash;
my $templistOffset = join(",",map { MAX_SerializeTemperature(($_-7)/2) } (0..14)); my $wallthermo = 0;
my $boostDurVal = join(",", values(%boost_durations)); # check if Wallthermo is in same group
return "$ret associate:$assoclist deassociate:$assoclist desiredTemperature:eco,comfort,boost,auto,$templist ecoTemperature:$templist comfortTemperature:$templist measurementOffset:$templistOffset maximumTemperature:$templist minimumTemperature:$templist windowOpenTemperature:$templist windowOpenDuration boostDuration:$boostDurVal boostValveposition decalcification maxValveSetting valveOffset"; foreach my $addr ( keys %{$modules{MAX}{defptr}} ) {
$shash = $modules{MAX}{defptr}{$addr};
$wallthermo = 1 if((MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid")) and $shash->{type} eq "WallMountedThermostat");
}
if ($wallthermo eq 1) {
return "$ret associate:$assoclist deassociate:$assoclist desiredTemperature:eco,comfort,boost,auto,$templist measurementOffset:$templistOffset windowOpenDuration boostDuration:$boostDurVal boostValveposition decalcification maxValveSetting valveOffset";
} else {
return "$ret associate:$assoclist deassociate:$assoclist desiredTemperature:eco,comfort,boost,auto,$templist ecoTemperature:$templist comfortTemperature:$templist measurementOffset:$templistOffset maximumTemperature:$templist minimumTemperature:$templist windowOpenTemperature:$templist windowOpenDuration boostDuration:$boostDurVal boostValveposition decalcification maxValveSetting valveOffset";
}
} elsif($hash->{type} eq "WallMountedThermostat") { } elsif($hash->{type} eq "WallMountedThermostat") {
return "$ret associate:$assoclist deassociate:$assoclist displayActualTemperature:0,1 desiredTemperature:eco,comfort,boost,auto,$templist ecoTemperature:$templist comfortTemperature:$templist maximumTemperature:$templist"; return "$ret associate:$assoclist deassociate:$assoclist displayActualTemperature:0,1 desiredTemperature:eco,comfort,boost,auto,$templist ecoTemperature:$templist comfortTemperature:$templist maximumTemperature:$templist minimumTemperature:$templist measurementOffset:$templistOffset windowOpenTemperature:$templist boostDuration:$boostDurVal boostValveposition ";
} elsif($hash->{type} eq "ShutterContact") { } elsif($hash->{type} eq "ShutterContact") {
return "$ret associate:$assoclist deassociate:$assoclist"; return "$ret associate:$assoclist deassociate:$assoclist";
} else { } else {