bug fixing around RT burst mode

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@4066 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-10-18 17:46:59 +00:00
parent e4d029cf61
commit 24382d14ab

View File

@ -473,11 +473,13 @@ sub CUL_HM_Attr(@) {#################################
delete $hash->{helper}{mId}; delete $hash->{helper}{mId};
} }
elsif($attrName eq "burstAccess"){ elsif($attrName eq "burstAccess"){
if ($cmd eq "set"){
return "use burstAccess only for device" if (!$hash->{helper}{role}{dev}); return "use burstAccess only for device" if (!$hash->{helper}{role}{dev});
return "burstAccess only for conditional Burst devices" if ($culHmModel{$hash->{helper}{mId}}{rxt} !~ m /f/);
return "$attrVal not a valid option for burstAccess" if ($attrVal !~ m/^[01]/); return "$attrVal not a valid option for burstAccess" if ($attrVal !~ m/^[01]/);
if ($attrVal =~ m/^0/){$hash->{protCondBurst} = "forced_off";} if ($attrVal =~ m/^0/){$hash->{protCondBurst} = "forced_off";}
else {$hash->{protCondBurst} = "unknown";} else {$hash->{protCondBurst} = "unknown";}
}
else{ $hash->{protCondBurst} = "forced_off";}
delete $hash->{helper}{rxType}; # needs new calculation delete $hash->{helper}{rxType}; # needs new calculation
} }
CUL_HM_queueUpdtCfg($name) if ($updtReq); CUL_HM_queueUpdtCfg($name) if ($updtReq);
@ -1546,8 +1548,6 @@ sub CUL_HM_parseCommon(@){#####################################################
if ($shash->{helper}{prt}{rspWait}{wakeup}){ if ($shash->{helper}{prt}{rspWait}{wakeup}){
if ($shash->{helper}{prt}{rspWait}{mNo} eq $mNo && if ($shash->{helper}{prt}{rspWait}{mNo} eq $mNo &&
$subType eq "00" ){ $subType eq "00" ){
my $params;
$params .= "$_:$shash->{helper}{prt}{rspWaitSec}{$_}" foreach (keys%{$shash->{helper}{prt}{rspWaitSec}});
if ($shash->{helper}{prt}{awake} && $shash->{helper}{prt}{awake}==4){#re-wakeup if ($shash->{helper}{prt}{awake} && $shash->{helper}{prt}{awake}==4){#re-wakeup
delete $shash->{helper}{prt}{rspWait};#clear wakeup values delete $shash->{helper}{prt}{rspWait};#clear wakeup values
$shash->{helper}{prt}{rspWait}{$_} = $shash->{helper}{prt}{rspWaitSec}{$_} $shash->{helper}{prt}{rspWait}{$_} = $shash->{helper}{prt}{rspWaitSec}{$_}
@ -1557,11 +1557,11 @@ sub CUL_HM_parseCommon(@){#####################################################
#General set timer #General set timer
return "done" return "done"
} }
$shash->{protCondBurst} = "on"; $shash->{protCondBurst} = "on" if ($shash->{protCondBurst} !~ m/forced/);
$shash->{helper}{prt}{awake}=2;#awake $shash->{helper}{prt}{awake}=2;#awake
} }
else{ else{
$shash->{protCondBurst} = "off"; $shash->{protCondBurst} = "off" if ($shash->{protCondBurst} !~ m/forced/);
$shash->{helper}{prt}{awake}=3;#reject $shash->{helper}{prt}{awake}=3;#reject
return "done"; return "done";
} }
@ -3119,7 +3119,7 @@ sub CUL_HM_Set($@) {
$devHash->{cmdStack} && $devHash->{cmdStack} &&
$devHash->{helper}{prt}{sProc} != 1 # not pocessing $devHash->{helper}{prt}{sProc} != 1 # not pocessing
){ ){
$hash->{helper}{prt}{wakeup}=1;# start wakeup $hash->{helper}{prt}{wakeup}=1;# start auto-wakeup
CUL_HM_SndCmd($devHash,"++B112$id$dst"); CUL_HM_SndCmd($devHash,"++B112$id$dst");
} }
return ("",1);# no not generate trigger outof command return ("",1);# no not generate trigger outof command
@ -3318,7 +3318,6 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register
($list,$peerN) = ($1,$2) if($nrn =~ m/RegL_(..):(.*)/); ($list,$peerN) = ($1,$2) if($nrn =~ m/RegL_(..):(.*)/);
if ($peerN){($peerAddr,$peerChn) = unpack('A6A2', CUL_HM_name2Id($peerN,$hash));} if ($peerN){($peerAddr,$peerChn) = unpack('A6A2', CUL_HM_name2Id($peerN,$hash));}
else {($peerAddr,$peerChn) = ('000000','00');} else {($peerAddr,$peerChn) = ('000000','00');}
CUL_HM_updtRegDisp($hash,$list,$peerAddr.$peerChn); CUL_HM_updtRegDisp($hash,$list,$peerAddr.$peerChn);
CUL_HM_PushCmdStack($hash, "++".$flag.'01'.$src.$dst.$chn.'05'. CUL_HM_PushCmdStack($hash, "++".$flag.'01'.$src.$dst.$chn.'05'.
$peerAddr.$peerChn.$list); $peerAddr.$peerChn.$list);
@ -3597,7 +3596,7 @@ sub CUL_HM_respPendTout($) {
return if(!$pHash->{rspWait}{reSent}); # Double timer? return if(!$pHash->{rspWait}{reSent}); # Double timer?
if ($pHash->{rspWait}{wakeup}){ if ($pHash->{rspWait}{wakeup}){
CUL_HM_respPendRm($hash);# do not count problems with wakeup try, just wait CUL_HM_respPendRm($hash);# do not count problems with wakeup try, just wait
$hash->{protCondBurst} = "off"; $hash->{protCondBurst} = "off" if ($hash->{protCondBurst} !~ m/forced/);;
$pHash->{wakeup} = 0;# finished $pHash->{wakeup} = 0;# finished
$pHash->{awake} = 0;# set to asleep $pHash->{awake} = 0;# set to asleep
CUL_HM_protState($hash,"CMDs_pending"); CUL_HM_protState($hash,"CMDs_pending");
@ -3634,7 +3633,6 @@ sub CUL_HM_respPendTout($) {
Log GetLogLevel($name,4),"CUL_HM_Resend: ".$name. " nr ".$pHash->{rspWait}{reSent}; Log GetLogLevel($name,4),"CUL_HM_Resend: ".$name. " nr ".$pHash->{rspWait}{reSent};
InternalTimer(gettimeofday()+rand(20)/10+4,"CUL_HM_respPendTout","respPend:$hash->{DEF}", 0); InternalTimer(gettimeofday()+rand(20)/10+4,"CUL_HM_respPendTout","respPend:$hash->{DEF}", 0);
} }
# }
} }
} }
} }
@ -4370,9 +4368,8 @@ sub CUL_HM_RTtempReadings($) {# parse RT temperature readings
"R-winOpnTemp:" .ReadingsVal($name,"R-winOpnTemp" ,"unknown"), "R-winOpnTemp:" .ReadingsVal($name,"R-winOpnTemp" ,"unknown"),
"R-winOpnPeriod:".ReadingsVal($name,"R-winOpnPeriod","unknown"), "R-winOpnPeriod:".ReadingsVal($name,"R-winOpnPeriod","unknown"),
"R-winOpnBoost:" .ReadingsVal($name,"R-winOpnBoost" ,"unknown"), "R-winOpnBoost:" .ReadingsVal($name,"R-winOpnBoost" ,"unknown"),
"R-winOpnMode:" .ReadingsVal($name,"R-winOpnMode:" ,"unknown"), "R-winOpnMode:" .ReadingsVal($name,"R-winOpnMode" ,"unknown"),
"R-winOpnBoost:" .ReadingsVal($name,"R-winOpnBoost:","unknown") "R-winOpnDetFall:".ReadingsVal($name,"R-winOpnDetFall" ,"unknown"),);
);
return $setting; return $setting;
} }
sub CUL_HM_repReadings($) {# for repeater in:hash, out: string with peers sub CUL_HM_repReadings($) {# for repeater in:hash, out: string with peers