From faf5bdc96e935cc910abf01889c00272b940820a Mon Sep 17 00:00:00 2001 From: martinp876 Date: Mon, 29 Jul 2013 15:54:13 +0000 Subject: [PATCH] add RT part 2 git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3532 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 49 +++++++++++++++++++++++++++++++++++++++++- fhem/FHEM/HMConfig.pm | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 58cf9732c..b995ab339 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -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] ... "}#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); diff --git a/fhem/FHEM/HMConfig.pm b/fhem/FHEM/HMConfig.pm index ddaf98f59..5e5433329 100644 --- a/fhem/FHEM/HMConfig.pm +++ b/fhem/FHEM/HMConfig.pm @@ -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