add RT part 2

git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3532 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876
2013-07-29 15:54:13 +00:00
parent 9e4d1f3300
commit faf5bdc96e
2 changed files with 49 additions and 2 deletions

View File

@@ -2448,6 +2448,53 @@ sub CUL_HM_Set($@) {
}
CUL_HM_PushCmdStack($hash,$msg) if ($msg);
}
elsif($cmd eq "mode") { ####################################################
#"[auto|manu|party|boost|comfort|lower] ... <temp> <startTime> <endTime>"}#General only for one channel??
return "select one of auto,manu,party,boost,comfort,lower"
if ($a[2] !~ m/^(auto|manu|party|boost|comfort|lower)$/);
my ($temp,$party);
if ($a[2] =~ m/^(auto|boost|comfort|lower)$/){
return "no additional params for $a[2]" if ($a[3]);
}
if($a[2] eq "manu"){
return "temperatur for manu 4.5 to 30.5 C"
if (!$a[3] || $a[3] < 4.5 || $a[3] > 30.5);
$temp = $a[3]*2;
}
elsif($a[2] eq "party"){
return "temperatur for manu 5 to 30 C"
if (!$a[3] || $a[3] < 5 || $a[3] > 30);
$temp = $a[3]*2;
# party format 03.8.2013 11:30 5.8.2013 12:00
my ($sd,$sm,$sy) = split('.',$a[4]);
return "wrong start day $sd" if ($sd < 0 || $sd > 31);
return "wrong start month $sm" if ($sm < 0 || $sm > 12);
return "wrong start year $sy" if ($sy < 0 || $sy > 99);
my ($sh,$smin) = split(':',$a[5]);
return "wrong start hour $sh" if ($sh < 0 || $sh > 23);
return "wrong start minute $smin, ony 00 or 30" if ($smin != 0 && $smin != 30);
$sh = $sh * 2 + $smin/30;
my ($ed,$em,$ey) = split('.',$a[6]);
return "wrong end day $ed" if ($ed < 0 || $ed > 31);
return "wrong end month $em" if ($em < 0 || $em > 12);
return "wrong end year $ey" if ($ey < 0 || $ey > 99);
my ($eh,$emin) = split(':',$a[7]);
return "wrong end hour $eh" if ($eh < 0 || $eh > 23);
return "wrong end minute $emin, ony 00 or 30" if ($emin != 0 && $emin != 30);
$eh = $eh * 2 + $emin/30;
$party = sprintf("%02X%02X%02X%02X%02X%02X%02X",
$sh,$sd,$sy,$eh,$ed,$ey,($sm*16+$em));
}
my %mCmd = (auto=>0,manu=>1,party=>2,boost=>3,comfort=>4,lower=>5);
readingsSingleUpdate($hash,"modeSet","set_".$a[2],1);
my $msg = '8'.($mCmd{$a[2]}).$chn;
$msg .= sprintf("%02X",$temp) if ($temp);
$msg .= $party if ($party);
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.$msg);
}
elsif($cmd eq "desired-temp") { #############################################
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'0202'.
CUL_HM_convTemp($a[2]));
@@ -2678,7 +2725,7 @@ sub CUL_HM_Set($@) {
return ("",1) if ($target && $target eq "remote");#Nothing to transmit for actor
$devHash = $peerHash; # Exchange the hash, as the switch is always alive.
}
readingsSingleUpdate($hash,"state",$state,1) if($state);
$rxType = CUL_HM_getRxType($devHash);

View File

@@ -184,7 +184,7 @@ my %culHmModel=(
"0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches
"0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, #
"0094" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, #
"0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'' ,rxt=>'c:w' ,lst=>'3:3p.6p,7:0' ,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimRT_r:5:5,rCtrl:6:6"}, #
"0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'' ,rxt=>'c:w' ,lst=>'3:3p.6p,7:0.4',chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimRT_r:5:5,rCtrl:6:6"}, #
"0096" => {name=>"WDF-solar" ,st=>'blindActuatorSol' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"win:1:1,blind_2:3",}, #
"009B" => {name=>"Schueco_263-xxx" ,st=>'tipTronic' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1:1.2,3:1p.3p',chn=>"act:1:1,sen:2:2,sec:3:3",}, #
"009F" => {name=>"HM-Sen-Wa-Od" ,st=>'sensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, #capacitive filling level sensor