2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-20 13:26:02 +00:00

CUL_HM: imlement dis-wm55

git-svn-id: https://svn.fhem.de/fhem/trunk@7695 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2015-01-24 17:00:03 +00:00
parent 7fdd194895
commit 291eaf8746
3 changed files with 19 additions and 10 deletions

View File

@ -607,6 +607,9 @@ sub HMLAN_Parse($$) {##########################################################
$CULinfo = "AESKey-".$mFld[3]; $CULinfo = "AESKey-".$mFld[3];
} }
# config message: reset timer handling
$hash->{helper}{ids}{$src}{flg} = 0 if ($type eq "00");
if ($stat){# message with status information if ($stat){# message with status information
HMLAN_condUpdate($hash,$HMcnd)if ($hash->{helper}{q}{HMcndN} != $HMcnd); HMLAN_condUpdate($hash,$HMcnd)if ($hash->{helper}{q}{HMcndN} != $HMcnd);
my $myId = $attr{$name}{hmId}; my $myId = $attr{$name}{hmId};

View File

@ -681,8 +681,6 @@ sub CUL_HM_Attr(@) {#################################
if ($cmd eq "set"){ if ($cmd eq "set"){
return "$attrName not usable for channels" if(!$hash->{helper}{role}{dev});#only for device return "$attrName not usable for channels" if(!$hash->{helper}{role}{dev});#only for device
return "value $attrVal ignored, must be an integer" if ($attrVal !~ m/^(\d+)$/); return "value $attrVal ignored, must be an integer" if ($attrVal !~ m/^(\d+)$/);
return "$attrName not supported for model" if(!(CUL_HM_getRxType($hash) & 0xEB)
&& $attrVal != 1);# no repeat for confign only devices
} }
return; return;
} }
@ -2508,7 +2506,15 @@ sub CUL_HM_parseCommon(@){#####################################################
my $chnhash = $modules{CUL_HM}{defptr}{$src.$chn}; my $chnhash = $modules{CUL_HM}{defptr}{$src.$chn};
$chnhash = $shash if (!$chnhash); $chnhash = $shash if (!$chnhash);
my $chnName = $chnhash->{NAME}; my $chnName = $chnhash->{NAME};
my (undef,@peers) = unpack 'A2(A8)*',$p; my @peers;
if($attr{$shash->{NAME}}{model} eq "HM-Dis-WM55"){
#how ugly - this device adds one byte at begin - remove it.
(undef,@peers) = unpack 'A4(A8)*',$p;
}
else{
(undef,@peers) = unpack 'A2(A8)*',$p;
}
$_ = '00000000' foreach (grep /^000000/,@peers);#correct bad term(6 chars) from rain sens) $_ = '00000000' foreach (grep /^000000/,@peers);#correct bad term(6 chars) from rain sens)
$chnhash->{helper}{peerIDsRaw}.= ",".join",",@peers; $chnhash->{helper}{peerIDsRaw}.= ",".join",",@peers;
@ -2964,7 +2970,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
if ($md =~ m/(HM-CC-TC|ROTO_ZEL-STG-RM-FWT)/ && $chn eq "02"){$addInfo = CUL_HM_TCtempReadings($hash)} if ($md =~ m/(HM-CC-TC|ROTO_ZEL-STG-RM-FWT)/ && $chn eq "02"){$addInfo = CUL_HM_TCtempReadings($hash)}
elsif ($md =~ m/HM-CC-RT-DN/ && $chn eq "04"){$addInfo = CUL_HM_TCITRTtempReadings($hash,$md,7)} elsif ($md =~ m/HM-CC-RT-DN/ && $chn eq "04"){$addInfo = CUL_HM_TCITRTtempReadings($hash,$md,7)}
elsif ($md =~ m/HM-TC-IT/ && $chn eq "02"){$addInfo = CUL_HM_TCITRTtempReadings($hash,$md,7,8,9)} elsif ($md =~ m/HM-TC-IT/ && $chn eq "02"){$addInfo = CUL_HM_TCITRTtempReadings($hash,$md,7,8,9)}
elsif ($md =~ m/^HM-PB-4DIS-WM/) {$addInfo = CUL_HM_4DisText($hash)} elsif ($md =~ m/(^HM-PB-4DIS-WM|HM-Dis-WM55)/){$addInfo = CUL_HM_4DisText($hash)}
elsif ($md eq "HM-Sys-sRP-Pl") {$addInfo = CUL_HM_repReadings($hash)} elsif ($md eq "HM-Sys-sRP-Pl") {$addInfo = CUL_HM_repReadings($hash)}
return $name." type:".$st." - \n". return $name." type:".$st." - \n".
@ -3632,7 +3638,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my (undef,undef,$duration,$ramp) = @a; #date prepared extention to entdate my (undef,undef,$duration,$ramp) = @a; #date prepared extention to entdate
if ($cmd eq "on-till"){ if ($cmd eq "on-till"){
# to be extended to handle end date as well # to be extended to handle end date as well
my ($eH,$eM,$eSec) = split(':',$duration); my ($eH,$eM,$eSec) = split(':',$duration.":00:00");
return "please enter time informat hh:mm:ss" if (!$eSec); return "please enter time informat hh:mm:ss" if (!$eSec);
$eSec += $eH*3600 + $eM*60; $eSec += $eH*3600 + $eM*60;
my @lt = localtime; my @lt = localtime;
@ -5369,8 +5375,8 @@ sub CUL_HM_respPendTout($) {
CUL_HM_eventP($hash,"IOdly"); CUL_HM_eventP($hash,"IOdly");
CUL_HM_ProcessCmdStack($hash) if($rxt & 0x03);#burst/all CUL_HM_ProcessCmdStack($hash) if($rxt & 0x03);#burst/all
} }
elsif ($pHash->{rspWait}{reSent} > AttrVal($name,"msgRepeat",3)#too many elsif ($pHash->{rspWait}{reSent} > AttrVal($name,"msgRepeat",($rxt & 0x9B)?3:0)#too many
||(!($rxt & 0x9B))){#config cannot retry ){#config cannot retry
my $pendCmd = "MISSING ACK"; my $pendCmd = "MISSING ACK";
if ($pHash->{rspWait}{Pending}){ if ($pHash->{rspWait}{Pending}){
@ -6138,7 +6144,7 @@ sub CUL_HM_updtRegDisp($$$) {
elsif ($md =~ m/HM-TC-IT-WM-W-EU/){#handle temperature readings elsif ($md =~ m/HM-TC-IT-WM-W-EU/){#handle temperature readings
CUL_HM_TCITRTtempReadings($hash,$md,$list) if ($list >= 7 && $chn eq "02"); CUL_HM_TCITRTtempReadings($hash,$md,$list) if ($list >= 7 && $chn eq "02");
} }
elsif ($md =~ m/^HM-PB-4DIS-WM/){#add text elsif ($md =~ m/(^HM-PB-4DIS-WM|HM-Dis-WM55)/){#add text
CUL_HM_4DisText($hash) if ($list == 1) ; CUL_HM_4DisText($hash) if ($list == 1) ;
} }
elsif ($st eq "repeater"){ elsif ($st eq "repeater"){
@ -6700,7 +6706,7 @@ sub CUL_HM_ActCheck($) {# perform supervision
} }
} }
elsif ($tSince gt $tLast){ #no message received in window elsif ($tSince gt $tLast){ #no message received in window
if ($actHash->{helper}{$devId}{start} lt $tLast){ if ($actHash->{helper}{$devId}{start} lt $tSince){
$cntDead++; $state = "dead"; $cntDead++; $state = "dead";
} }
else{ else{

View File

@ -273,7 +273,7 @@ my $K_actDetID = '000000'; # id of actionDetector
,"00D1" => {name=>"HM-LC-Bl1-SM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount) ,"00D1" => {name=>"HM-LC-Bl1-SM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
,"00D2" => {name=>"HM-LC-Bl1-FM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount) ,"00D2" => {name=>"HM-LC-Bl1-FM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} # radio-controlled blind actuator 1-channel (flush-mount)
#General ,"00D3" => {name=>"HM-Dis-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1' ,chn=>"Dis:1:10",} #General ,"00D3" => {name=>"HM-Dis-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1' ,chn=>"Dis:1:10",}
,"00D3" => {name=>"HM-Dis-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1' ,chn=>"Dis:1:10",} ,"00D3" => {name=>"HM-Dis-WM55" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,p' ,chn=>"Dis:1:10",}
,"00D7" => {name=>"HM-ES-PMSw1-Pl-DN-R1" ,st=>'powerMeter' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1:2.3.4.5.6,3:1p,4:3p.4p.5p.6p' ,"00D7" => {name=>"HM-ES-PMSw1-Pl-DN-R1" ,st=>'powerMeter' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1:2.3.4.5.6,3:1p,4:3p.4p.5p.6p'
,chn=>"Sw:1:1,Pwr:2:2,SenPwr:3:3,SenI:4:4,SenU:5:5,SenF:6:6"} ,chn=>"Sw:1:1,Pwr:2:2,SenPwr:3:3,SenI:4:4,SenU:5:5,SenF:6:6"}
,"00D8" => {name=>"HM-LC-Sw1-Pl-DN-R1" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",} ,"00D8" => {name=>"HM-LC-Sw1-Pl-DN-R1" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}